覚え書きブログ

Pythonによる機械学習10(1/4)

Pythonによる機械学習10(1/4)の目次】

回帰問題とは

f:id:hirotaka_hachiya:20171206205253p:plain
f:id:hirotaka_hachiya:20171206220235p:plain

線形回帰問題の定式化

f:id:hirotaka_hachiya:20171206205404p:plain
f:id:hirotaka_hachiya:20171206220311p:plain

最小二乗法によるモデルパラメータの最適化

f:id:hirotaka_hachiya:20171206220250p:plain
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の場合】
直線上に学習と評価データが散布しているのがわかります。
f:id:hirotaka_hachiya:20171212123922p:plain

【入力次元が2の場合】
平面上に学習と評価データが散布しているのがわかります。
f:id:hirotaka_hachiya:20171207005644p:plain

学習データの構造

regressionData.artificialにより生成される学習データXとyは、以下のような行列とベクトルになっています。
f:id:hirotaka_hachiya:20171206205559p:plain

演習1

regressionData.artificialクラスにより取得したxTrain(1次元および2次元)とyTrainを入力し、最小二乗法により最適化したモデルパラメータw′を返す関数trainを実装してみましょう。
入力ベクトルxTrainが2次元以上に対応できるように実装してください。
実装したコードおよび最適化したw'(xTrainが1次元、2次元の場合両方)の値を、次回の本読みゼミ前までにメールに添付して提出してください。

Pythonによる機械学習10(2/4) >>