Bot

仮想通貨botの開発記録#44(2024/1/11)「データサイエンスの学習③回帰分析の基本」

前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。

こちらの動画「80分で学ぶ!Pythonによる回帰分析の基本【Pythonデータサイエンス超入門】」を参考に「回帰分析の基本」の学習をしました。

本記事を理解するデータサイエンスの学習についてはこちらの記事でまとめています。

【回帰分析】

散らばったデータから一定の法則を見つける方法。例えば、気温とアイスの売り上げの相関。目的変数と説明変数と切片。説明変数が一つの場合は「単回帰分析」。目的変数が複数ある場合は「重回帰分析」。一般的に目的変数には複数の説明変数が絡むため「重回帰分析」が多く用いられる。

準備

ダミー変数の作成。予め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開発においてどのように使用されるのか理解することが必要です。

今後は、自前のデータから線形回帰分析を行うことや具体的なユースケースを一つずつインプットすることで、回帰分析の手法を自分なりに理解していくことを目標にします。

Yodaka

結局、自分で使ってみることが理解を深めるいちばんの近道です。

このまま学習と実践を続けていきます。

-Bot