教師なし学習
学習目標
教師なし学習の基本的な理論を理解する。
k-means法
ウォード法
主成分分析
協調フィルタリング
トピックモデル
キーワード:クラスタリング、クラスタ分析、レコメンデーション、デンドログラム(樹形図)、特異値分解、多次元尺度構成法、t-SNE、コールドスタート問題、コンテンツベースフィルタリング、潜在的ディリクレ配分法(LDA)、次元削減、次元圧縮
クラスタリング
クラスタリングはデータをグループ分けする手法です。クラスタ分析とも呼びます。
k-means法
k-means法では、人間が指定したクラスタの数kに従ってデータをk個のクラスタ(グループ)に振り分けます。
下図のデータでk=3として解説します。

次の手順で学習します。
①k個の重心(centroid)候補を適当な位置に配置する。

②各データを最も近い重心によってk=3個のクラスタに振り分ける。

③各クラスタの平均を計算し重心の位置を更新する。

④重心の位置が変化しなくなるまで②と③を繰り返す。
> ②データをクラスタに振り分けます。

> ③重心の位置を更新します。

> これ以上重心の位置は変化しません。
以上によって全てのデータがk=3個のクラスタに振り分けられました。
ウォード法
ウォード法は凝集型階層的クラスタリングと呼ばれる手法。
① 最初は、全ての点が別々のクラスタであるとする

② 最も距離が近い2つのクラスタを合体させて一つのクラスタにする

③ クラスタ数が目的の値(例えば1)になるまで②を繰り返す。
> ②2つのクラスタを合体させる。

> ②2つのクラスタを合体させる。

クラスタの数が1なので完了です。
階層構造はデンドログラム(樹形図)として表示することができる。

次元削減
多次元のデータの変数の中には強い相関関係がある場合があり、それらの変数をまとめて少ない次元でデータを説明することができます。特徴量が多い時などは、次元削減を施すと学習を効率良く行えるようになります。
主成分分析
主成分分析(Principal Component Analysis、PCA)は特徴量の関係からどの方向でデータの分散が大きくなっているかを見出します。

この2次元データには強い相関があり、斜め右上に向かう直線上(赤)でデータの分散が一番大きいです。

赤に直交する青の方向での分散が比較的に小さいので上記のデータは赤の直線(第一主成分)上でほとんど説明できます。つまり、2次元データをほぼ1次元で説明できることになります。
多次元でも同様に、主要な主成分だけを使うことでデータを説明するのに必要な次元を減らすことができます。
多次元尺度構成法
多次元尺度構成法(multi-dimensional scaling、MDS)の考え方はPCAとほぼ同じですが、相関ではなくデータ間の距離によってどの次元が重要なのかを見つけ出す方法です。距離の測り方にはユークリッド距離だけでなくいろいろあり、そこは使う側の経験や直感に従って選ばれます。
特異値分解
特異値分解(singular value decomposition、SVD)はどのような行列$${M}$$も回転$${U}$$と伸縮$${\Sigma}$$と回転$${V^T}$$で表現できることを利用しています。

行列$${M}$$に$${m \times n}$$($${m}$$行$${n}$$列)のデータが収納されているとします。また、データの数$${m}$$が特徴量の数$${n}$$より大きいと仮定します。
$$
M = U \cdot \Sigma \cdot V^T
$$
と表現できます。ここで、
$${U}$$は$${m \times m}$$
$${\Sigma}$$は$${m \times n}$$
$${V^T}$$は $${n \times n}$$
となります。なお、$${V^T}$$は$${V}$$の転置行列で、
$${U}$$の各列は、$${M}$$の出力空間の正規直交基底($${m \times 1}$$)
$${V}$$の各列は、$${M}$$の入力空間の正規直交基底($${n \times 1}$$)
また、$${\Sigma}$$は対角行列です。$${\Sigma}$$の対角には値の大きい順に$${\sigma_1, \sigma_2, \dots, \sigma_n}$$と並びます。$${n}$$行より下の行は全て0になります。以上により、行列$${M}$$に収納されたデータは、
$$
M = \sigma_1 u_1 v_1^T + \sigma_2 u_2 v_2^T + \dots + \sigma_n u_n v_n^T
$$
となります。$${u_i v_i^T}$$の次元が$${m \times n}$$なので、$${M}$$は$${n}$$個の行列$${u_i v^T_i}$$に$${\sigma_i}$$の重みを掛けてたし合わせたものとなっています。よって、小さい$${\sigma_i}$$の項目を除外することで次元の削減をすることができます。
例えば、$${l << n}$$とすると、
$$
\begin{align*}
\\
M = \tilde{U} \tilde{\Sigma} \tilde{V}^T
\end{align*}
$$
$${\tilde{U}}$$は$${m \times l}$$
$${\tilde{\Sigma}}$$は$${l \times l}$$
$${\tilde{V}^T}$$は$${l \times n}$$
となり、$${l}$$次元へ削減されます。
次元圧縮
次元圧縮は高次元なデータを低次元(3Dや2D)上に投影して可視化するもの。
t-SNE
t-SNE(t-distributed stochastic neighbor embedding)はよく使われる次元圧縮の手法です。
ジェフリー・ヒントンらにより開発された可視化のための機械学習アルゴリズムです。高次元のデータを可視化のために2次元か3次元の空間へ埋め込むのに優れた非線形次元削減手法です。
以下はMNISTのデータ(784次元)をt-SNEで圧縮し可視化した例です。

レコメンデーション
レコメンデーション(recommendation)はECサイトなどの推奨システムで使われるもので、ユーザーの購買履歴などを元に商品を勧めるために活用されます。
協調フィルタリング
協調フィルタリング(collaborative filtering)は、あるユーザーが購入・チェックした商品のデータと、他のユーザーが購入・チェックした商品のデータを両方からユーザー同士の類似性や商品の興味に対する関連(相関)を分析することでユーザーにパーソナライズされた商品を推奨できる手法です。要するに、人は似たような行動や興味を持つ人が持つものを欲しがるという仮定の上に成り立った分析の仕組みです。
協調フィルタリングはある程度ユーザーデータの蓄積がないと効果がありません。これをコールドスタート問題と呼びます。
コンテンツベースフィルタリング
コンテンツベースフィルタリング(content-based filtering)は対象となるユーザーの購入履歴やチェック行動のデータだけから推奨する方法で、コールドスタート問題をある程度回避できます。もちろん、ユーザー自体のデータは必要ですが。
トピックモデル
トピックモデル(topic model)はクラスタリングの一種ですが、一つのデータに対して複数のクラスタを割り当てることができます。自然言語処理で用いられる手法で「言葉の意味」を統計的に解析するためトピックモデルと呼ばれます。
潜在的ディリクレ配分法(LDA)
潜在的ディリクレ配分法(LDA)は代表的なトピックモデルです。文章は複数の潜在的なトピックから確率的に生成されると仮定しています。つまり、単語がそのトピックの確率分布に従って出現すると考えます。
トピックモデルをレコメンドシステムに応用することもできます。その際、ユーザーの購入やチェック行動は、ユーザーのもつ潜在的トピックから確率的に生成されていると捉えます。
