機械学習
第 3 回 回帰(線形)
白浜 公章
前回の復習といくつかのメモ
復習
• コスト関数のテイラー級数近似
• 最適化の 1 階条件
• 凸性
• 最適化手法
o 最急勾配法: 1 階のテイラー級数近似に基づく o ニュートン法: 2 階のテイラー級数近似に基づく
メモ
1. jupyter-notebook で ” IOPub data rate exceeded” というエラーが出たとき
jupyter-notebookで使用するメモリが不足しているで、増やしてやる
• https://aotamasaki.hatenablog.com/entry/2018/04/08/123146
• https://stackoverflow.com/questions/43288550/iopub-data-rate-exceeded-when-viewing-image-in-jupyter-notebook
2. jupyter-notebook
で、
”Code”モードだけでなく、
”Markdown”モードも抑えておく
• 簡単にメモ書きができる:https://qiita.com/tbpgr/items/989c6badefff69377da7
• Latexと同じ記法で数式が書ける:https://qiita.com/PlanetMeron/items/63ac58898541cbe81ada
3. jupyter-notebook
で、下準備の部分を
2回実行すると、インタラクティブモードが
ONになり、
3次元の図を動かせる(多分)
4. Safari
でダウンロードすると、コードのファイル名の最後に
”.txt”が追加される
ことがあるので、そのときは
”.txt”を削除する
今日のポイント
回帰問題
事例:(特徴、 ラベル(連続値))
特に、下記の 3 項目について学ぶ
• 線形回帰
• 最小 2 乗コスト関数
• 知識に基づく特徴デザイン
今後の講義のベースになるので、
頑張って理解すること!
正確な予測ができる モデルを学習する
株価
歳入
企業の歳入から 株価を予測
遺伝子マーカーの値から、血圧やグルコースレベルを推定
非雇用率、教育レベル、人口、面積等から、GDPを推定
線形回帰( Linear Regression )とは?( 1/2 )
❑ 事例(特徴( feature )、 ラベル( label 、連続値))の定義
• 𝑃 個の学習データ: 𝒙
1, 𝑦
1, 𝒙
2, 𝑦
2, ⋯ 𝒙
𝑃, 𝑦
𝑃• 𝑝 番目の学習事例: 𝒙
𝑝, 𝑦
𝑝𝑃 個の学習データを解析して、 𝒙
𝑝から 𝑦
𝑝を正確に予測可能なモデルを学習する
➢ 𝒙
𝑝が 1 次元の場合
スカラーなので
𝒙𝑝 = 𝑥𝑝2
次元空間(
𝑥𝑝と
𝑦𝑝)内でデータを 近似する直線を求める
➢ 𝒙
𝑝が 𝑁 次元の場合
𝒙𝑝 = 𝑥1,𝑝 𝑥2,𝑝 ⋯ 𝑥𝑁,𝑝 𝑇
𝑁 + 1
次元空間(
𝒙𝑝と
𝑦𝑝)内でデータを 近似する超平面を求める
• 企業の歳入からの株価予測 • 遺伝子マーカーからのグルコースレベル/血圧予測
• 非雇用率、教育レベル、人口、面積等からのGDP予測
線形回帰( Linear Regression )とは?( 2/2 )
➢ 𝒙
𝑝が 1 次元の場合
スカラーなので
𝒙𝑝 = 𝑥𝑝2
次元空間(
𝑥𝑝と
𝑦𝑝)内でデータを 近似する直線を求める
➢ 𝒙
𝑝が 𝑁 次元の場合
𝒙𝑝 = 𝑥1,𝑝 𝑥2,𝑝 ⋯ 𝑥𝑁,𝑝 𝑇
𝑁 + 1
次元空間(
𝒙𝑝と
𝑦𝑝)内でデータを 近似する超平面を求める
𝑏 + 𝑥𝑝𝑤 ≈ 𝑦𝑝 𝑏 + 𝒙𝑝𝑇𝒘 ≈ 𝑦𝑝 𝒘 = 𝑤1 𝑤2 ⋯ 𝑤𝑁 𝑇
学習データに対して、最も正確な予測ができるモデルパラメータを探索する
バイアス(Bias、切片) 重みベクトル(Weight vector、傾き)パラメータ
(𝑏, 𝒘)のモデルがあるとき、各学習事例ごとに、予測値
𝑏 + 𝒙𝑝𝒘と実際のラベル
𝑦𝑝との
2乗誤差を算出し足し合わせる
𝑔 𝑏, 𝒘 =
𝑝=1 𝑃
𝑏 + 𝒙𝑝𝑇𝒘 − 𝑦𝑝 2
𝑔 𝑏, 𝒘
を最小化するパラメータ
𝑏∗, 𝒘∗ = argmin 𝑔(𝑏, 𝒘)
を求める!
最小 2 乗コスト関数
( Least Squares Cost Function )
どれだけ学習 データにフィット
しているか
前回の数値最適化手法の出番!
特に、 𝑔 𝑏, 𝒘 は凸関数
𝑔 𝑏, 𝒘 の2階微分は、下記のようになる
∇2𝑔 𝑏, 𝒘 = 2𝑿𝑇𝑿 この形は半正定値
𝑿 =
1 1
𝑥1,1 𝑥1,2 ⋯ 1 𝑥1,𝑃
⋮ ⋱ ⋮
𝑥𝑁,1 𝑥𝑁,2 ⋯ 𝑥𝑁,𝑃
各事例のN次元特徴、プラス1を列方向 に並べたもの(次のスライド)
このデータの直線モデル(線形モデル)に対するコスト関数
線形回帰における最小 2 乗コスト関数の最適化
𝑔 𝑏, 𝒘 =
𝑝=1 𝑃
𝑏 + 𝒙𝑝𝒘 − 𝑦𝑝 2
ここで、
𝒙𝑝 = 𝑥1,𝑝 𝑥2,𝑝 ⋯ 𝑥𝑁,𝑝 𝑇 𝒘 = 𝑤1 𝑤2 ⋯ 𝑤𝑁 𝑇
𝑔 𝒘 =
𝑝=1 𝑃
𝒙𝑝𝑇𝒘 − 𝑦 𝑝 2
ここで、
𝒙𝑝 = 1 𝑥1,𝑝 𝑥2,𝑝 ⋯ 𝑥𝑁,𝑝 𝑇
𝒘 = 𝑏 𝑤1 𝑤2 ⋯ 𝑤𝑁 𝑇
• 𝒙𝑝の先頭に1
• 𝒘の先頭に𝑏
を加えて、内積だけで必要な 計算が終わるようにする
∇𝑔 𝒘 = 2
𝑝=1 𝑃
𝒙𝑝 𝒙𝑝𝑇𝒘 − 𝑦 𝑝 = 2
𝑝=1 𝑃
𝒙𝑝𝒙𝑝𝑇 𝒘 − 2
𝑝=1 𝑃
𝒙𝑝𝑦𝑝
この 1 階微分を用いて最急勾配法(または、 2 階微分を用いてニュートン法)
コード 3_linear_regression.ipynb参照
(線形回帰においては、下記のような最適化も可能!)
• 線型方程式ソルバを用いて、最適化の1階条件∇𝑔 𝒘 = 0を直接解く(実際、一番効率的)
𝑝=1 𝑃
𝒙𝑝𝒙𝑝𝑇 𝒘 =
𝑝=1 𝑃
𝒙𝑝𝑦𝑝 𝑿෩෩𝑿𝑻𝒘 = ෩ 𝑿𝒚
• ∇𝑔 𝒘 = 0に対して、逆行列 もしくは、疑似逆行列 を求めて、以下のように解く
𝒘 =
𝑝=1 𝑃
𝒙𝑝𝒙𝑝𝑇
−1
𝑝=1 𝑃
𝒙𝑝𝑦𝑝
• 𝑿は෩ 𝒙𝑝を列方向に並べた行列(𝑁 × 𝑃)
• 𝒚は𝑦𝑝を縦に並べた列ベクトル(𝑃 × 1)
学習した線形回帰モデルのテスト
最適パラメータが、 𝒘
∗= 𝑏
∗𝒘
∗ 𝑇として求まったとして、モデルの性能を評価したい
(ここで、𝒘∗ = 𝑤1∗ 𝑤2∗ ⋯ 𝑤𝑁∗ 𝑇)
代表的な評価尺度として、テスト事例に対する平均 2 乗誤差( MSE: Mean Squared Error )
• 𝑄個のテストデータ: 𝒙𝑡1, 𝑦𝑡1 , 𝒙𝒕2, 𝑦𝑡2 , ⋯ 𝒙𝑡𝑄, 𝑦𝑡𝑄
• 𝑞番目の学習事例: 𝒙𝑡𝑞, 𝑦𝑡𝑞 𝒙𝒕𝒒 = 𝑥1,𝑡𝑞 𝑥2,𝑡𝑞 ⋯ 𝑥𝑁,𝑡𝑞 𝑇
MSE =
𝑞=1 𝑄
𝑏
∗+ 𝒙
𝒕𝑞𝑇𝒘
∗− 𝑦
𝑡𝑞 2学習で使用していないテスト事例に対してどれだけにフィットしているか?
モデルの汎化性能( Generalisation power ) 超重要!
もちろん、学習事例に対してもMSEを計算できる。
モデルが学習事例にうまくフィットしていたら、
MSEはかなり小さいはず。
当たり前だが、
(学習事例に対するMSE)<(テスト事例に対するMSE)
この差がいかに小さいかが汎化性能
知識に基づく特徴デザイン
変換後の特徴空間で線形回帰
多くの場合、特徴とラベルの関係は非線形(直線や超平面はうまく近似できない)
もしデータに対して深い知識があれば、特徴を変換し、高精度な近似を行えることがある
(元の特徴空間) (変換後の特徴空間)
特徴変換
𝑥𝑝 → 𝑓 𝑥𝑝 = sin(2𝜋𝑥𝑝)
必要であれば、元の特徴空間に逆変換できる 𝑓 𝑥 → 𝑥 = 1
2𝜋sin−1(𝑓 𝑥 )
(学習するモデル)
𝑏 + 𝑓(𝑥𝑝)𝑤 = 𝑏 + sin(2𝜋𝑥𝑝) ≈ 𝑦𝑝
(コスト関数)
minimize
𝑏,𝑤 𝑔(𝑏, 𝑤)
= minimize
𝑏,𝑤
𝑝=1 𝑃
𝑏 + 𝑓𝑝𝑤 − 𝑦𝑝 2
(変換後の空間での最適化)
෨𝒇𝑝 = 1 𝑓𝑝 𝑇, 𝒘 = 𝑏 𝑤 1 𝑇 として、
𝑔 𝒘 =
𝑝=1 𝑃
෨𝒇𝑝𝑇𝒘 − 𝑦 𝑝 2
となり、これまでと同じ
コード3_feature_engineering.ipynb参照
特徴デザインの難しさ
ここまでで“いい特徴(変換)”とは、
•
変換後の特徴空間中で高精度な線形回帰ができる
•
上記により、元の特徴空間での非線形回帰が実現できている
残念ながら、
こんなことは非常に稀
このデータを、
𝑓 𝑥 = 𝑒3𝑥sin(3𝜋2 𝑥 − 0.5 ) 3𝜋2(𝑥 − 0.5)
と変換すれば、線形回帰できるなんて、誰が分かる???
元の特徴が1, 2次元ならデータを視覚的に見て、有効そうな 特徴(変換)を検討づけられるかも知れないが、実際に扱う データの特徴は100次元以上で視覚化不可能!
(画像処理なら数千次元、テキスト処理なら数十万次元はザラ)