前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。
こちらの動画「80分で学ぶ!Pythonによる回帰分析の基本【Pythonデータサイエンス超入門】」を参考に「回帰分析の基本」の学習をしました。
ここから分からないことが飛躍的に増えるので一つずつ丁寧に進めていきます。
80分で学ぶ!Pythonによる回帰分析の基本【Pythonデータサイエンス超入門】 https://t.co/SPA7lc0M6C @YouTubeより
— よだか(夜鷹/yodaka) (@yodakablog) January 8, 2024
本記事を理解するデータサイエンスの学習についてはこちらの記事でまとめています。
【回帰分析】
散らばったデータから一定の法則を見つける方法。例えば、気温とアイスの売り上げの相関。目的変数と説明変数と切片。説明変数が一つの場合は「単回帰分析」。目的変数が複数ある場合は「重回帰分析」。一般的に目的変数には複数の説明変数が絡むため「重回帰分析」が多く用いられる。
準備
ダミー変数の作成。予めpandasを使って空のデータの空白を埋める処理をしておく。例えば「○(まる)or空白」などの変数に代入できないものなどは「1or2」などと編集しておくことで、使えるデータとして認識されるようになる。
出力されたデータから切片をむやみに取り除かないこと。切片の値が高いからといって不必要だとは限らない。基本的に切片は入れておく。切片を除いてuncenteredというメッセージが付随されたら注意。 Adjusted R-Squaredの値を見て、モデルの良さを確認する。一般的にこの値が高いほうが良いとされる。
formulaを使うと良い。操作が分かりやすくてラク。交互作用(説明変数の掛け合わせ)や対数変換(log)にも対応しやすい。+,:,*の使い分けがポイント。
ラッソ回帰(L1正則化)
変数が膨大な時に使う。変数選択の自動化ができる。 alphaの値を大きくすると基準が緩まる。最適なalphaの求め方がある。
リッジ回帰(L2正則化)
多重共線性(マルチコ)の問題への対処。説明変数間で強い相関を持つペアがあると良くない(雨と湿度とか) ウェイト(wtを0にする)
Elastic Net
ラッソとリッジの良いとこどり。wtの値を0に寄せるとリッジ、1に寄せるとラッソ。最適なパラメータは最終的に人間が決めることになる。
【ここまでの雑感】
線形回帰が基本。この部分を徹底的に理解することが重要。一目見ただけでは分からないことが増えてきている。分からないことから逃げない。
【ロジスティック回帰分析】
曲線を使った回帰分析。0or1のデータを扱う場合に有効。ここでもFormuraAPIを使った方法が便利。
【ポアソン回帰分析】
「1年あたりの大型台風の回数とその時期」や「訪問回数と制約数の関係」などのように回数が少ないもの。ポアソン分布の考え方が土台(回数が少なくてある程度の傾向が見えているもの)データによってどんな分析手法が適切なのかが異なる。それを人が決める。
【宿題】
①線形回帰分析の理解を深めるために別の角度(読書・実際のコーディング・実際のデータで分析)から学習する。
②FormuraAPIを使って自前のデータでアウトプットする。
【雑感】
一気に学習しないと理解につながらない。今回は間を開けて3日間かけてゆるゆると学習したので、浅い理解にとどまっている。 データ分析の方法を選ぶのは人間だが、分析手法の選択過程自体を機械学習に落とし込めば、作業工程をもっと簡略化できる。 どこまで機械に任せることができるか。
機械に任せたいのなら「機械にやらせていること」を深く理解することが重要。やり方をきちんと理解すれば、再現性を担保できる。その上で機械に任せる。 過程の言語化は再現性の発掘につながる。 言語化は私の得意分野。今後も力を入れて学習を進めていきたい。まとまった時間で一気に学習を進める。
まとめ
これらの分析手法がBot開発においてどのように使用されるのか理解することが必要です。
今後は、自前のデータから線形回帰分析を行うことや具体的なユースケースを一つずつインプットすることで、回帰分析の手法を自分なりに理解していくことを目標にします。
結局、自分で使ってみることが理解を深めるいちばんの近道です。
このまま学習と実践を続けていきます。