科学の箱

科学・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

回帰と分類の違い

回帰と分類は両方とも”予測”問題である。予測とは従属変数から目的変数を明らかにする。この目的変数の種類により回帰と分類に分けられる。 回帰では連続した数値を予測する。例えば株価 …

no image

スパムメールの判別に使うベイズ定理についてまとめる

分類問題 スパムメールを判別するような問題は一般的に「分類問題」として機械学習では取り扱う。分類問題とはいまある「物」や「発生した事柄」を確率的に分類する。この「確率的」という言葉がみそであり、固定さ …

no image

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

3.1 Types of Unsupervised Learning 教師なし学習の例 次元削減: 重要な特徴量のみを使って元のデータを表現する トピック抽出: データを構成する部品を見つける クラス …

no image

Excelによる単回帰分析

エクセルでの単回帰分析をについて手順をまとめる。エクセルの使い方にあわせて分析結果の解釈の仕方も書いておく。 データは勉強時間に対する点数とする。これは作ったデータであるが、線形回帰にフィットするよう …

no image

データ分析について評価する

デザイン コントロールグループはあるか モデル 検定の前提は満たしているか(正規分布) 従属変数の尺度は適切か(名義、順序、間隔、比率) 独立変数の数は適切か モデルについて説明できるか(独立変数の数 …

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

side bar top



アーカイブ

カテゴリー