フルスタックエンジニアを目指す|株式会社ナンバーワンソリューションズ

フルスタックエンジニアを目指す

AI

機械学習の代表的な手法(クラスタリング編part1)

投稿日:

今日から6月になりました!これから梅雨の時期になると思うと少し憂鬱になってきますが今日も元気よく機械学習について書いていきます!
ということで前回までは機械学習の代表的手法である分類問題、回帰問題について書いてきました。今回からはクラスタリングについて書いていきます。

クラスタリングとは?

クラスタリングとはデータの性質、特徴からデータの塊(クラスタ)を作っていく手法のことをいます。これまではあるデータと正解ラベルを学ばせることで未知のデータを分類したり、回帰したりしてきました。世に言う教師あり学習です。しかしクラスタリングは正解ラベルを使わず、データの性質から判断してデータの塊を作っていきます。教師なし学習といわれるものですね。
今回はそんなクラスタリングの中でも代表的な手法であるk-meansを使った実装方法を紹介していきます

k-meansを用いてのクラスタリング

今回はこれもよく機械学習irisデータセットを用いて確認していきます。当ブログ内でも何回か使っていますね。これまでは教師あり学習のデータとして使ってきましたが今回は正解ラベルを使わずに分類できるかを試してみます。
ではそもそもk-meansとは何であるのか?k-meansはクラスタ数をあらかじめ指定して、漸進的にクラスタ化を進めていく手法です。
①各点にランダムにクラスタを割り当てる。
②クラスタの中心を計算する。一般的にはデータ点の算術平均を用いることが多い。
③クラスタを、一番近い重心のクラスタに変更する。
④変化がなければその時点で終了します。変化があるときは 2.に戻て続ける。
となかなか文字で説明するのは難しい内容です。以下のページに図付きで説明が掲載されているので参考にどうぞ。
http://tech.nitoyon.com/ja/blog/2009/04/09/kmeans-visualise/

Pythonで実装および結果の可視化

では早速実装してみましょう

なんて簡単!!irisデータは3種類のあやめのデータを扱っているのでn_clustersを3で指定します。デフォルトは8となっています。
では結果を見ていきましょう!!

以下が結果のグラフとなります。一部重なっているところもありますが概ねきれいに分かれているようにも見えます。

ではさらに詳しく見ていきましょう。本当にあやめの種類ごとに分かれているのか。今回のデータは教師あり学習にも用いられるように正解ラベルが存在しています。クラスタ結果と照らし合わせてみましょう。

結果は以下のようになりました
[[ 0 50 0]
[ 3 0 47]
[36 0 14]]
上からsetosa、versicolor、virginicaで左からvirginica、setosa、versicolorとなってます。setosaはきれいに分類されていますね。virginicaとversicolorの分類は一部が混ざってしまっています。

今回はクラスタリングの説明と実装方法についてでした。次回はk-means以外の手法について紹介できればと思います。

-AI

Copyright© フルスタックエンジニアを目指す , 2019 All Rights Reserved Powered by STINGER.