はじめに
もうすぐCoursera Machine Learningコースを終えることができそうです。
week11 のラストで、この動画で学んだことの一覧が映されてました。
Supervised Learning
Linear regression
Hypothesis
Parameter
Cost
GradientDecent
logistic regression
neural networks
SVMs
Unsupervised Learning
K-means,PCA,Anomaly detection
Special application/special topics
Recommender systems
large scale machine learning
Advice on building a machine learning system
Bias/Variance
Regularization
deciding what to work on next
evaluation of learning algorithms
learning curves
error analysis
ceiling analysis
そこで自分の復習のために、スライドを見直しながらメモを取ったので共有します。
なお、私の理解度に応じてメモの量が変わっているように思います、ご了承ください。
教師あり学習
線形回帰
- 仮説:hθ(x)=θ0+θ1*x
- パラメータ
- コスト:Jθ(x) = 1/2m Σ (hθ(x)-y)^2
- (バッチ)勾配降下法:(すべてのトレーニングデータで)傾きに学習率αをかけたもので調整
- 複数のfeature
- Feature Scaling
- Mean normalization
- featureの選び方:x^2、ルートx
- 正規方程式:勾配降下法を使わずに、iterateせず計算でパラメータを算出
ロジスティック回帰
- Classification:SpamEmail,OnlineFraud。分類問題は0~1,ロジスティック回帰がよく当てはまる。
- htheata(x) = g(θ’*x)
- g(z) = 1/(1 + e^-z)
- hθ(x) = 1/(1+e^-θ’*x)
- シグモイド関数、ロジスティック関数と呼ぶ
- Decision Boundary/Non-linear decision boundaries
- コスト:y=1の時は-log(hθ(x)),y=0の時は-log(1-hθ(x))。まとめると、J(θ) = -1/m*Σ(y * loghθ(x) + (1-y)log(1-hθ(x)))
- θ = θ - α*Σ(hθ(x)-y)x
- 他にConjugate gradient,BFGS,L-BFGSなどの最適化アルゴリズムがある
- Multiclass classification。それぞれの確率を求め、最大の確率のものと予測
ニューラルネットワーク
- 例:画像のピクセルから車かどうかを判定する
- 脳のニューロンからきてる。
- Input layer,Hidden layer,Output layer
- bias unit,activation unit
- matrix of weightsΘ
- フォワードプロパゲーション
- OR/XOR/XNOR/AND
- 手書き文字分類(の動画)
- Multiple output units/One-vs-all。Pedestrian,car,motorcycle,truck.
- コスト
- バックプロパゲーション:最急降下法だと、コスト、傾きを計算する必要。
- unrolling parameters:複数のΘをベクトルに変換
- Gradient Checking:実装がうまくできてるかの確認。あるθでの傾きは、(J(θ+ε)-J(θ-ε))/2ε に近いはず。
- Random initialization: Θはすべてゼロで始めてはいけない。
- 例:自動運転
SVMs
ロジスティック回帰から考える
- hθ(x)=1/(1+e^-θ’*x)
- y=1 に対しては hθ(x)=1が求められ、その場合はθ’*x>>0
- y=0 に対しては hθ(x)=0が求められ、その場合はθ’*x<<0
- コストは-y*log(1/(1+e^-θ’x))-(1-y)*log(1-1/(1+e^-θ’x))。y=1の場合と0の場合について考える。(図示)
- 決定境界はマージンが大きくなるように定まる。
- Cの値が大きければ、外れ値の影響を大きく受ける
カーネル
- landmarkを選ぶ
- C=1/λ
- Large σ^2:higher bias
- Small σ^2:higher variance
教師なし学習
例:マーケットセグメンテーション、ソーシャルネットワーク分析、コンピュータクラスタ、銀河データ分析
K-means
- K個のクラスタに分ける手法。
- 重心を適当に決める
- データ1つ1つに対し、最も近い重心の番号を振る
- 重心をそのデータの平均値に移動する。
- 2と3を繰り返す。
- ランダムイニシャライゼーション
- ランダムに選んだデータを重心としK-meansを行い、最終的に算出されたコストが最も小さいものを選ぶ
- クラスタ数の決め方
- Elbow method(コストが下がりにくくなったKにする)
- 目的によって決める(例:Tシャツのサイズ)
次元削減
- 2次元を1次元にしたり。
- 目的
- データの圧縮(メモリ/ディスクの削減。学習スピードアップ)
- 2次元なら図示可能(例:国のGDP等)
PCA(主成分分析)
- 次元削減する際に、どんなN次平面に投射するのがProjectionErrorを最小化できるか。
- PCAと線形回帰は異なる
- はじめにfeature scaling,mean normalization実施
- 共分散行列の計算(covariance matrix): Σ= 1/m * Σ(X*X’)
- 固有ベクトルの計算(eigenvector):[U,S,V] = svd(Σ)
- Uを用いる:Ureduce=U(:,1:k)
-
次元削減したものを再構築(reconstruction)
-
主成分の数 k の決め方
- Sを使う。分散が99%以上維持される最も小さなkにする
-
「overfittingを解消するためにfeatureを減らす」ことを目的としてPCAを使わないこと。正規化項を加えよう。
-
PCAを実装する前に、まずはraw dataで実装しよう。
Anomaly detection
- ノーマルでない確率を求める
- 例:飛行機エンジンのエラー、Fraud、製造、データセンター
ガウス分布
- 平均 μ
- 分散 σ^2
- その事象が起きる確率p(x)を求め、εより小さい(起きづらい)ければanomaly
データの数
- normal 10000,anomalous 20 なら
- train: normal 6000,cv: normal 2000 anomalous 10,test: normal 2000,anomalous 10
- train: normal 6000,cv: normal 4000 anomalous 10,test: normal 4000 anomalous 10
評価方法
-
Precision/Recall
-
F1スコア
-
εはcvで決めても良い。
Anomaly detectionと教師あり学習のどちらを使うべきか
- positive exampleが少ない場合
- negative exampleが大き場合
- anomalなもののパターンが多い場合(これまでのpositiveからどんなものか規則性がわからない。今後起きるanomalが予測できない)
featureの選び方
- ガウス分布になってない場合
- 二つのfeatureのp(x)がどちらも大きくてもanomalousな場合
- CPU load/network traffic
2つのfeatureに相関のようなものがある場合
original model/multivariate gaussian
Special application
レコメンド
- 例:映画レーティング
- Userの好みθと映画X
- romance,actionもあった(がそんなものはそもそもわからない)
- Xのそれぞれの距離から似ている映画を探す
- mean normalization:何も見てない人に何を推薦すべきか
大規模データの機械学習
- It’s not who has the best algorithm that wins. It’s who has the most data.
- バッチ最急降下法(xすべて)
- 確率的最急降下法(x 1つ1つ)
- ミニバッチ最急降下法(x 幾つか)
収束してるかチェック
- バッチ:Jtrain
- 確率的:例えば1000個の平均
学習レートαを徐々に減らすやり方
Online learning:データが届いたら即学習、捨てる
Map-reduce:計算を分割できるならコンピュータ、Coreに分担させて、結果を結合
機械学習システムを構築するにあたって
バイアス・バリアンス(underfitting,overfitting)
- overfittingかunderfittingかを知ることで、何をすべきかを考えます。
- overfitting:feature多すぎてtrainデータに当てはまりすぎて新たなデータを正しく予測できない
正則化(regularization)
- パラメータにペナルティを与えてsimpleなhypothesisに。λ。
学習アルゴリズムの評価、次に何をすべきか
選択肢例は下記
- Get more training examples
- Try smaller sets of features
- Try getting additional features
- Try adding polynomial features
- Try decreasing λ
- Try increasing λ
仮設の評価:テストセット
モデルの選定
- train,validation,test
- featureはいくつがいいか
- バイアス/バリアンスの診断
- underfitting,overfitting
- 正則化とバイアス/バリアンス
- λの数値をいくつにするか
- 学習曲線
- JtrainとJcvを、横にデータセットの数、縦にerrorで描く。
- ニューラルネットワークも小さければunderfitting、大きいとoverfittingしたりする
error analysis
- 例:スパムメールの分類(w4tches,Med1cine)
- 簡単に実装し、学習曲線でデータを集めるべきか、featureを増やすべきか考える。
- 分類ミスが起きていたら、ミスしたメールを実際に見て。タイプを見たり、どんなfeatureが正確性をあげるか考える。
- 実際にやってみて、エラー率が下がるか検証する
- 歪んだクラス(skewed classes)
- 例:がん患者の判定率
- Precision/Recall
- F1スコア
ceiling analysis(week11未視聴)
終わりに
Andrew Ng 先生ありがとうございました。