参考書
本ブログの内容の詳細は、「機械学習スタートアップシリーズ ゼロからつくるPython機械学習プログラミング入門」に掲載されています。
機械学習に必要な数学の復習から、機械学習のアルゴリズムの導出およびPythonの基本ライブラリのみを用いた実装方法まで学びたい方は、本書籍をご活用ください。
bookclub.kodansha.co.jp
回帰問題とは
線形回帰問題の定式化
最小二乗法によるモデルパラメータの最適化
Matrix cookbook: https://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf
線形回帰モデルのデータの準備
intelligentSystemTrainingフォルダにあるregressionData.pyを用いて、線形回帰の演習用のデータを取得します。
※intelligentSystemTrainigの開発環境が整っていない方は、以下を参照し設定してください。
hirotaka-hachiya.hatenablog.com
それでは、インタラクティブモードでpythonを起動し、regressionData.pyを用いて、学習用と評価用のデータを取得しましょう。
> python >>> import regressionData as rg # regressionDataクラスの初期化 # regressionData(学習データ数, 評価データ数, データ種類) # 入力次元が1の場合のデーター生成 >>> myData1 = rg.artificial(200,100, dataType="1D") # 学習入力次元が2の場合のデーター生成 >>> myData2 = rg.artificial(200,100, dataType="2D") # 学習入力データXのサイズ(入力次元 x データ数の行列)を確認 >>> myData1.xTrain.shape (200,) >>> myData1.xTrain[:5] array([ 3.25471789, 2.58955853, 1.7061375 , -1.25427725, 4.44286473]) >>> myData2.xTrain.shape (2, 200) >>> myData2.xTrain[:,:5] array([[ 3.01296899, 3.71116307, 2.32638728, 3.12658001, 0.82111261], [ 4.20789068, 5.4927975 , 3.27581154, 7.54884676, 7.96733005]]) # 学習出力データyのサイズ確認(データ数次元のベクトル) >>> myData1.yTrain.shape (200,) >>> myData2.yTrain.shape (200,) # データの可視化 >>> myData1.plot() >>> myData2.plot()
【入力次元が1の場合】
直線上に学習と評価データが散布しているのがわかります。
【入力次元が2の場合】
平面上に学習と評価データが散布しているのがわかります。
学習データの構造
regressionData.artificialにより生成される学習データXとyは、以下のような行列とベクトルになっています。
演習1
regressionData.artificialクラスにより取得したxTrain(1次元および2次元)とyTrainを入力し、最小二乗法により最適化したモデルパラメータw′を返す関数trainを実装してみましょう。
入力ベクトルxTrainが2次元以上に対応できるように実装してください。
実装したコードおよび最適化したw'(xTrainが1次元、2次元の場合両方)の値を、次回の本読みゼミ前までにメールに添付して提出してください。