応用数学・機械学習
動画講義の要約
応用数学、機械学習について。 導き方込みで忘れていたものについて抜粋して復習。
応用数学
逆行列の求め方
行の基本変形
- ある行を定数倍する
- 二つの行を交換する
- ある行の定数倍を別の行に加える
掃き出し法
行列Aの右隣に単位行列Iをつけ、行基本変形を行い、[I B]に変形する。 つまり [A I] => [I B] この行列Bが行列Aの逆行列𝐴−1
行列式
行列式とは
正方行列の指標の一つでスカラーで表される大きさみたいなもの。 よく使われるのが、逆行列が存在するかどうかを確認する時で、この行列式の値が0の時、 存在にしない。ということになる。
2次元
3次元
固有値,固有ベクトル
固有値分解
$$ A = V \Lambda V ^ {-1} $$
と分解されること。
ただし Vは固有値ベクトル $$ (\vec{v} _ {1},\vec{v} _ {2},\vec{v} _ {3} , ...) $$
Λは固有値の対角行列 (3*3の正方行列の場合)
固有値分解のメリット
特異値分解
この時このように分解できる事を特異値分解という.
特異値分解 求め方
$$ M = USV ^ {T} $$
両辺に転置をかける $$ MM ^ {T} = USV ^ {T} * (USV ^ {T}) ^ {T} $$
転置の転置は順序が変わる。
$$ (USV ^ {T}) ^ {T} = VS ^ {T} U ^ {T} $$
なので $$ MM ^ {T} = USV ^ {T} * VS ^ {T} U ^ {T} $$
$$ V ^ {T} * V = I $$ 単位行列になるので消える。
$$ MM ^ {T} = USS ^ {T} U ^ {T} $$
Sは対角行列らしいので、
$$ MM ^ {T} = US ^ 2 T $$
これは $$ MM ^ {T} $$ を固有値分解した形
$$ P A P ^ {-1} $$ に相当する。
すわなち Uを決定するには、
$$ MM ^ {T} $$ を固有値分解すればよい。
特異値分解のメリット
正方行列でなくても分解が出来る。
ベイズ則
条件
$$ P(A)P(B|A)= P(B)P(A|B) $$
Aが起きる確率 * Aが起きた条件でBが起きる確率 = Bが起きる確率 * Bが起きた条件でAが起きる確率
確率変数
ある変数の値をとる確率が存在する変数のことです。例えば、さいころを投げて出る目は{1, 2, 3, 4, 5, 6}のいずれかであり、それぞれの目が出る確率は1/6であることから、サイコロの目が確率変数と言える。
$$ P(X) = 1/6 (X =1,2,3,4,5,6) $$
確率分布
確率変数がとる値と、その値がとる確率の対応の様子の対応のこと。 サイコロの場合の確率分布。シンプルだけどイメージがつきやすい。
確率変数 | 確率 |
---|---|
1 | 1/6 |
2 | 1/6 |
3 | 1/6 |
4 | 1/6 |
5 | 1/6 |
6 | 1/6 |
コインの場合の確率分布。これもシンプルだけどイメージがつきやすい。
確率変数 | 確率 |
---|---|
表(=1) | 1/2 |
裏(=0) | 1/2 |
期待値
一回の試行で、確率変数が出す値の平均値。 確率変数Xのとる値をx1,x2,x3,....xn,それに対応する確をp1,p2,p3,....pnとする場合 期待値Eは $$ E = \sum_{i=0}^n x _ {i} p _ {i} $$
サイコロの場合は $$ E = 1 * 1/6 + 2 * 1/6 + ・・・・ + 6 * 1/6 = 3.5 $$
一回サイコロ振ると、3.5が出るという感じ。
分散
データの散らばり具合を示す指標。
共分散
分散を二つのデータに拡張する。
以下のURLも普通に分かりやすかった。
(参考) http://arduinopid.web.fc2.com/P6.html
標準偏差
分散にルートする。
自己情報量
シャノンエントロピー
自己情報量の期待値
カルバックライブラーダイバージェンス
同じ事象・確率変数における異なる確率分布P,Qの違いを表す。 P、Q を離散確率分布とするとき、P の Q に対するカルバック・ライブラー情報量は以下のように定義される。
$$ D _ {KL} (P||Q)= \sum _{i} P(i) \log \frac {P(i)}{Q(i)} $$
機械学習
自分のためにやってるので、理解してそうなところは省略気味に、理解が浅いところを中心にまとめる。
線形回帰モデル
データを関数にして予測する、というのが回帰分析で、そのグラフが線形な場合は線形回帰という。
説明変数が1次元(一つだけのx)の時で考えてみる。
予測グラフ $$ \hat{y} = \omega _ {1} x + \omega _ {0} $$
現状のデータを下のように考える。予測された方程式からの誤差が今の実測値である。 $$ y = \omega _ {1} x + \omega _ {0} + \epsilon $$
平均二乗誤差
データの個数をn_train個とすると $$ E = \frac {1} {n _ {train}} \sum _ {i=1}^ {n_{train}} ( ( \omega _ {1} x + \omega _ {0} ) - y) ^ 2 $$
要するに予測値と実データの差の2乗和平均
最小二乗法
上記式が最小となるような(誤差が一番少ない)ω0,ω1を求める。解析的にとけるらしい。 そうするとω0,ω1がもとまり、予測グラフが出来上がる。
非線形回帰モデル
そのグラフが非線形な場合は線形回帰。
線形回帰時のxをφ(x)とする。もうyはxの1次関数ではないので。 xについてには非線形だが、重みについては線形のまま。 φは多項式とする。(たとえば j = 9なら9次関数)
$$ \phi _{j} = x ^ j $$
i番目のデータ .基底関数がk個 $$ y _ {i} = \omega _ 0 + \sum _ {j=1}^ {k} \omega _ {j} \phi _{j} (x _ {i}) + + \epsilon _ {i} $$
説明変数がm個
$$ x _ {i} = (x _ {i1}, x _ {i2}, ....,x _ {im}) $$
未知パラメータ(ω0やω1など)は線形回帰モデルと同様に最小2乗法や最尤法により推定する。
$$ \hat {y} = \phi \hat \omega $$
$$ \hat \omega = (\phi ^ {t} \phi ^ {-1}) \phi ^ {t} y $$
過学習
基底関数を増やすと(6次関数,7次関数, .....)、確かにテストデータに対しては精度は上がるが、検証データに対して同じように精度が上がるとは限らない。→ 過学習
正則化
パラメータの値が大きいと過学習が起きやすい。 そのためにパラメータの大きくなりすぎないように、パラメータの関数を追加する。
この関数の事を正則化項、あるいは罰則化項という。2次関数の時L2ノルム、1次の時はL1ノルム
ロジスティック回帰
分類問題.ベルヌーイ分布を利用する。1回の試行での確率 $$ P(y) = p ^ y (1 - p) ^ {1 -y} $$
すなわち。確率変数が y = 0 or 1の離散値と仮定 y = 1の時、 $$ P(1) = p ^ 1 (1 - p) ^ {1 -1} = p (1 - p) ^ {0} = p $$
確率変数 y = 0の時、 $$ P(0) = 1 - p $$
n回の試行での同時確率
1回目 $$ P(y ^ {1}) = p ^ {y ^ {1}} (1 - p) ^ {1 -y ^ {1}} $$
2回目 $$ P(y ^ {2}) = p ^ {y ^ {2}} (1 - p) ^ {1 -y ^ {2}} $$
つまりn回の試行で、y1,y2,....ynが同時におこる確率は
$$ P(y1,y2,....yn;p) = \prod_{i=1}^n p ^ {y ^ {i}} (1 - p) ^ {1 -y ^ {i}} $$
y1,y2,...ynは既知。たとえばコイン投げだと、1回目 表、 2回目 裏... で、これからその背後にある確率pを求めたい。
尤度関数とは
上記式において、データを固定しパラメータを変化させる事。 上記だとy1,y2,...ynは既知のデータ確率pが未知のパラメータにあたる。 となると、 上記式はy1,y2,...ynは固定で変数ではなくなるので、確率pをパラメータとする関数とみなせる。 これを尤度関数という。
シグモイド関数
入力を何かしらの重みで変換し、シグモイド関数(αとする)を使用して確率へと変換させると考えると
$$ p _ 1 = \alpha (w ^ T x _ 1) $$
$$ p _ n = \alpha (w ^ T x _ n) $$
とおいていけるので、結局尤度関数は ωの関数となり、これがパラメータ。
最尤推定
尤度を最大にするパラメータ(上記の場合だとω)を求める推定方法。 ωの成分はω0,ω1など。ω => ω0,ω1, ...とし、対数をとる。
$$ - \log L (\omega _ 0, \omega _ 1, ... ,\omega _ m) = \sum_{i=1}^n ( y _ {i} \log p _ {i} + (1 - y _ {i}) \log (1 - p _ {i})) $$
↑ EとするとEが最小になる ω0,ω1...を探す
勾配降下法
解析的には解けない。 Eが最小になる方向にどんどん進んでいく。 Eを パラメータで微分し、その方向で進んでいく。
確率的勾配法
勾配降下法を用いる時、全データだと計算量が多いので、いくつかにピックアップして計算をすすめていく。
主成分分析
たくさんの説明変数があるグラフで、より重要な説明変数だけに絞ったり、もしくは別の説明変数に変換したりして 要約しなおす分析のやり方。
次元圧縮するという事。これは、分散が最大となる方向に線形変換する。
k近傍法
教師あり学習の分類問題。 学習データを座標上ににプロット、そこに未知のデータが入ってくる。 そこから距離が近い順に任意のK個を取得し、多数決でデータが属するクラスを推定する。
kmeans
教師なし学習の分類問題 データの集合が座標上に存在するとする。
- まずはクラスタ数を決める
- 代表点をランダムに決める。
- データと各代表点とのユークリッド距離を測定
- 一番近い代表点にデータをクラスタリング
- クラスタリングされたデータの重心を測定
- 重心を新しい代表点にする。
- その代表点からまたユークリッド距離を測定し、一番近い代表点に再クラスタリング
- 繰り返し
- 重心が動かなくなったら、クラスタリング終了
(参考) https://toukei-lab.com/k-means
SVM
分類問題の一つ。クラスを明確に分ける境界線を引くための手法 主に2値分類について使われる。データの集合が座標上に存在するとする。
この図でいうと、決定境界の左右の線がサポートベクトルで真ん中の決定境界がちょうど中間のベクトル。このベクトルがマージンが最大化されたベクトルになるので、この線で境界線を引いて分類する手法をSVMという。