大人になってから学ぶ機械学習_クラスタリング
前書き
社内のエンジニア向けの勉強会でクラスタリングについて発表する機会がありました。手元に良い資料がなかったので、大学時代の授業の資料を参考にしながら数式を省いたものを発表しました。自身の専門分野や興味のある分野以外を学び直す機会は少ないので、復習できる良い機会になりました。今回はクラスタリングに関する用語、やりたい事、アプローチなどをまとめていこうと思います。
クラスタリング概要
多くのデータが存在する場合、類似したデータをまとめることで全体の傾向を把握しやすくなることがあります。データをまとめる方法として男性・女性などの性別、年齢や品種など人が決めた基準でまとめる方法もありますが、クラスタリングではあくまでデータ基準で類似しているか否かを判断します。主観が絡まないため分析前には想像していなかった集合を見出すこともできます。
用語の説明
-
クラスタ
類似したデータ(オブジェクト)の集合のことをクラスタと言います。類似しているか否かの基準は様々ありますが人が主観で決めたまとまりとは異なります。 -
クラスタリング
クラスタを作る(類似したデータをまとめる)作業のことをクラスタリングと言います。 -
クラスタ分析
クラスタリングを利用した分析のことをクラスタ分析と言います。クラスタリングをする前のデータの前処理から結果の解釈までを含みます。クラスタリングと同じ意味で使われることもありますが、厳密には異なります。
クラスタリングとやりたい事
"膨大な量のデータを全て見るのは難しい"という前提があります。クラスタリングでやりたい事は類似したデータは同じクラスタに、類似しないデータは別のクラスタになるようにデータをまとめることです。
では、クラスタリングをする(類似するデータをまとめる)目的は?というと1つだけでなく、様々な理由があります。
少し考えるだけでも
- 他の用途のための準備(前処理)
データの分割、類似したデータの学習データの作成など - マーケティングへの活用
客層の把握など - 可視化
など様々な理由がります。
クラスタリング手法
クラスタリングでやりたいことは類似したデータをまとめることと説明しましたが、データが類似しているか否かはどのように表現すれば良いでしょうか?実はデータをまとめる基準、分ける基準は複数あり、この数の分だけクラスタリングの手法も存在します。
クラスタリングのアプローチの分け方は様々ありますが、この記事では分割方式、階層化、密度ベース、モデルベースの4つに分けて説明していきます。
分割方式
最もオーソドックスなアプローチとして、手元にあるデータを特定の個数のクラスタに分割していくアプローチがあります。代表的な手法として、k-means(k-平均方)、k-medoid、混合ガウス分布(Gaussian Mixture Model)によるクラスタリングが存在します。データを何個のクラスタに分割すれば良いか?は自明でなく、ユーザーが決める必要があります。複数のクラスタ数で実行し、特定の指標を見て決める手法も存在します。
階層化
データを階層的に分解していくアプローチがあります。データ数が多くなるほど計算量が多くなるという問題点があり、情報系の人はあまり使わない印象があります。結果が把握しやすいためか、データ数が比較的少ない社会科学系の人によく使われる手法となっています。
密度ベース
密度を基準にクラスタを作成するアプローチも存在します。分割方式では事前にクラスタ数を決めなければなりませんが、密度ベースのアプローチでは"事前にクラスタ数を決めなくて良い"というメリットがあります。代表的な手法にDBSCANがあります。
モデルベース
クラスタリングに機械学習モデルを活用する方法も存在します。代表的な手法として自己組織化マップが存在します。
まとめ
類似したデータまとめる手法としてクラスタリングが存在ます。データ間の類似度をベースにまとめていくので人の主観に左右されない集合を作ることができます。分析結果の応用も様々で、幅広い分野の人に活用されています。
様々なアプローチも存在し、それぞれの手法ごとに利点と欠点が存在します。
今後機会があれば、それぞれの手法ごとの詳細な説明も書いていこうと思います。
Discussion