Mahoutで体感する機械学習の実践

第4回顧客に合わせた施策で高い効果を狙う

顧客に合わせて施策を行う2つのマーケティング手法

マーケティングにおいては、実際の予算や機会は限られているため、実施する施策には効果の高さや費用対効果の高さが求められます。そのような要求を満たすために有効な手段の1つとして、顧客をよく知り、顧客に合った施策を実施することが挙げられます。

たとえばDMを送る場合には、すべての顧客に同じ内容、同じタイミングで送るよりも、顧客に合わせて送る内容や、送るタイミングを変えるほうが、より高い効果が期待できます。

では、具体的にはどのような手法があるのでしょうか。

顧客の分析粒度の観点からは、大きく以下の2つの手法に分けることができます。

1 One to Oneマーケティング

1つ目は、顧客一人一人の特性を把握し、その顧客に施策を最適化する「One to Oneマーケティング」です。

One to Oneマーケティングは、顧客一人一人の特性に合った施策を実施するため、高い効果が期待できます。しかし一方で、以下のような課題もあります。

  • 顧客一人一人に対応する分、施策によっては非常に高いコストがかかる
  • 顧客の数が膨大である場合、すべての顧客に対応することが難しくなる

2 セグメンテーションマーケティング

2つ目は、顧客を似た者同士のグループにまとめて、そのグループの特性に適した施策を行う「セグメンテーションマーケティング」です。

セグメンテーションマーケティングは、顧客データや、利用する指標によってはうまくグルーピングできないという問題があります。しかし、うまくグループ化できれば、顧客の特性にあった施策を、One to Oneマーケティングより少ないコストで実施できるというメリットがあります。

