第263話|教師なし学習と教師あり学習を使った「リード(見込み顧客)の受注予測」

第263話|教師なし学習と教師あり学習を使った「リード(見込み顧客)の受注予測」

法人相手のビジネスやECサイト、個別面談を通すようなビジネスなどでは、顧客をIDベースで追えるケースが多いです。

運が良ければ、リード(見込み顧客)の段階で、何かしらデータを得ているケースもあります。法人相手のビジネスなどは最たる例でしょう。その場合、そのリード(見込み顧客)が顧客になる可能性が分かると非常に嬉しいです。対応すべき優先順位の参考にしたりできるからです。

そのためには、リード(見込み顧客)の受注を予測しなければなりません。

このリード(見込み顧客)の受注を予測するためのモデルを、機械学習のアルゴリズムで構築するケースが増えています。

と言うことで、「教師なし学習と教師あり学習を使った『リード(見込み顧客)の受注予測』」というお話しをします。

今回は、少しテクニカルなお話し(アルゴリズムや分析手順など)も登場してきますので、気を付けてください。わけのわからないワードは、飛ばしてください。

「教師なし学習」による顧客理解
教師あり学習」による予測

機械学習のアルゴリズムには、大きく「目的変数のない教師なし学習」と「目的変数のある教師あり学習」があります。他にも、強化学習などありますが、ここでは一旦この2つ「教師なし学習」と「教師あり学習」に絞ってお話しを勧めます。

リード(見込み顧客)の受注予測」をする場合の目的変数は、「受注の有無」です。受注したのか、失注したのかを表す変数です。例えば、受注を「1」、失注を「0」などの数字で表現したりします。受注を表す「1」の確率を予測モデルで、「教師あり学習」のアルゴリズムを使って構築します。

では、「教師なし学習」はどこで使うのか?

教師なし学習」は、例えば、「教師あり学習」で構築する予測モデルを作る前に使ったりします。

例えば、以下のような順番です。

  • 教師なし学習」で顧客理解
  • 教師あり学習」で予測モデル構築

教師なし学習」による顧客理解

教師なし学習」の代表的なアルゴリズムは、例えば以下です。

  • 異常データの検出
  • 主成分分析/因子分析(次元削減・集約)
  • クラスタリング

これらのアルゴリズムを使った顧客理解方法を紹介します。

今回紹介するのは一例です。

異常データを含めるかどうか?

異常検知なども含めた「異常データの検出」のためのアルゴリズムには、どのデータがどのような異常なのかというラベルのある「教師あり学習」と、ラベルのない「教師なし学習」があります。

教師なし学習」による「異常データの検出」は、仲間はずれを探す、という感じです。

例えば、10万レコードのデータセットがあって、ある1レコードだけ他のどのレコードとも全く似ていないのなら異常かもしれない、と考えるということです。

異常スコアのようなものが出力されますので、そのスコアの高いレコードに対し、ありえるデータなのか、ありえないデータなのか、データセットに混ぜるべきか、起こり得ない事例として除外すべきか、を検討する必要があります。

最近では、Random Forest(ランダムフォレスト)ベースのIsolation Forestが、よく利用されている印象があります。他にも、One-class SVMLocal Outlier Factorなど色々なアルゴリズムがあります。

顧客を特徴づける変数は何?

例外的な異常データを取り除いたデータセットに対し、リード(見込み顧客)のデータセット顧客のデータセットで共通する変数を比べます。

例えば、2つのデータセットの分布(量的変数であればヒストグラム)を作り比べ……

  • 同じ分布とみなせるのか?
  • 別の分布とみなせるのか?

……を検討し顧客の特徴を考えていきます。

例えば、ある2つの分布が一致しているかどうかを調べるために、KS検定Kolmogorov-Smirnov testコルモゴロフ・スミルノフ検定)を実施したりします。

別の分布とみなせる変数から順番に、グラフ化しどのような違いが生じていそうかを解釈していきます。

リード(見込み顧客)と顧客の違いから、顧客の特徴を把握することができます。

変数を増やして減らして……

リード(見込み顧客)をグルーピングするために、リード(見込み顧客)のデータセットに対しクラスタリングを実施(クラスター分析)していきます。

その前処理として、例えば……

  • One Hot Encoding
  • 主成分分析/因子分析

……を実施したりします。

One Hot Encodingを実施することで、カテゴリカル変数を0-1データにしていきます。この処理によって、変数の数がそれなりに増えます。

主成分分析因子分析を実施することで、変数の数を減らしていきます(次元削減・集約)。

ここでポイントになるのは、顧客の特徴を表現する変数(厳密には主成分)は削らないようにする、ということです。

リード(見込み顧客)のクラスタリング

次に、リード(見込み顧客)をグルーピング(クラスタリング)するために、クラスタ分析を実施していきます。

