前回の続きです。
https://qiita.com/iaintsorrykamio/items/8f378c194e58b977a4ef
今回もひたすら自分用のメモ書きが中心になりそうです。
Step2. 機械学習とデータ分析入門
7. 単回帰分析と重回帰分析
- 単回帰分析:一つの入力変数から一つの出力変数を予測する。
-
重回帰分析:複数の入力変数から出力変数を予測する。
つまり、どちらも教師あり学習に含まれるようです。なので入力変数xと目的変数tをペアで準備しておく必要があります。
単回帰分析
- 目標:1つの入力変数xから1つの出力変数yを予測する。(y=wx+t)
- 前処理:データセットについて中心化(平均値が0,0になるように)する。(y'=wx')
- 目的関数の決定:今回の例では二乗和誤差を用いる。この目的関数の値が最小となる点を求める=目的関数をwで微分した値が0になるような最適なwを求める。
重回帰分析は、この単回帰分析の入力変数が一つではなく複数の入力変数を扱うことになる。(y=wx+tが、y=w1x1 + w2x2 + … + wMxM + bとなる)
線形代数の知識を使って、ガンガン計算していく(詳細は省略)。
8. NumPy入門
重回帰分析のアルゴリズムを実際にNumPyで実装していきます。その上で、特に重要になってくるのがブロードキャストの仕組みだと思います。
- ブロードキャスト:異なる形の配列同士で算術計算を行うときに、自動的に小さい配列を大きい配列に合わせる操作。そのとき、「2つの配列の各次元が同じ大きさになっているか、どちらかが1であること」が必要。
9. scikit-learn入門
機械学習における基本的な流れである、「データセットの準備」→「モデルの決定」→「目的関数の決定」→「最適化手法の選択」→「モデルを訓練」までを実際にやっていきます。
以下メモ。
- データセットは準備されているが、訓練用とテスト用にデータを分ける必要がある。
- 重回帰分析は、LinearRegressionクラスを利用して行う。
- モデルの訓練が完了したら、訓練用データセットとテスト用データセットの決定係数を比較して、精度の検証を行う。この差が大きい=過学習してしまったということになる。→そこで各入力変数の値の平均が0、分散が1となるようにスケーリング(標準化)を行う。
10. CuPy入門
GPUでNumPyと同じような計算ができるライブラリの紹介です。速いということがわかれば十分(?)
11. Pandas入門
csvファイルを読み込んでデータを整理したり操作するパッケージ、Pandasについて基本的な利用法を学びます。
12. Matplotlib入門
グラフ描画を行うMatplotlibの基本的な使い方を学びます。
まとめ
後半の方はわざわざ記事にする必要もない気がしてきました・・・。まぁ入門が中心なので、このチュートリアルに沿ってひたすらコードを実行すればいいので楽だし、雰囲気をつかむ分にはわかりやすいかなと思いました。(ただすぐ忘れますね)