KMeansで何ができるの?
こんにちは!EMです^^
だんだん春も近づいてきましたね~!
こちらでは雪も解けてきて、気温もプラスの日が続いてポカポカです!
それでは今日もさっそくKMeansについて学んでいきましょう!
KMeansってどんな役割なのか?
前回の例では、KMeansを使ってうまく4つのクラスターを色で分ける事ができました。
ただ、もっと複雑なデータを扱ったときにも、KMeansを使って
客観的なグループ分けが出来るのでしょうか?
KMeansをもう少し掘り下げて理解していきましょう。
このモデルは、K(n_clusters)の特別な点をデータに適合させています。
これらの点は、それぞれのグループに対してラベルをつけていきます。
この点は「センター」と呼ばれ、それぞれがデータのクラスターの真ん中に
配置されます。
最適なセンターを見つけるアルゴリズムの中身は、めちゃくちゃ複雑です。
より詳細を知りたい方は、こちらのURLを参考にしてください。
https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm
データポイントXのラベルを予測するときは、1番近い中心と同じラベルに
割り当てます。
前回のデータでKMeansモデルを再実行した場合、今回は中心をプロットしました。
points_per_class = 100
mean = [5,5]
cov = [[1,0],[0,1]]
x_one = np.random.multivariate_normal(mean, cov, (points_per_class))
mean = [-5,-5]
cov = [[1,0],[0,1]]
x_two = np.random.multivariate_normal(mean, cov, (points_per_class))
mean = [4,-2.5]
cov = [[0.25,0],[0,0.25]]
x_three = np.random.multivariate_normal(mean, cov, (points_per_class))
mean = [-6,2.5]
cov = [[0.25,0],[0,0.25]]
x_four = np.random.multivariate_normal(mean, cov, (points_per_class))
X = np.concatenate((x_one,x_two,x_three,x_four),axis=0)
#Specify the model
k_means_model = KMeans(n_clusters = 4)
k_means_model.fit(X)
#Annotate the data points with the KMeans prediction
Y = k_means_model.predict(X)
#Plot
plt.scatter(X[:, 0], X[:, 1], c=Y, edgecolor='k')
#Plot the K centers
plt.scatter(k_means_model.cluster_centers_[:, 0],k_means_model.
cluster_centers_[:, 1], c='red',marker="*",s=200)
plt.show()
各センター(赤い星)がクラスターの中央に割り当てられましたね。
一例として、データラベルの割り当てを変えて、2つのセンターを調整してみましょう。
#Change the center locations (finds a bad fit)
k_means_model.cluster_centers_ = np.array([[ 4.93629851, 4.86487333],\
[-0, -6],\
[ 3.98048973, -2.49005718],\
[-0, -4]])
#Annotate the data points with the KMeans prediction
Y = k_means_model.predict(X)
#Plot
plt.scatter(X[:, 0], X[:, 1], c=Y, edgecolor='k')
#Plot the K centers
plt.scatter(k_means_model.cluster_centers_[:, 0],k_means_model.
cluster_centers_[:, 1], c='red',marker="*",s=200)
plt.show()
これで、左上のセンターが近づいたため、左下のクラスターのデータの一部が
新しいクラスター(その真上のクラスターと同じ)に割り当てられます。
今回の図では、上記のクラスタリングはあまりにも不自然ですが
もっと複雑なデータを使って、線引きがきれいに出来ない際に、センターを調整して
様々な角度でグループ分けをする時にとても便利です。
クラスタリングは、ビジネスの場面でもよく使われます!
クラスタリングについては、次回も取り上げようと思いますが
もっと実践に近い内容を学びたい!という方には、めちゃくちゃこのコースが体系的でおススメです。
↓↓
これは、実践のビジネスの場でデータを使えるように指導してくれる、社会人の為の講座です!
ぜひサイトや無料説明会等で情報を見てみてくださいね^^
また詳しくは簡単にメリットデメリット等もまとめているので
よかったら下の記事も参考にしてください^^
よかったら下の記事も参考にしてください^^
最後まで読んで頂きありがとうございました。