このセグメンテーションマーケティングにおいて、似た者同士をグループ分けして分析する手法を「セグメンテーション分析」と呼びます。セグメンテーション分析で利用する指標は、目的によってさまざまですが、よく利用されるのは以下のものです。

  • RFM ⇒ 購買履歴における最終購買日(R⁠⁠、購買回数(F⁠⁠、購買額(M)
  • 生活スタイル ⇒ 性格、趣味、習慣
  • 生活ステージ ⇒ 年齢、職種、役職、家族構成

上記のうち、今回はRFMを利用してセグメンテーション分析を行ってみましょう。

セグメンテーション分析を実現する「クラスタリング」

似たもの同士をグループ分けするための手法として、機械学習でよく使われるのが「クラスタリング⁠」です。クラスタリングは、図1のように、与えられたデータ群を、特定の指標を元にグループ分けする形で行います。

図1 与えられたデータ群を、特定の指標を元にグループ分けする
図1 与えられたデータ群を、特定の指標を元にグループ分けする

このように、クラスタリングは与えられた分析対象のデータのみを元に分析するため、教師あり学習/教師なし学習の2つの分類で考えると、教師なし学習に属する分析手法です。

今回の例では、各顧客のRFMを指標とし、顧客を似た者同士のグループに分けることになります。

※)
分散処理などを目的に、計算機を並列に複数台稼働させるネットワーク構成も「クラスタリング」と呼びますが、ここでの「クラスタリング」とは別の意味になります。

クラスタリングアルゴリズムの2つの分類

クラスタリングにはさまざまなアルゴリズムがあるのですが、大きく以下の2つの観点で分類することができます。

1 階層的クラスタリングと非階層的クラスタリング

たとえば「住所」を指標として顧客をクラスタリングする場合を考えてみましょう。横浜在住の人は、⁠横浜」というクラスタに属します。そして同時に「神奈川」クラスタ、⁠関東」クラスタにも属します。

このように、あるクラスタが別のクラスタに属する階層関係を構築する手法を「階層的クラスタリング」と呼びます。

図2 階層的クラスタリング
図2 階層的クラスタリング

一方、前述の図1のように、すべてのクラスタがそれぞれ独立し、階層関係を構築しない手法を「非階層的クラスタリング(または分割最適化⁠⁠」と呼びます。

両者を比較すると、階層的クラスタリングは図2のようなデンドログラムを用いて階層を視覚化することで、⁠上位のクラスタと下位のクラスタの関係やクラスタ間の距離が直感的に捉えやすい」というメリットがあります。

その反面、利用するアルゴリズムによって程度の差はあるものの、おもに以下のデメリットがあります。

  • 計算量が多くなる
  • 生成された複数の階層の中から、どの階層を採用するか判断する必要がある
  • ノイズデータに弱い

一方で、非階層的クラスタリングは高速なアルゴリズムが多く、階層として表現されないため、⁠クラスタが明確に表現される」というメリットがあります。しかし、生成するクラスタ数、もしくはクラスタ生成に利用する距離などを分析者が明示する必要があり、その値次第で出力が大きく異なってしまうというデメリットがあります。

2 排他的クラスタリングと非排他的クラスタリング

今度は、商品を「カテゴリ」という観点でクラスタリングする場合を考えてみましょう。ミステリー小説は、⁠フィクション」「ミステリー」という複数のクラスタに同時に属します。

このように、あるデータが複数のクラスタに属する場合があるクラスタリング手法を「非排他的クラスタリング(またはソフトクラスタリング⁠⁠」と呼びます。

図3 非排他的クラスタリング(ソフトクラスタリング)
図3 非排他的クラスタリング(ソフトクラスタリング)

一方、前述の図1のように、あるデータが必ず1つのクラスタにしか属さない手法を「排他的クラスタリング(またはハードクラスタリング⁠⁠」と呼びます。

排他的クラスタリングと非排他的クラスタリングを比較すると、複数のクラスタに属することを認める非排他的クラスタリングのほうが、計算量は多くなる傾向にあります。一方、非排他的クラスタリングのほうが、排他的クラスタリングよりも柔軟に分類結果を出力する傾向があります。

高速なクラスタリングを実現する「K-means」

実際の分析時には、各アルゴリズムの特徴を考慮したうえで、分析の目的や分析データの性質に合わせて選択する必要があります。

今回のRFMによるセグメテンーション分析では、顧客データが大量になることが予測されます。この特徴をもとに、アルゴリズムの2つの観点から向いているものを考慮すると、以下のようになります。

階層的クラスタリング/非階層的クラスタリングの観点
⇒非階層的クラスタリング
排他的クラスタリング/非排他的クラスタリングの観点
⇒排他的クラスタリング

今回は、この要件を満たすアルゴリズムの中でも代表的なものである「K-means(K-平均法⁠⁠」を利用することにします。

K-meansは、以下のようにしてクラスタを生成します。

図4 K-means(K-平均法)
図4 K-means(K-平均法)
  1. k個(図の例では2個)の重心点をランダムに配置する図4-1
  2. 各点は、自分から最も近い重心点のクラスタへ、属するクラスタを変更する図4-2
  3. クラスタに属する点から各クラスタの重心点を再計算し、重心点を移動させる図4-3
  4. 上記2における所属クラスタの変更がなくなるまで、2からの処理を繰り返す図4-4

K-meansはシンプルなため高速に動作し、汎用的に利用できるのが特徴です。そのため、非常に広く利用されています。しかし、以下の2つの問題があります。

  • 生成するクラスタの数を明示的に指定する必要がある
  • 初期の重心点がランダムであるため、実行の度に結果が異なる場合がある

前者は、分割したいクラスタの数が最初から決まっている場合は問題ありませんが、⁠データの内容から、自動的にクラスタの数を判断してもらいたい」といった場合には対応できません。

後者は、安定した結果を求めるために、クラスタ生成を複数回実行するなどの対策が必要になってきてしまいます。

K-meansの問題点を解決する「Canopyクラスタリング」

これらの問題は、生成するクラスタ数と初期の重心点の適切値を事前に求めることができれば解決します。それを実現するのが「Canopyクラスタリング」です。

Canopyクラスタリングを実行する際は、最大距離(T1)と最小距離(T2)と呼ばれる2つの値を指定します。Canopyクラスタリングは、以下のように動作します。

図5 Canopyクラスタリング
図5 Canopyクラスタリング
  1. ランダムに一点を選ぶ図5-1
  2. その点から半径が最小距離(T2)未満にある点を削除する図5-2
  3. その点から半径が最小距離(T2)以上、最大距離(T1)未満にある点を同一Canopy(クラスタ)に所属させる図5-3
  4. そのCanopyに属する点の重心を抽出する図5-4
  5. 点がすべて削除されるか、Canopyに属さない点がなくなるまで、1から繰り返す

このように、Canopyクラスタリングは指定された最小距離以上、最大距離未満の大きさを持つクラスタを生成することで、適切と思われるクラスタの数と、クラスタごとの重心を推定します。

ここから得られたクラスタ数とその重心をK-meansに渡すことで、K-meansの2つの問題点を解決することができます。

Canopyクラスタリングは、K-meansだけでなく、クラスタ数を指定しなければならないクラスタリングアルゴリズムの前処理として多く利用されます。

次回はMahoutを用いて、CanopyクラスタリングとK-meansを利用した顧客のセグメンテーション分析を行います。

おすすめ記事

記事・ニュース一覧