Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

パターン認識02 k平均法ver2.0

16,700 views

Published on

Published in: Education, Technology
  • Be the first to comment

パターン認識02 k平均法ver2.0

  1. 1. Rで学ぶデータサイエンス5パターン認識 第2章 K-平均法<br />2011/05/28<br />TwitterID:sleipnir002<br />
  2. 2. 前回までのあらすじ<br />前回は第1回として判別器の性能を評価する方法を学んだよ。<br />訓練誤差から予測誤差を推定するためにK交差検証法という方法が使えるよ!<br />偽陽性率を抑えながら陽性率を上げるために、ROC曲線が使えるよ!<br />学習用<br />推定用<br />データセット<br />TPR<br />FPR<br />
  3. 3. 第2章の目的<br />K-平均法のアルゴリズム<br />Kの数を推定する方法<br />キーワード<br />K-平均法<br />カーネル主成分分析<br />Gap統計量<br />
  4. 4. K-平均法って?<br />
  5. 5. クラスタリングのアルゴリズム<br />
  6. 6. クラスタリングのアルゴリズム<br />@hamadakoichiさんの資料より<br />[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編<br />http://www.slideshare.net/hamadakoichi/r-3754836<br />
  7. 7. K-平均法:クラスタの数をKと指定して<br />クラスタする方法。<br />
  8. 8. K-平均法のアルゴリズム<br />入力値:データX={x1, x2, … , xn} クラスタ数k<br />1.初期化:データからランダムにK個選び、これをクラスタの重心とする。<br />2.クラスタの決定:あるデータに対し、クラスタの重心の中で最も近いクラスタがデータの属するクラスタとなる。これを全てのデータに対して計算する。<br />3.クラスタの中心の再計算:2で計算したクラスタ毎に重心を再度計算。以下、収束するまで2と3を繰り返す。<br />出力値:データごとのクラスタ C={1, k, 2, … , 2}、クラスタ中心<br />
  9. 9. K-平均法のアルゴリズム<br />言葉で言ってもわかんないので、可視化したものをみてみましょう。<br />アルゴリズム:<br />*K平均法<br />評価関数、<br />を最小化している<br />のと同じ。<br />出力:<br />データの属するクラスタ<br />クラスタ中心<br />入力:<br />多次元データX(nxp)<br />クラスタ数k<br />k=3<br />*アルゴリズムの詳細は下記リンクをチェック!http://d.hatena.ne.jp/nitoyon/20090409/kmeans_visualise<br />
  10. 10. Kmeansの使い方<br />kmeans(x, centers, iter.max = 10, nstart = 1, algorithm = c("Hartigan-Wong", "Lloyd", "Forgy", "MacQueen"))<br />引数<br />X:データセット<br />centers:<br />->スカラ値:クラスタ数k<br />->初期化ベクトルの集合<br />iter.max:計算回数上限<br />nstart:初期値の繰り返し<br />algorithm:アルゴリズムの指定<br />戻り値(kmeansクラス)<br />$cluster:各データが属するクラスタのベクトル<br />$centers:クラスタの重心ベクトルを含む行列<br />$withinss:クラスタ内の平方距離<br />$size:各クラスタのサイズを含んだベクトル。<br />
  11. 11. ここで疑問<br />
  12. 12. Kの数はどうやって選ぶの?<br />
  13. 13. 最大の問題点<br />Kの数はどうやって選ぶの?<br />カーネル主成分分析<br />ギャップ統計量<br />
  14. 14. 最大の問題点<br />Kの数はどうやって選ぶの?<br />カーネル主成分分析<br />ギャップ統計量<br />
  15. 15. カーネル主成分分析<br />(カーネル)主成分分析は次元削減のアルゴリズムです。<br />主成分:(カーネル)主成分分析の出力結果、元の変数の線形結合で表される新しい変数<br />主成分の上位だけで基のデータをよく説明できるはず!<br />この部分を直接プロットすればいい?<br />バラツキをよく説明する順番に並んでいる。<br />元のデータ<br />主成分<br />主成分分析<br />バラツキ<br />バラツキ<br />
  16. 16. Rでカーネル主成分分析を行う<br />>library(kernlab)<br />>x<-as.matrix(iris[,1:4])<br />>gamma<-median(dist(x))<br />>sigma<-1/(2*gamma^2)<br />>kp<-kpca(x, kernel=“rbfdot”, kpar=list(sigma=sigma))<br />>plot(iris[, 1:4])<br />>plot(data.frame(pcv(kp))<br /> [,1:4]) <br />Package kernlab<br />Irisデータ<br />150x4 ,3class<br />ガウスカーネルのパラメータσを作成<br />ガウスカーネルで<br />カーネル主成分分析<br />元のデータで散布図<br />主成分で散布図<br />
  17. 17. カーネル主成分分析の結果<br />元のデータ<br />主成分<br />クラスタ数が3つであることが示唆される。<br />元のデータ<br />主成分<br />主成分分析<br />バラツキ<br />バラツキ<br />
  18. 18. 最大の問題点<br />Kの数はどうやって選ぶの?<br />カーネル主成分分析<br />ギャップ統計量<br />
  19. 19. できれば機械的に見積もりたい<br />
  20. 20. 最適なクラスタ数を推定する<br />統計量を導入しよう!<br />
  21. 21. 評価関数Lは?<br />
  22. 22. 評価関数Lは?<br />4クラスタデータに対する各クラスタ数K毎の<br />K-平均法後の評価関数の値<br />評価関数L<br />クラスタ数K<br />
  23. 23. クラスタ数K=データ数nの<br />時に評価関数は最小になる。<br />
  24. 24. そこで、クラスタ数Kが増加しても<br />評価関数Lが下がらないようにしよう<br />
  25. 25. ギャップ統計量<br />
  26. 26. ギャップ統計量のアイデア①<br />クラスタを正しく分割すると評価関数Lは大きく下がる。<br />クラスタを分割しすぎても評価関数Lは大きく下がらない。<br />正しいクラスタ数K’ = 3の場合、<br />K = 2 < 3 = k’<br />K = 3 = 3 = k’<br />K = 4> 3 = k’<br />本来異なるクラスタを同一のクラスタから別のクラスタとして分けると、評価関数は大きく下がる!<br />同一のクラスタのデータをさらに分割しても評価関数は大きく下がらない。<br />
  27. 27. ギャップ統計量のアイデア②<br />クラスタ数が1、クラスタ構造を持たないデータの<br />評価関数Lの減少と比較することで、正規化する。<br />比較<br />同一範囲内の一様乱数<br />元のデータ<br />
  28. 28. ギャップ統計量<br />ランダムなデータと比較した評価関数L<br />Gkが最大値になるK<br />=データのクラスタ数<br />ギャップ統計量Gk<br />ギャップ統計量<br />同一範囲内の<br />一様乱数<br />元のデータ<br />クラスタ数K<br />
  29. 29. Rでギャップ統計量を使ってデータのクラスタ数を推定する<br />> library(SLmisc)<br />> x <- iris[,1:4]<br />> gap <- c()<br />> for (i in 1:20){ <br />+ kg <- kmeansGap(x)<br />+ nc <- length(kg$cluster$size)<br />+ gap <- c(gap,nc)<br />+ }<br />> par(ps=16)<br />> plot(table(gap),xlab="k : num. of clusters",ylab="freq.")<br />Package SLmisc<br />やっぱりIrisデータ<br />150x4 ,3class<br />ギャップ統計量を求める。<br />20回<br />くりかえし<br />推定されたクラスタ数を取得する。<br />推定されたクラスタ数のヒストグラムを作成<br />
  30. 30. Rでギャップ統計量を使ってクラスタ数を求めた結果<br />頻度<br />ギャップ統計量によって求められたクラスタ数K<br />
  31. 31. 本日のまとめ<br />K-平均法は、事前にクラスタ数を決めて分類するクラスタリングアルゴリズムである。<br />K-平均法は、クラスタの数の決定に恣意性があり、クラスタ数の決定が問題となる。<br />

×