科学の箱

科学・IT・登山の話題

機械学習

Pythonではじめる機械学習 – k-Means

投稿日:

k-Meansの概要

k-Meansは教師なし学習の一つであり、あらかじめ指定された数にグループを分ける。

例えば今身長である程度まとまって席に座っている生徒を考えます。k-Meansでは最初に分けるグループ数のみ指定されています。これを例えば3とします。

一回目のサイクルは以下のように始まります。

  1. k-Meansは最初にクラス内の適当な場所に旗を3つ立てます。
  2. この旗に生徒をすべての所属させます。所属方法は生徒と旗の距離から計算します。
  3. 次に所属している生徒すべての中心となる点を探しここに旗を移します。

2回目のサイクルは以下の陽なります

  1. 移った旗の位置に従って生徒の所属を変えます。大部分の生徒は同じ旗に残ることが予測されますが、何人かの生徒は移動します。
  2. 移動が終わったら新たに中心となる点を探しここに旗を移します。

3回目以降は2回目のサイクルを繰り返します。旗が移動しなくなるあるいはあらかじめ指定されたより移動しなくなれば終了です。この時点で旗に所属している状態によりクラスタリングをします。

Expectations – Maximization

E-Step : データを最も近い中心点に割り当てる

M-Step : クラスタの中心をデータの中心点に割り当てる

k-Means法のデメリット

最初のランダムポイントによっては最適解を得られない可能性がある。

  • 最初の選択位置が理想とするクラスタの位置とは異なる場合、例えば同じクラスタに複数の中心が入るなど、最適なクラスタを得られない可能性がある。
  • 複数のランダムシードでクラスタリングを実施する

クラスタ数を指定する必要がある

  • あらかじめクラスタ数を指定する必要がある。
  • クラスタ数の指定にはデータの可視化もしくは何らかの方法によりクラスタ数を予測しなければならない。
  • しかしそもそもクラスタ数が予測できるならば、データの割り当てもk-Meansによらなくてよい

複雑なクラスタには向いてない

  • データの境界が複雑になっている場合には良い結果にはならない
  • カーネル化したk-Meansを利用する

データ数に比例して時間が極端に遅くなる

  • 試行のたびにすべてのデータについて計算をする。
  • データが増えるとそのまま処理にかかる時間も増える。
  • ミニバッチを利用する(クラスタ内の一部のデータを利用して中心を更新する)

k-Means on Digits

クラスタリング自体は正しい数値ラベルを持たないで、各クラスタのデータからラベルを付けなおす必要がある

from scipy.stats import mode

# 値が0の10次元のリスト
labels = np.zeros_like(clusters)

for i in range(10):
    mask = (clusters == i) 
    # 0~9のクラスタについてTrue, Falseリスト
    labels[mask] = mode(digits.target[mask])[0]
    # digits.target[mask]で該当マスクのデータをすべて取得
    # modeで最頻値を取得
    # リスト0番目に最頻値が入っている
    # labelを正しい数値で付け替える

 

検証方法のステップ

  1. 正解率からモデルの信頼度を確認する
  2. 混同行列から間違いに傾向があるかを確認する

k-Means on Color Compression

RGBから生成される色は16million通りある。これはR=255, G=255, B=255であるからRGBの組み合わせは255*255*255=16581375となる。

しかし実際にRed/Gree, Red/Blueを見てみると使っている使っている色は対角線上に集まっている。プロットがないスペースが広くみられる。これより色を集約できると考えられる。

k-Meansにより16色まで減らしてみる。画面右上の青~青白が不自然に境界が出ていることがわかる。

実際のイメージで確認すると空の部分が不自然に境界ができている。しかし他の部分は16色まで減らしても不自然さは感じられない。

メタ情報

inarticle



メタ情報

inarticle



-機械学習

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Pythonではじめる機械学習 – GMM

k-Meansの課題 クラスタ間で微妙な位置関係にあるデータについて特定クラスタに分類された際の不確実の度合いを知ることができない。 例えば51%の確率でクラスタAであり、49%の確率でクラスタBかも …

no image

スピアマンの順位相関

スピアマンの順位相関を利用して県のデータを使った相関係数を出してみる。 持家普及率を自動車普及率のランキングは、土地がせまいほど低く、有効な土地が広いほど高くなるために順位相関があると考えられる。 持 …

no image

仕事で始める機械学習 – 2.機械学習で何ができるか – 分類 – SVM

SVMの決定境界 SVMの決定境界はSVMで利用するカーネルにより異なる。 線形カーネル→線形 RBFカーネル→非線形 損失関数 損失関数としてはヒンジ関数を利用するが、パーセプトロンとは異なり、横軸 …

no image

前向き研究と後ろ向き研究

前向き研究と後ろ向き研究は疫学における用語である。 前向き研究で使われる研究手法にはコホートや無作為比較対照研究、ロジスティック分析がある。これらの研究ではサンプルをリスクファクター(危険要因)のある …

no image

仕事で始める機械学習 – 3.学習結果を評価しよう – 指標

主な指標 モデル構築後に確認する主な指標は4つある。 正解率 適合率 再現率 F値 正解率 $$ 正解率 = \frac{TP + TN}{TP+FP+TN+FN} $$ 正解率は全データ数に対する正 …

2019年11月
« 10月   12月 »
 123
45678910
11121314151617
18192021222324
252627282930  

side bar top



アーカイブ

カテゴリー