線形モデル:特徴量が訓練データより多い場合
はじめに
大学でTAをやることになったのでscikit-learnの勉強をしている.オライリーの「pythonで始める機械学習」を使って学習しているのだが,タイトルの話題で詳細な説明がなかったので備忘録として書く.厳密な議論ができていないため,力になれないかもしれない.
本題と結論
以下,引用.
『訓練データのデータポイント数よりも特徴量の数の方が多い場合には,どのような でも完全に訓練データの線形関数としてモデル化できる』
線形代数に慣れている人であれば当たり前らしいが,私は「ん?」となったので考察した.
<結論>
- 線形モデルにおいて,
データポイントの数 = 連立方程式の式の数
特徴量の数 = 連立方程式の変数の数 - 1
線形モデル
線形モデルを学習すると以下の方程式が得られる.
\begin{eqnarray} \tilde{y} &=& w[0] \times x[0] + \cdots + w[p] \times x[p] + \bf{b} \\ &=& \bf{w}\bf{x} +b \end{eqnarray}
この方程式を用いて,予測したいデータの特徴ベクトル を代入することで, を予測値として出力するのが線形回帰を用いた学習である.
訓練データについて
scikit-learnにおいて,訓練データは,”data”と"target"にそれぞれ特徴量とラベルがndarray型で保存されています.これらの配列をそれぞれ , とします.(以下図)
問題設定
まず,問題設定(今回考えたいこと)を明らかにする.
- 与えられるもの: ← 行列 (データセットの特徴量部分)
← 行列 (データセットのラベル部分)
- 求めたいこと: における と
今回は特徴量が訓練データより多い場合ということで, < が仮定されてる.
よくよく考えてみる
与えられたデータセットの特徴量部分 を に,ラベル部分 を に入れると以下の連立方程式になる.
\begin{eqnarray} \left \{ \begin{array}{l} y_1 =w[0] \times x_1[0] +\cdots + w[p] \times x_1[p] + b \\ \cdots \\ y_n =w[0] \times x_n[0] +\cdots + w[p] \times x_n[p] + b \end{array}\right.\end{eqnarray}
この連立方程式で変数となっているのは, の 個である.また,式の数は 個です.
ここで,仮定を思い出すと, < でした.これより, が言えます.何を言いたいかというと,
”変数の数が連立方程式の式の数以上である”
ということです.
みなさん, の解を考えてさい. とたくさんありますよね?これは,式が1つに対して変数が2つあるからです.つまり,変数が式の数よりも多いと,解が必ず存在するのです(多分...).
話を戻すと, < という仮定により,連立方程式の変数の数が式の数以上になるので,その連立方程式を満たす解が必ず存在することが言えます.
つまり,求めたかった と は必ず存在することが言えます.
これらが求めれることはつまり,線形モデルが構築でき,そのモデルに各データセットの特徴量を代入したときに,その出力とデータセットのラベルが完全一致することが言えるのです.
終わりに
ブログに初めて学術的なことを書いた.所要時間は2時間オーバー.texの使い方に戸惑ったのと,行列に関して復習するのに時間を多く要した.自分の無力さを実感したが,とてもいい勉強になった.ツッコミどころがたくさんあると思われるので,よろしければご指導の方,よろしくお願いします.