クラスタリング

こんにちは!EMです^^

 

今回はクラスタリングについて解説していきます!

 

クラスタリング


クラスタリングとは、似たようなデータを同じグループに入れるモデルの適合です。

分類(従属カテゴリ変数を含むモデルの適合)は、クラスタリングの形式と
考えることができます。

ここでは、同じ従属変数ラベルを持つすべての点を同じグループに配置していきます。

カテゴリラベルに加えて、類似性の尺度は色んな方法で分ける事が出来る
可能性があります。

例えば、身長や顧客の消費習慣に基づいて人をグループ化する事もあります。

次の章でも触れていきますが、合理的なクラスターが何であるか
分かりやすい概念についても見ていきましょう。

 

 

 

 

ラベルなしデータのクラスタリング

 

次に、ラベルのないデータをクラスター化する方法を見ていきます。

基本的に、これはラベルのない(答えのない)データを同じグループに分割すること
を意味します。

データに予めラベルが付けられている場合、グループ分けは簡単でしょう。

まず、いくつかのラベルのないデータを作成していきましょう。

今回は視覚化しやすいために、2次元に制限します。

 

points_per_class = 100
#クラスタの個数kを指定しなければならない↑

#Generate four clusters.
mean = [5,5]
cov = [[1,0],[0,1]]
x_one = np.random.multivariate_normal(mean, cov, (points_per_class))
y_one = np.full*1
y_two = np.full*2
y_three = np.full*3
y_three = np.full*4
y_four = np.full((points_per_class),0)

X = np.concatenate((x_one,x_two,x_three,x_four),axis=0)
Y = np.concatenate((y_one,y_two,y_three,y_four),axis=0)

#Plot the data
plt.scatter(X[:, 0], X[:, 1], c=Y, s=20, edgecolor='k')

plt.show()
 
 

f:id:tennisfashionista:20210227025154p:plain

 
 
各データポイントのクラスラベル(色)はありませんが
パッと見てデータが分割していることが分かります。
4つのクラスターがあり、それぞれがデータの異なるクラスだといえるでしょう。
 
 
#ラベルを加える
y_one = np.full((points_per_class),1)
y_two = np.full((points_per_class),2)
y_three = np.full((points_per_class),3)
y_four = np.full((points_per_class),4)

Y = np.concatenate((y_one,y_two,y_three,y_four),axis=0)

#Plot
plt.scatter(X[:, 0], X[:, 1], c=Y, s=20, edgecolor='k')
plt.show()
 
 
 

f:id:tennisfashionista:20210227025939p:plain

 
 
上記の例は簡単に分割でき、データを視覚化できたので、かなり明確な境目がありました。
 
しかし、実際のデータはもっと判別がつきにくいものが多いです。
 
次回は少しまぎらわしい例も併せてみてみましょう。
 
 
 
もっと本格的に勉強したい!という人は、ぜひ現役プロの力を利用して
効率的に勉強する事をオススメしています。
 
 
 
 
ぜひ無料説明会等で話を聞いて、検討してみてくださいね^^
 
 
最後まで読んで頂きありがとうございました。

*1:points_per_class),0)


mean = [-5,-5]
cov = [[1,0],[0,1]]
x_two = np.random.multivariate_normal(mean, cov, (points_per_class

*2:points_per_class),0)


mean = [0,0]
cov = [[0.25,0],[0,0.25]]
x_three = np.random.multivariate_normal(mean, cov, (points_per_class

*3:points_per_class),1)


mean = [4,-2.5]
cov = [[0.25,0],[0,0.25]]
x_three = np.random.multivariate_normal(mean, cov, (points_per_class

*4:points_per_class),0)


mean = [-6,2.5]
cov = [[0.25,0],[0,0.25]]
x_four = np.random.multivariate_normal(mean, cov, (points_per_class