鰤切手

旧初めての理系編入。編入から無職まであなたのお供をします。

【スポンサーリンク】

教師なし学習の分類アルゴリズムについて学ぶ E資格対策

今日は教師なし学習について

 

お品書き

 

 

 

教師なし学習とは

正解情報(=教師データ)を持たない学習を指し、主に

 

・次元削減
・特徴抽出
・表現学習
クラスタリング

 

に用いられます。今回は教師なし学習の代表的な手法を紹介します。

 

 

教師なし学習の例 

 

主成分分析(PCA)

データの説明に重要な特徴を抽出する手法。 

f:id:Tsuquba:20201114202039p:plain

1列目の画像を 寄与率が高い順に10,50,100,500枚足し合わせた画像

上図が主成分分析の一例、です。特に注目してほしいのが一番右の写真、この画像は87*65=5655ピクセルで構成されていますが、一番右の画像は500枚の画像の和で元の画像を復元できております。

つまり5655個のデータの集まりを500個のデータの集まりで復元できます。なので次元圧縮や特徴量抽出として主成分分析は用いられます。

 

 

コードはこれ

 

from sklearn.datasets import fetch_lfw_people
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
import numpy as np

people = fetch_lfw_people(min_faces_per_person=20, resize=0.7)
image_shape=people.images[0].shape

mask=np.zeros(people.target.shape, dtype=np.bool)
for target in np.unique(people.target):
  mask[np.where(people.target==target)[0][:50]]=1

X_people=people.data[mask]
y_people=people.target[mask]

X_people/=255

X_train,X_test,y_train,y_test = train_test_split(X_people,
                                                 y_people,
                                                 stratify=y_people,
                                                 random_state=0)

mglearn.plots.plot_pca_faces(X_train, X_test, image_shape)

 

 

k平均クラスタリング-距離ベース

 主にクラスタリングで用いられる手法です。下図のようにやります。

f:id:Tsuquba:20201110225654p:plain

 

1.入力データが与えられる
2.適当にクラスタセンタを取る
3.入力データを最も近いクラスタセンタが属するクラスにラベル付ける
4.クラスの平均位置にクラスタセンタを更新する
5. 3.4.を繰り返す
6.しばらくするとクラスタセンタが動かなくなり、終了

 

 コードはこちら

import mglearn
mglearn.plots.plot_kmeans_algorithm()

 

上図のようにしてデータを分類します。ただし、クラスタセンタがランダムに取られるので、収束が遅かったり、精度があまりよろしくないというデメリットがあります。 

 

k-means++

k平均クラスタリングの問題点を解消した手法です。違いは


・初期値をデータ点の中から選ぶ
クラスタセンタの更新時に重み確率分布 \frac{D(x)^2}{∑D(x)^2} を用いて、データ点xから新しいクラスタ中心をランダムにk個選ぶことを繰り返す。

 

これにより収束が早くなるメリットがあります。

 

 

DBSCAN-密度ベース

 k平均は距離ベースで行っていましたが、今度は密度ベースで行う手法です。

 

f:id:Tsuquba:20201110225822p:plain

 

引用:

DBSCAN - Wikipedia

 

 データ点を


・コア(赤点):自身から一定半径以内に指定個数minPts以上の隣接点がある点
・ボーダー(黄点):自身から一定半径以内に指定個数以上minPtsの隣接点はないものの、コアからϵ以内にある点
・ノイズ(青点):それ以外


に分類し、一定半径以内にあるコア点同士を結びクラスタ化し、ボーダー店は最近傍のコア点のクラスタに割り当る手法。

 

ちなみに距離ベースと密度ベース、どちらのほうが良いかというと

 

f:id:Tsuquba:20201121150807p:plain

 

こちらが距離ベース

 

f:id:Tsuquba:20201121150819p:plain

こちらが密度ベース

 

となり、二次元データでは密度ベースのほうがうまくいくそうです。

 

画像引用:

data-analysis-stats.jp


 

 以上になります。

 

参考文献

data-analysis-stats.jp