ラビットチャレンジレポート:機械学習前半
回帰モデル
パラメータ:
- 線形結合(入力とパラメータの内積)
-
入力と未知のパラメータの各要素を掛け算し足し合わせたもの
-
入力ベクトルとの線形結合に加え、切片も足し合わせる
-
線形結合:
- 説明変数が1次元の場合
目的変数 、切片 、回帰係数 、説明変数 、及び誤差 を用いて下記のように表現できる。
行列を用いて一般化すると下記のようになる。
- データの分割と汎化性能測定
-
モデルの汎化性能を評価するため、学習用データと検証用データに分割し、学習用データで学習したモデルを検証用データで評価する。
-
- 最小二乗法
線形回帰モデルのパラメータは、最小二乗法で推定する。
-
- 平均二乗誤差(残差平方和)
データとモデル出力の二乗誤差の和
-
- 最小二乗法
学習データの平均二乗誤差を最小とするパラメータを探索する
の推定値は、下記のようにあらわせる。
=0
を に関して微分したものが0となるの点を求める。
それぞれ行列を用いて、下記のようにあらわせる
回帰係数
予測値
-
ハンズオン:ボストンの住宅データセット
ボストンの住宅データセットを用い、部屋数4、犯罪率0.3の物件の価格を予測する。
環境設定
from sklearn.datasets import load_boston from sklearn.linear_model import LinearRegression import pandas as pd import numpy as np boston = load_boston() print(boston.feature_names)
['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
'B' 'LSTAT']
学習データをDataFrame形式にし、ターゲットデータを追加
df=pd.DataFrame(data=boston.data,columns=boston.feature_names)
df["PRICE"]=np.array(boston.target)
-
単回帰モデル
学習データとしては、部屋数(RM)を用い、ターゲットを価格としてモデル学習をする。
data=df.loc[:,'RM'].values target=df.loc[:,'PRICE'].values model=LinearRegression() model.fit(data.reshape(-1,1),target.reshape(-1,1))
部屋数4の物件価格の予測
model.predict([[4]])
array(1.73781515)
1737.8ドルと予想される。
-
重回帰(2変数)モデル
部屋数(RM)と犯罪率(CRIM)を学習データとしてモデルを学習する。
data2=df.loc[:,['RM','CRIM']].values model2=LinearRegression() model2.fit(data2,target)
部屋数4、犯罪率0.3の物件価格の予測
model2.predict([[4,0.3]])
array([4.24007956])
4240ドルと予測された。
このときの回帰係数と切片は、下記のように予測される。
print(model2.coef_,model2.intercept_)
[ 8.39106825 -0.26491325] -29.24471945192995
回帰係数は、,
切片