機械学習
1.線形回帰モデル
✦学習種類:教師あり学習,タスク:予測
✦そもそも回帰とは?→ある入力から出力を予測
✦特に、入力を説明変数(ベクトル),出力を目的変数(スカラー)と呼ぶ
✦線形とは?→直線(y=ax+b):予測したyにはハット(^)をつける
✦ここで、wはパラメータと呼び、未知の値→これを求めるのが目的
✦どうやって求める?→最小二乗法で求める!!
✦x,yは固定値なのでwを変えるしかない
̂
y = wT
x + w0 =
m
∑
j=1
wmxm + w0
MSE =
1
n
n
∑
i=1
( ̂
y − y)
2
→ ̂
w = arg min MSE ̂
w = (XT
X)−1
XT
y
1.線形回帰モデル
✦特徴
✦外れ値の影響を受けやすい
✦訓練データ少ないと学習不足、多いと過学習が起きやすい
✦説明変数間(x1,x2など)に相関があると、良い推定ができないことがある
2.非線形回帰モデル
✦学習種類:教師あり学習,タスク:予測
✦線形構造では表現できないモデルに対して、行う
✦ここで、f()を基底関数と呼ぶ
✦基底関数の種類
✦多項式関数
✦ガウス型基底関数
✦スプライン関数/Bスプライン関数
✦未学習underfittingと過学習overfitting
✦未学習→表現力の高いモデルを使用する
✦過学習→学習データの数を増やす、不要な基底関数を削除、正則化法を利用
yi = f(xi) + ϵi → yi = w0 +
m
∑
j=1
wjϕj(xi) + ϵi
2.非線形回帰モデル
✦正則化法:正則化項(罰則項)をモデルに課す
✦正則化項の種類
✦無いと最小二乗推定量と一致
✦L1ノルム→ラッソ(Lasso)回帰:各重みの絶対値の総和
✦目的:いくつかのパラメータを0に推定
✦L2ノルム→リッジ(Ridge)回帰
✦目的:パラメータを0に近づける:各重みの二乗和
✦汎化性能:
3.ロジスティック回帰モデル
✦学習種類:教師あり学習,タスク:分類
✦分類の簡単なイメージ:m次元のベクトルから0or1を出力する
✦ロジスティック回帰は線形結合をシグモイド関数に入力する
✦出力はy=1となる確率
✦シグモイド関数:出力値は0∼1,aが大きいと0付近での勾配が大きくなる
✦ロジスティック回帰モデルのパラメータの求め方→尤度関数L(w)を最大に
✦
f(x) =
1
1 + exp(−ax)
f′(x) = af(x)(1 − f(x))
E(w) = − log L(w) = −
∑
(yi log pi + (1 − yi)log(1 − pi))
4.主成分分析
✦学習種類:教師なし学習,タスク:次元削減
✦多変量データを少数個の指標に圧縮→分散の大きい軸を新しい軸として捉え
る
✦新しい軸を主成分という
✦寄与率:第k主成分の分散の全分散に対する割合(全体に対する持つ情報量の
割合)
✦主成分分析の計算法
✦分散共分散行列を求める
✦分散共分散行列に対して、固有値,固有ベクトルを求める→ノルムは1になる
ことに注意
✦各主成分は直交する
✦主成分分析は元の次元に戻すことができる→再構成と呼び,そのときの誤差
を再構成誤差と呼ぶ(元が直線にプロットされているなら再構成誤差は0%)
5.アルゴリズム
✦学習種類:教師なし学習,タスク:クラスタリンク
✦k近傍:最近傍のデータをk個取ってきて,それらが最も多く所属するクラスに識別
→kの値が変われば,結果も変わる
• kが大きいほど,決定境界(クラスを識別する線)は滑らかになる
✦k-平均法(k-means):k個のクラスタに分類する
✦手順
• 各クラスタの中心の初期値を設定する(ここはユーザに依存する)
• 各データ点に対して,各クラスタ中心との距離を計算し,最も距離が近いクラスタ
を割り当てる
• 各クラスタの中心を計算
• 上記を繰り返し,中心を(収束するまで)更新
✦最初の中心を変えるとクラスタリングの結果も変わる→k-means++という手法もある
• 初期値が離れている→うまくクラスタリングできる
• 初期値が近い→うまくクラスタリングができない
6.サポートベクターマシン
✦学習種類:教師あり学習,タスク:分類
✦主な目的:2クラス分類→SVMでは,正負で判断する
• 正負の境目を分類境界(その関数を決定関数)と呼び,境界線から最も近
いデータまでの最短距離をマージンと呼ぶ→特にこのデータをサポートベ
クトルと呼ぶ
• SVMでは,このマージンを最大化する
✦ハードマージンとソフトマージン
• ハードマージン:マージン内にデータを含むことを許容しない
• 訓練データに関しては,完璧に分類できるが過学習の恐れあり
• ソフトマージン:マージン内にデータを許容する(誤分類を含む)
• 正則化係数Cを持つ→C= ならハードマージンと一致,C=0なら誤分類は
多くなるが過学習は防げる
6.サポートベクターマシン
✦SVMは線形分類が基本→非線形のデータ群に対してはどうするか?
✦カーネルを用いて,非線形へ拡張する
✦主なカーネル
• 多項式カーネル
• ガウスカーネル
• シグモイドカーネル
• RBFカーネル
• 2つのデータの距離が近いとカーネルの値は1に近くなる
• 2つのデータの距離が遠いとカーネルの値は0に近くなる
• 正規化線形カーネル
[xT
i xj + c]d
<latexit sha1_base64="A2oF+SUDQDwAb37wdOtLqTkInHg=">AAACm3ichVHLSsNAFD3G97vqRhChWBRBKLcqKK6KbkRc+KoKtS1JnNbRNAlJWqzFH/AHFFwpuBB/wZ0bf8BFP0FcKrhx4W0aES3WGyZz5tx77pzharYhXY+o0qQ0t7S2tXd0dnX39Pb1hwYGt12r4OgioVuG5exqqisMaYqEJz1D7NqOUPOaIXa0o6VqfqcoHFda5pZXskUqr+ZMmZW66jGVTh5nZHrrOHM4pafS+5lQhKLkR7gexAIQQRBrVugee9iHBR0F5CFgwmNsQIXLXxIxEGzmUigz5zCSfl7gFF2sLXCV4AqV2SP+5/iUDFiTz9Werq/W+RaDl8PKMMbpiW7plR7pjp7p489eZb9H1UuJd62mFXam/2x48/1fVZ53DwffqoaePWQx73uV7N32meor9Jq+eHL+urmwMV6eoGt6Yf9XVKEHfoFZfNNv1sXGZQM/X04czmZ5nfKoYr8HUw+2p6OxmSitz0bii8HQOjCCMUzyZOYQxzLWkOCbHFzgCtfKqLKkrCirtVKlKdAM4UcoiU+YOZf8</latexit>
exp( || xi xj||2
)
<latexit sha1_base64="iU6otIUqZQqOd8PApfrIdsFlN+E=">AAACqnicSyrIySwuMTC4ycjEzMLKxs7BycXNw8vHLyAoFFacX1qUnBqanJ+TXxSRlFicmpOZlxpaklmSkxpRUJSamJuUkxqelO0Mkg8vSy0qzszPCympLEiNzU1Mz8tMy0xOLAEKxQtIx6RWFGjoxqQn5uYm1tToVsRnAnFWTU2ckWa8gLKBngEYKGAyDKEMZQYoCMgX2MMQw5DCkM+QzFDKkMuQypDHUAJk5zAkMhQDYTSDIYMBQwFQLJahGihWBGRlguVTGWoZuIB6S4GqUoEqEoGi2UAyHciLhormAfkgM4vBupOBtuQAcRFQpwKDqsFVg5UGnw1OGKw2eGnwB6dZ1WAzQG6pBNJJEL2pBfH8XRLB3wnqygXSJQwZCF143VzCkMZgAXZrJtDtBWARkC+SIfrLqqZ/DrYKUq1WM1hk8Bro/oUGNw0OA32QV/YleWlgatBsPO6BuaQIKJsGxLXAqDJEjxhMRpiRnqGxnkGgibKDEzTSOBikGZQYNIAxY87gwODBEMAQCrSpkWE5wwaGjUw6TEFMkUzREKVMjFA9wgwogCkFAH6knVU=</latexit>
tanh(bxT
i xj + c)
<latexit sha1_base64="nEqy2b70xwATjWRm3pVhGD5FTMI=">AAACoXicSyrIySwuMTC4ycjEzMLKxs7BycXNw8vHLyAoFFacX1qUnBqanJ+TXxSRlFicmpOZlxpaklmSkxpRUJSamJuUkxqelO0Mkg8vSy0qzszPCympLEiNzU1Mz8tMy0xOLAEKxQsIxZQk5mVoJFXEZ8aFVMRnaSdrxgsoG+gZgIECJsMQylBmgIKAfIE9DDEMKQz5DMkMpQy5DKkMeQwlQHYOQyJDMRBGMxgyGDAUAMViGaqBYkVAViZYPpWhloELqLcUqCoVqCIRKJoNJNOBvGioaB6QDzKzGKw7GWhLDhAXAXUqMKgaXDVYafDZ4ITBaoOXBn9wmlUNNgPklkognQTRm1oQz98lEfydoK5cIF3CkIHQhdfNJQxpDBZgt2YC3V4AFgH5Ihmiv6xq+udgqyDVajWDRQavge5faHDT4DDQB3llX5KXBqYGzcbjHphLioCyaUBcC4wqQ/SIwWSEGekZGusZBJooOzhBI42DQZpBiUEDGDPmDA4MHgwBDKFAmyoY5jEsZ1jBpMzkyRTAFARRysQI1SPMgAKYogGG8ZmV</latexit>
exp(
||xi xj||2
2 2
)
<latexit sha1_base64="aGz8M0DKwreqU3IzVDah+1qGFf0=">AAACtXichVE9T9tQFD1xgQJtIdAFqUvUKIgORDehEogJlYWRBBIikdSyzXN44C/ZThTq5A+g7h2YQOpQdevabCz8gQ78BMRIpS4deuMYVYBKr/X8zjv3nvvO09U9SwYh0WVKeTIyOvZ0fGLy2fMXU9Ppmdlq4LZ8Q1QM13L9mq4FwpKOqIQytETN84Vm65bY0Q/XB/mdtvAD6Trb4ZEnGrbWdKQpDS1kSk3P10XHW1ism75mRN1uR5WLHfWg231f7EXFeiCbtsbwjZrOUp7iyDwEhQRkkcSmm+6jjj24MNCCDQEHIWMLGgL+dlEAwWOugYg5n5GM8wI9TLK2xVWCKzRmD/nf5NNuwjp8HvQMYrXBt1i8fFZmkKMf9IVu6IK+0hX9/mevKO4x8HLEuz7UCk+dPp7b+vVflc17iP2/qkc9hzCxEnuV7N2LmcErjKG+/eHTzdZqORfN0xlds/9TuqRzfoHT/ml8LonyySN+bp34nDV59XhUhfuDeQiqxXxhKU+lt9m1d8nQxvEKr7HAk1nGGjawiQrf9BHf8B19ZVlpKHuKOSxVUonmJe6E4v4BgRGiTg==</latexit>
xT
i xj
||xi||||xj||
<latexit sha1_base64="k3OuMKG/3lsXFpePSlqDUJ6QA3g=">AAACr3ichVE9T9tQFD2YftC0NIEuSF2iRiCm6Lqt1IoJwcJIQr4kPoztvsBLHNuynQiws3bgDzAwtVKHClaYurHwBzrwE6qOVGJh4NoxQoCg13q+5517z3vn6RquJf2A6GxIGX7y9NnzkReZl69GX2dzY+M13+l6pqiajuV4DUP3hSVtUQ1kYImG6wm9Y1iibrTn43q9JzxfOnYl2HbFakffsGVTmnrAlJbLrzQ93Qy3NLlW2dJa/TCKGEdRPs6tKOpruQIVKYn8faCmoIA0Fp3cL6zgCxyY6KIDARsBYws6fP6WoYLgMreKkDmPkUzqAn1kWNvlLsEdOrNt/m/wbjllbd7HZ/qJ2uRbLF4eK/OYpN/0k87plA7oD10+eFaYnBF72eZsDLTC1bK7E0sX/1V1OAfYvFE96jlAE58Tr5K9uwkTv8Ic6Hs7e+dLM+XJcIq+01/2/43O6IRfYPf+mT9Korz/iJ9rJx5Xm7ziUal3B3Mf1N4X1Q9FKn0szM6lQxvBW7zDNE/mE2axgEVU+aavOMQRjhVVqStryvqgVRlKNW9wKxR5BZu7oUI=</latexit>
実装演習結果
(一部抜粋)
1.線形回帰モデル
✦skl_regression.ipynbの実行
✦1変数の場合の予測
✦[20]で予測結果を出力
• 入力が1の場合,-25.5685118
• 入力が0の場合,-34.67062078
1.線形回帰モデル
✦2変数の場合の予測
✦[32]でパラメータ推定
✦[33]で予測値を出力
• CRIM=0.2, RM=7のとき,
29.43977562を出力
1.線形回帰モデル
✦モデルの検証
✦MSEとR^2誤差のそれぞれを出力
• 一番下のボックス
• どちらも,testデータに対しても
誤差が小さくなっていることが確
認できる
2.非線形回帰モデル
✦skl_nonlinear regression.ipynbの
実行
✦[5]でデータ生成
✦[6]で線形回帰モデルで学習
• 精度が低いことが確認できる
2.非線形回帰モデル
✦[7]:カーネルリッジ回帰
✦[8]:Ridge回帰
2.非線形回帰モデル
✦[10]:Lasso回帰
3.ロジスティック回帰モデル
✦skl_logistic_regression.ipynbの実行
• 1変数(チケット価格)から分類(生死)を推定
4.主成分分析
✦skl_pca.ipynbの実行
✦30次元のデータを2次元に圧縮
✦散布図は圧縮後のプロット図
5.アルゴリズム
✦skl_kmeans.ipynbの実行
6.サポートベクターマシン
✦np_pca.ipynbの実行
✦[3]で訓練データをプロット
6.サポートベクターマシン
✦[4]で学習を実行
6.サポートベクターマシン
✦[5][6]でテストデータに対して予測を実行
✦[7]で予測結果を出力
• 実線:境界線
• 波線:マージン
• 波線上の点:サポートベクトル

02 機械学習