データを眺めるだけでは、何も見えてこないときに何かきっかけが欲しいですよね。そんな時に、クラスタリングという手法があります。クラスタリングとはデータを似た者同士でグループ分けする手法のことです。
クラスタリングには、様々な手法がありますが、それぞれのクラスタを見ることでデータを眺めるだけでは分からなかった属性や分け方が見えます。その属性にアプローチすることで売り上げが上がったり、新たな分析の観点が生まれるでしょう。
また、クラスタリングは機械学習での分類(クラス分類)とは異なり事前に正解データを準備する必要がないため、非常に手軽に行えます。ぜひ今回の記事を読んで、データを違う角度から見られるようにしましょう。
そこで今回は、クラスタリングの意味や利用方法についてお伝えします。
クラスタリングとは
クラスタリングとは、データの類似度に基づいて、データをグループに分けることです。分けられたグループのことをクラスタと呼び、同一クラスタ内においては、似たような特徴を有しています(内的結合)。逆に異なるクラスタにおいては異なる特徴を有しています(外部結合)。
またクラスタリングは、機械学習における教師なし学習の1種です。教師なし学習とは、教師あり学習と対で用いられる用語です。教師あり学習は、正解のデータを一部使い残りの未知のデータを分類したりする手法のことです。教師なし学習は教師あり学習とは異なり、正解となるデータを用いずに、データから共通する特徴を持つグループを見つけたりする手法のことです。機械学習を行うときに、クラスタごとの分布などを見て、学習データがあるクラスタに偏っていないかを確認することで、汎用性の高い学習ができるようになります。
クラスタリングは、分けられたクラスタを見ることで、データの特徴をつかめるため、データの概観を手軽に把握するために非常に有用です。ただし、直感的にこういうグループ分けになったのだと自分では把握しやすい一方で、その客観的な妥当性を他者に説明するという点においては別に相関分析や回帰分析を行う必要があります。
※詳しくはこちらでも説明しています
クラスタリングの種類
クラスタリングの種類は大きく分けて、階層的クラスタリング(hierarchical clustering)と非階層的クラスタリング(non-hierarchical clustering)に分けられます。この2つの手法の違いは、クラスタ数を指定するかどうかです。
階層的クラスタリングはデータの類似度からいくつかのクラスタに自動的に分類されます。逆に、非階層的クラスタリングは自分でクラスタ数を決めてそのクラスタ数になるようにクラスタリングを行います。
階層的クラスタリング
階層的クラスタリングは、最も似ているデータ同士を1つずつ順番にグループ化し、そのクラスタまたはデータに最も似ているデータをグループ化します。それらを繰り返し行うことですべてのデータが分類できると、クラスタリングが完了します。最終的には樹形図のようなものが出来上がるイメージです。
階層的クラスタリングのメリットは、クラスタ数を指定する必要がないため簡単に実施ができて、結果が理解しやすい点です。逆にデメリットは、データが多いと時間がかかることです。1つ1つのデータを比べていくことになり、それらをすべて繰り返していくので、データ数が多くなると非常に時間がかかってしまいます。そのため、データ量が少ない場合等に有用です。
非階層的クラスタリング
非階層的クラスタリングは、クラスタ数を自分で決め、そのクラスタ数になるように分割を行った結果、評価関数(最も適切に分割ができたかどうかの評価の値のこと)が最もよくなるようにクラスタリングを行う手法のことです。
メリットは、データ量が多い場合でも計算速度が速いためクラスタリングを行うことができることです。デメリットは、クラスタ数を自分で決める必要があり、最適なクラスタ数を自分で探す必要があることです。クラスタ数はいくつか試して検証をする必要がありますが、データを見るだけでは気づかないような分け方から新たな気付きがあります。
クラスタリングの活用事例
クラスタリングはビジネスの場で様々利用されています。代表的な事例をいくつか紹介しましょう。
マーケティング調査
ヴァリューズが行った「料理クラスタリング分析」では、モニターにアンケート調査を行い、クラスタリングを行い、データの特徴から、5つのクラスタに分けました。その中から、「年齢層が若く、料理好き」「料理に苦手意識がある」という層のWebでの行動を掛け合わせてみると、他の方と比べてよく見るサイト・アプリランキングはブログやクチコミサイトの閲覧が多く、レシピアプリの利用状況が高く現れ、日頃から料理アプリでレシピを確認して料理をしていることがわかりました。
そしてこの層は「Instagram」を利用していると考え、「Instagram」を用いてアプローチをするというマーケティングを行うことと決定しました。
アンケート分析
2つ目は「アンケート分析」で、カメラをWebで販売している企業の口コミレビューを分析した事例です。男性の月別のレビューで使われた言葉について、クラスタリングをしたところ、3月に「最新」「画素数」という言葉が非常を多く使っている層が非常に多かったため、3月は最新のカメラの在庫を増やすようにして売り上げを向上させました。
クラスタリングを行う方法
クラスタリングを行うためには、Pythonというプログラミング言語を利用するのが非常に便利です。理由としては、階層的クラスタリング、非階層的クラスタリングを行うためのライブラリが用意され、0からコードを書く必要がなく容易にクラスタリングをおこなえるためです。
実際に階層的クラスタリングを行うためには、Scipyというライブラリを利用すれば簡単に始められます。
手順としては、scipy.cluster.hierarhyからlinkageをimportします。その後分析したい項目を変数として宣言します。scipy.cluster.hierarchy.linkageの第1引数に宣言した変数、第2変数として、データ間の距離の測り方(類似度の測り方)、第3引数にどの分析法を使うかを指定すればよいでしょう。
非階層クラスタリングについては、scikit-learnというライブラリを利用すればよいでしょう。Sklearn.clusterからKMeansをimportしましょう。その後、Kmeansの第1引数に、クラスタ数を指定しましょう。分析したいデータを変数として宣言して、fit_predictに渡せばk-meansを実装できます。どちらも、Scipyおよび、scikit-learnのドキュメントを読めばすぐに実装可能です。
クラスタリングをスムーズに行うためのポイント
クラスタリングをスムーズに行うためのポイントは3つあります。
1つ目は、クラスタリングの手法の特徴によって使い分けることです。データが数万データあるのに、階層的クラスタリングを選択してしまうと非常に時間がかかってしまい、適切な分析ができません。逆に、k-means法で1種類のクラスタ数だけでクラスタリングを実施して結果を解釈してしまうなどです。
クラスタリングはそれぞれの手法で得意なこと、不得意なことがあるため、それらを理解したうえで手法を選択しましょう。
2つ目は、分析対象のデータや属性などがすべて明確に整備することです。これは、データ分析における基本なのですが、データをすぐに分析できるように準備をすることで、分析をスムーズに行えます。このため、例えば分析したい変数をID情報とともに保持するようにしましょう。
3つ目は、分析をする際に欠損値があるデータ(データの一部がないデータ)や外れ値を除去することです。欠損値や外れ値を含むデータで分析を行ってしまうと、想定外の結果(欠損値や外れ値を除去して行ったクラスタリング)と別の結果が出てしまい、適切な分析ができないことがあります。対策としては、データ収集時から欠損値が出ないように収集することが重要です。
さて、今回は、クラスタリングの意味や手法についてお伝えしました。
- クラスタリングとは、データを似た者同士でグループ分けする手法のこと
- クラスタリングの種類には、階層的クラスタリングと非階層的クラスタリングがある
- クラスタリングの活用事例には、マーケティング調査やアンケート分析などがある
- 階層的クラスタリングを行うためには、Scipy、非階層クラスタリングはscikit-learnを用いると容易に実装できる
- クラスタリングをスムーズに行うためのポイントには、クラスタリングの手法の特徴の把握、分析対象のデータや属性などがすべて明確に整備されていること、分析をする際に欠損値があるデータ(データの一部がないデータ)や外れ値を除去されていることがある
マーケティング分析やアンケート調査など様々な場面でクラスタリングから新たな視点が見えることがあります。皆さんもいろいろなデータでクラスタリングを行いましょう。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。