暇人日記

アラフォーおっさんのコーセラの機械学習の課題を解こうと頑張っています!

Coursera Machine Learning Week8 Video後半

 

 

Video⑧Principal Component Analysis Problem Formation

 

背景の説明かと思います。

「1次元に落とし込むときは1本のベクトルの直線に落とし込む、

 2次元に落とし込むときは2本のベクトルの面に落とし込む。

 もちろんProjection Errorを最小にしながら」

がメインだと思います。

 

あとは「PCAはlinear Regressionとは違う」がポイントでした。

確かに絵を見たときにlinear Regressionと同じかなぁと思っていたので、

説明してもらえてよかったです。

PCAは直線への最短距離で、linear RegressionはTraining Setのyとの距離

だから違うということですね。

 

Video⑨Principal Component Analysis Algorithm

まずはfeature scaling/mean normalizationで

各xの値を補正します

 

そしてこういうことをしますと説明されてました。

(数式の意味は分かりませんが)

 

 

f:id:omoshiroamericanews:20191116215705p:plain

(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)


まずSigmaをこの式の通り計算します。

x かけるxTなのでnX1かける1Xnでnxnのベクトルになります。

Sigmaはnxnのベクトルにしておくのがポイントだと思います。

 

個人的にはxは(x1、x2、x3、x4・・xn)という横一列のベクトルだと思っていたので、xかけるxTは1XnかけるnX1で1X1になってしまう気がします。

課題をするときに要注意です。

 

f:id:omoshiroamericanews:20191116220412p:plain

(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)

そしてnxnベクトルのSigma をsvdという上の関数に放り込みます。

 

何が計算されているかはさっぱりわかりませんが笑、

とにかくUもnxnのベクトルで、そのベクトルから1-k列を取得して、

nxnだったベクトルをnxkのベクトルにします。

 

f:id:omoshiroamericanews:20191116220711p:plain

 

数式ではこう表現します(課題で役立ちそうです)

f:id:omoshiroamericanews:20191116220939p:plain

 

このnxkのUreduceがK次元に落とし込んだベクトルかというと、

そういうことではなく、これをxにかけるということです。

f:id:omoshiroamericanews:20191116221246p:plain

UreduceをTしたkXnとnX1のxをかけるとkx1になるので、

nx1でn次元だったxがkx1のk次元に落とし込まれるという説明だと理解しました。

 

課題の時に役立ちそうな一覧がこちらですね。

Feature Scaling/Mean Normalizetionをやってから↓を実行するという流れですね。

f:id:omoshiroamericanews:20191116221819p:plain

(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)

 Video⑩Reconstruction from Compressed Representatation

Video⑨でn次元のものをk次元に落とし込んだベクトルを

n次元に戻す方法の説明でした。

f:id:omoshiroamericanews:20191116222027p:plain

 

 逆に計算するのでUreduceのnxkのベクトルにkx1のベクトルをかけて

nx1に戻すということですね。

appproxと書いてあるので完全に同じには戻せないのかなと思いました。

 

Video⑪Choising the Number of Principal Conponents

このビデオはいくつのKにするのが適切なのかを

判断するための方法について説明してくれていると思います。

 

元々Projection Errorを最小にしながら、次元は落とし込むものという

話だったので、このVideoでは「最小」が一般的に1%くらいという話がされます。

 

元々のxとProjectionから復元したxapproxの差が1%以下ということで

↓の式が書かれています。

f:id:omoshiroamericanews:20191116225246p:plain

(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)

 

この式をK=1から順番に計算していって1%以下になったkが

適切なkということです。

例ではk=17で初めて1%以下になったので、17が適切という例でした。

 

f:id:omoshiroamericanews:20191116230624p:plain

(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)

 えっ、またループさせるの!?

と思いました。

ループ履歴取り出しはWeek7の課題で習得したつもりですが、

苦手意識があります。

 

と思ったら、他の方法が説明されて

f:id:omoshiroamericanews:20191116220412p:plain

 k次元に落とし込むときにでてきたこの式のSがなんと役に立つとのこと!

 

Sはこういう斜めの部分に数字があり、ほかは0のベクトルということで、

f:id:omoshiroamericanews:20191116231604p:plain

(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)

nまでありますがK次元に落とし込むときと同じように1-k番目までをとって

 次の割り算が0.01でもいいということです。

f:id:omoshiroamericanews:20191116231811p:plain

(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)

 

Video⑫Advice for Applying PCA

・PCAはsupervised Learningのスピードアップにも使えるということ

・PCAはデータ削減やスピードアップやグラフ化することに使えるということ

・Overfitするのを避けるために次元を削るというような使い方はしないということ

 Overfitを避けるためにはregularizationを使う方がいいということ

 

以上がWeek8 Videoの自分なりのまとめです。

 

前回も紹介しましたがわかりやすいのはこちら↓かと思います笑

makuramarks.com

 

次回は課題に取り組みます!