クラスタリングアルゴリズムは、階層型でも非階層型でも何でも構いません。

クラスタ分析を実施すると、幾つかのクラスターにリード(見込み顧客)が分類されるかと思います。

そのクラスターの特徴を把握するために、クラスター別に変数を集計し見比べてもいいでしょう。

そこでポイントが1つあります。

それは、先程述べた「2つのデータセットを見比べて把握した顧客の特徴」を持ったクラスターがあるかどうかです。

そのような特徴をもったクラスターがある場合は、次に進みます。無い場合には、クラスタリング方法を再検討してください。クラスター数を変える、アルゴリズムを変えるなどです。

顧客の属するクラスターを予測

いい感じで、リード(見込み顧客)をクラスタリングできたら、次に各顧客がどのクラスターに所属するのかを予測し、各顧客をクラスターに振り分けます

リード(見込み顧客)のクラスタ分析の結果(クラスタリングルール)を使って、顧客を振り分けるということです。

クラスター分析を実施したときに、クラスターを予測するクラスター予測モデルが一緒に構築されているのなら、そのクラスター予測モデルをそのまま使って、各顧客がどのクラスターに属するのか予測します。

クラスター予測モデルが無いのであれば、「教師あり学習」の分類問題系のアルゴリズム(例:ロジスティック回帰など)を使って、クラスター予測モデルを、リード(見込み顧客)のデータセットを使って構築します。

何はともあれ、リード(見込み顧客)のクラスターに、各顧客を振り分けることができるはずです。

振り分けたら、どのクラスターに顧客がより多く振り分けられたのかを分析しましょう。単純に、N数比較でも十分です。

多くの場合、特定のクラスターに多く振り分けられます

その特定のクラスターに属するリード(見込み顧客)は、おそらく顧客になりやすいリード(見込み顧客)です。

そして、その特定のクラスターを特徴づける変数が、リード(見込み顧客)の受注予測モデルを構築するときの、非常に重要な特徴量(説明変数)となることでしょう。

リード(見込み顧客)の受注予測モデルの構築

教師なし学習」による顧客理解の結果を元に、新しい特徴量(説明変数)をデータセットに追加していきます。例えば、主成分などです。

ここで言うデータセットとは、受注の有無を表す変数の付いたリード(見込み顧客)のデータです。

最近では、勾配ブースティング(Gradient Boosting)系のアルゴリズムが、比較的よい結果をもたらします。

さらに、特徴量(説明変数)の重要度(Importance)を出力したり、各特徴量(説明変数)と目的変数の関係性を表現する部分依存(Partial Dependence)プロットを出力したりすることができ、非常に便利です。

おそらく、クラスタ分析の際に実施した分析結果顧客が多く振り分けられたクラスターの特徴)が、特徴量(説明変数)の重要度(Importance)部分依存(Partial Dependence)プロットとして出てきます。

ちなみに、部分依存(Partial Dependence)プロットとは、横軸に各特徴量(説明変数)、縦軸に目的変数で表現したグラフで、各特徴量(説明変数)と目的変数の関係性を視覚的に把握することができます。

今回のまとめ

今回は、「教師なし学習と教師あり学習を使った『リード(見込み顧客)の受注予測』」というお話しをしました。

法人相手のビジネスやECサイト、個別面談を通すようなビジネスなどでは、顧客をIDベースで追えるケースが多いです。

運が良ければ、リード(見込み顧客)の段階で、何かしらデータを得ているケースもあります。法人相手のビジネスなどは最たる例でしょう。その場合、そのリード(見込み顧客)が顧客になる可能性が分かると非常に嬉しいです。対応すべき優先順位の参考にしたりできるからです。

そのためには、リード(見込み顧客)の受注を予測しなければなりません。このリード(見込み顧客)の受注を予測するためのモデルを、機械学習のアルゴリズムで構築するケースが増えています。

機械学習のアルゴリズムには、大きく「目的変数のない教師なし学習」と「目的変数のある教師あり学習」があります。

リード(見込み顧客)の受注予測」をする場合の目的変数は、「受注の有無」です。受注したのか、失注したのかを表す変数です。例えば、受注を「1」、失注を「0」などの数字で表現したりします。受注を表す「1」の確率を予測モデルで、「教師あり学習」のアルゴリズムを使って構築します。

では、「教師なし学習」はどこで使うのか?

教師なし学習」は、例えば、「教師あり学習」で構築する予測モデルを作る前に使ったりします。

例えば、以下のような順番です。

  • 教師なし学習」で顧客理解
  • 教師あり学習」で予測モデル構築

いきなり「教師あり学習」で予測モデルを構築していた方は、、「教師なし学習」をその前に実施してみてはいかがでしょうか。