Alteryxでk-means
こんにちは、小澤です。 今回はAlteryxでk-meansを使ってクラスタリングをしてみます。
k-meansとは
データを事前に決めておいたk個のクラスタに分けるための手法です。 データの持つ特徴を見てk個に分けるため、教師なし学習に分類されます。
どのような性質を持っているデータかを確認するなどに役立ちますが、 教師なし学習ではどのような結果が正解であるかを人間が定義しないため、結果から適切な意味づけを読み解く必要があります。 また、クラスタの分け方も想定していたものと異なる基準による結果となる場合もあります。
クラスタリングでk-meansを使う際には、 何個のクラスタに分けるかは事前に決定しておく必要があるのと、結果が乱数に依存するという2点には注意が必要です。
k-meansが何をしているか
k-meansの動きについて簡単に解説します。
- 初期値のクラスタの中心をランダムにk個決める
- 各データを表す点はk個のクラスタのうち最も近いものに所属させる
- 所属しているデータ点でつくられる空間の中心を求め、クラスタの中心を更新する
- 変化がなくなる(収束する)まで2~3を繰り返す
となります。最初にランダムにクラスタの中心を決めるためどこに置かれるかによって最終的な結果にも影響があるというわけです。 この流れを図で表したの下のものになります。
Alteryxで使う
Alteryxにはk-meansのサンプルがあるので今回はそちらを利用します。サンプルは
Samples Workflows > Predictive Analytics > 16 K-Centroids Cluster Analysis Sample
を利用します。
ワークフローの内容を見ていただくとわかる通り、非常に簡単に利用することができます。 今回のサンプルはk-meansでクラスタの計算を行うK-Centroid Cluster Analysisツールと各データがどのクラスタに属するかの情報を追加するAppend Clusterツールの2つになります。
まず、K-Centroid Cluster Analysisツールを利用して計算を行います。
基本的な使い方は非常に簡単です。 まず、Fieldsでクラスタリングを行う際に利用する特徴を選択します。 Number of clustersでクラスタ数kを決めています。Number of starting seedsに入れた値で乱数のシードを設定しています。
その他、Clustering methodの項目を見ていただくとk-means以外にもいくつかの手法を選択できることがわかるかと思います。
クラスタリングを行った結果は下の図のように出力され、確認することができます。
次にAppend Clusterツールを利用して各データがどのクラスタに所属するかを見てみます。 k-meansの結果を元のデータを入力としています。設定項目は項目名のみとなります。
サンプルではSelectツールを利用して、最終的な出力はStoreとこのクラスタ情報のみに絞っています。
この結果を見て、どの傾向が似ている店舗やそれぞれがどのような特徴があるのかなどを判断していくことになります。 このように、結果は"何らかの"の基準に基づいてクラスタリングされたものになっていますが、その結果をどのように解釈するかやどのように利用するかは人間の判断に委ねられています。 クラスタリングの結果に基づいて何かしらの施策を行ったり、さらに深堀した分析を行うための足がかりとして利用することになります。
終わりに
今回はAlteryxでk-meansを利用してクラスタリングを行いました。
クラスタリングのような教師なし学習は明確な正解を与えないため、どのような結果となるかは完全に機械に委ねられることになります。 しかし、それを利用するのは人間となるため、結果からどういったことがわかるかという部分についての解釈も必要になります。
データのおおまかな傾向を掴みたい場合や、想像していなかった切り口でのデータの性質を発見するなどといった時に便利なことも多いですが、決して教師データが必要ないから教師あり学習よりも優れているというわけではありませんので、状況に合わせて適切な手法を選択していくことが重要になります。