ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

いくつにグループ分けしたらいいか分からないとき、グループ分けし、その根拠を探る方法-(1)

2015-04-13 13:53:24 | AI・BigData
これ、書いたっけ?

商品などを、いくつかにグループ分けしたい。
ただし、いくつにグループ分けしたらいいか分からない。
また、グループ分け後、どういう根拠でグループ分けしたかも知りたい

というとき、どうするか?




■なにが、問題なのか?

商品などをグループ化するには、k-meansに代表される、
非階層型クラスタリングを用いる。
 しかし、非階層型クラスタリングを用いると、
   いくつに分けるか、あらかじめ決めないといけない
   クラスタリングしても、そのように別れる根拠はわからない
 という2つの問題がある。

■ときかた
 問題に対し、
   ・はじめに階層型クラスタリングを行い、図から
    いくつに分けるか判断する
   ・別れる根拠(=分類した理由)を示してくれる決定木を使う
 ということを行う。

手順としては
・データを用意する
・階層型クラスタリングを行い、何個に分けるか決める
・決めた数で非階層型クラスタリングを行う
・データの最後に、どのクラスタか、クラスタ番号を入れる
・決定木を行う(独立変数はクラスタ変数(bunrui))

■Rだと

#商品データ作成:shodata.csv
library(psych)
mydata<-read.csv("shodata.csv",header=T,sep=",")
mydata

#階層型クラスタに分ける
kyori <- dist(mydata, method = "euclidean")
hcl <- hclust(kyori)
plot(hcl)

#ここで、図が表示される

#今回は5個に分けると決めた

#非階層型クラスタに分ける
kmeans(mydata,5)

#どうしてこのように分類されるか、決定木にかける
library(rpart)
#shobun1.csvはshohin.csvの各レコード末尾に、クラスタ番号(bunrui)を付けたもの
data<-read.csv("shobun1.csv",header=T,sep=",")
result<-rpart(bunrui~.,data=data,control=rpart.control(minsplit=5, cp=0.01))
par(xpd=T)
plot(result)
text(result)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする