1. ktzw

    Posted

    ktzw
Changes in title
+Webアプリケーションエンジニアがディープラーニングに挑戦する際にやったこと(Coursera Week8)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,59 @@
+# Coursera Week8
+## はじめに
+CourseraのWeek8を実施しましたので、私のメモを公開します。
+Courseraってなんだ?という方は[Week1](http://qiita.com/KirariGlock/items/d41bdcc6f5ec5ad255fb)から御覧ください。
+Week8では実践的な教師なし学習について学びます。
+
+## Clustering
+### K-means algorithm
+クラスタリングで最もよく使われているアルゴリズム。
+クラスタの重心を求めて調整することで正しくデータを分類するする。
+入力パラメータは$K$と$X$。
+$K$はクラスタリングの数。
+$X$はトレーニングデータ。
+
+### K-means optimization
+$c^{(i)}$は$x^{(i)}$が現在どのクラスタに割り当てられているかを示すもの。
+$\mu_k$はクラスタの重心$K$の場所を表す。
+$$
+J(c^{(1)},,,,c^{(m)},\mu^{(1)},,,,\mu_K)=\frac{1}{m}\sum_{i=1}^m||x^{(i)} - \mu_{c(i)}||^2
+$$
+
+### K-means initialization
+K-meansの初期化はランダムで$m$を抽出して実施するが、抽出される$m$によっては良い結果にならない場合がある。
+なので、ランダムで初期化する際に50~1000回程度K-meansの初期化とコスト関数(ディストーション関数)$J$を求める処理を実施する。
+最終的にはループで得られた$J$の最小値を選択する。
+
+### Choosing the Number of Clusters
+クラスタの数を求める方法としてエルボー法がある。
+エルボー法はクラスタの数を増やしながら$J$の値を確認していく。($J$の値はクラスタ数に反比例して減るはず。)
+$J$の値の減り幅が急に小さくなったあたりが、適正なクラスタ数と考えられる。
+ただし、$J$の値の減り幅が急に小さくならずに緩やかになってしまうケースもあり、その場合エルボー法では判断できない。
+
+### Data Compression
+データの次元を圧縮することで処理をしやすくすることができる。
+2次元を1次元に、3次元を2次元に圧縮する。
+
+### 主成分分析(PCA)
+PCAは2次元にプロットされたデータの射影誤差が一番短い線を求めることができる。
+これは二乗射影誤差を最小化するようなもので、各点と射影先の点の位置との距離の二乗を最小化するという条件で実施する。
+
+PCAをする前にデータを平均標準化しておく必要がある。
+また、データによっては正規化する必要がある。
+やり方はほとんど教師あり学習の時と同じ。
+
+データを$n$次元から$k$次元に削減したいとする。
+まず共分散行列を計算する。
+共分散行列は$\Sigma$で表すが、sumのシグマとは別物。
+以下のようにSigmaを求める。
+$$
+Sigma = \frac{1}{m}\sum_{i=1}^n(x^{(i)})(x^{(i)})^T
+$$
+
+また、Ocataveでは以下のようにする。
+Sigmaはn x nの行列。
+Uもn x nの行列。
+[U,S,V] = svd(Sigma);
+Ureduce = U(:,1:k);
+z = Ureduce' * x;
+