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

第6回「商品を買ってくれるのはどのような人か」予測するには

分類器を用いて予測モデルを構築する

  • 「この商品を買ってくれるのはどのような人か?」

それを予測できれば、すべての顧客へ画一的にアプローチするのではなく、購入確率のより高い消費者を優先できるようになり、高い費用対効果が期待できます。

また、以下のような応用も期待できます。

  • 「あなたにおすすめの商品」などのレコメンデーション機能を実現する
  • 消費者に送信するDMに、その消費者が購入する確率の高い商品を優先していれる

では、予測は機械学習を用いて、どのように実現するのでしょうか。

機械学習は、本連載の第1回目でも取り上げたように、以下の2つに大別されます。

  • 教師あり学習
  • 教師なし学習

このうちの「教師あり学習」は、その手法から、さらにいくつかに分別されます。その中でもよく利用されるのが、分類器(Classification)と呼ばれる手法です。

分類器は、以下の手順でデータを分類します

  1. 事前に与えられた教師データを解析し、教師データを分類しているルール(以下、モデル)を発見する
  2. そのモデルをもとに、その後与えられる解析対象のデータを分類する

前回で教師あり学習の例として取り上げたスパムフィルタも、事前に教師データとして与えられた「スパムメール」「スパムでないメール」からモデルを作成し、そのモデルをもとに、新たに受信したメールがスパムかスパムでないか分類したのを思い出してください。

今回の購買予測では、過去に「ある商品を購入した顧客」「ある商品を購入しなかった顧客」の情報を教師データとして利用することで、その商品を購入するルールを発見し、それを利用して予測を実現します。

分類過程をツリー構造で表現する「決定木」

分類器には多くの種類があります。そのうちの1つに、決定木(または決定木学習)と呼ばれる手法があります。

図1は、Aさんがどのような条件下で外出するかを表した決定木です。

Aさんがこれまで外出した場合と外出しなかった場合のそれぞれの気象条件図2を教師データとして、この決定木は作成されています。

図1 Aさんの外出条件を表した決定木(モデル)
図1 Aさんの外出条件を表した決定木(モデル)
図2 Aさんの外出の有無と気象条件 (教師データ)
図2 Aさんの外出の有無と気象条件 (教師データ)

教師データは全部で14件あり、それぞれ温度、湿度、天気、風の強さ、そして実際に外出したかどうかが記録されています。

ここから作成された決定木は、まず、一番上から天気で分類が行われ、以下の3つに分岐しています。

  • 晴れ
  • 曇り

ここで「曇り」「外出する」しか結果がないため、ここで分岐は終了します。一方、⁠晴れ」「雨」は、まだ「外出する」「外出しない」双方の結果を含んでいるため、分岐は継続します。

次に「晴れ」「温度⁠⁠、⁠雨」「風邪の強さ」を条件に分岐を行い、ここでそれぞれ分岐が終了します。

このように、決定木は、結論にたどり着くまで条件分岐を繰り返すことで、その結論にたどり着くまでの条件と、その順序を視覚的に表すのです。

図1の決定木から、Aさんが外出するかどうかの意思決定において、以下のことがわかります。

  • 最も優先される条件は「天気」
  • 次に優先される条件は、雨の日は「風の強さ⁠⁠、晴れの日は「温度」
  • 「湿度」は条件に含まれない

今回はサンプルとして14件の教師データを利用しましたが、実際の学習データは大量になることが多いです。また、考慮する変数は「温度⁠⁠、⁠湿度⁠⁠、⁠天気⁠⁠、⁠風の強さ」の4つでしたが、もっと多くになることも珍しくありません。

そのような大量で複雑なデータから、目視で適切な分類過程を導き出すことは容易ではありません。しかし、このように決定木を利用することで、適切な分類過程が導き出されます。

決定木を分類器として用いた場合、生成される決定木がモデルとなります。モデルを生成し、新たなデータ(上記の場合、気象条件)をモデルに当てはめることで、それに対する結果(Aさんが外出するか、しないか)を予測することができるようになります。

決定木では「分岐の順番」が重要

決定木で重要なのは、以下の2点です。

  • 採用する分岐条件
  • 分岐条件の順序

図1の決定木では、一番最初の分岐条件として「天気」が採用されています。

仮に、一番最初の分岐条件として「湿度」が採用された場合どのようになるでしょうか。

その場合でも、教師データが同じであるため、決定木の構造は異なるものの、最終的に同じ結論にたどり着くことはできます。

しかし、⁠湿度」は実際にはAさんの外出の意思決定の要因でないため、⁠天気」を一番最初の分岐条件に採用した場合と異なり、湿度の分岐だけでは「外出する⁠⁠、⁠外出しない」のいずれの結果も導かれません。そのため、一番最初の分岐条件として天気を採用した場合よりも、決定木全体で分岐の数が多く必要になります。

このように、必要以上に深い分岐構造となってしまうと、決定木の構造がより大きくなってしまい、⁠モデルを用いた分類を行う際に、計算量が増えてしまう」という問題が発生します。また、本来は分類の過程が目視で把握できる決定木の大きさであった場合に、⁠目視で把握することが必要以上に難しくなってしまう」というデメリットもあります。

そのため、決定木では、より効率的に結論にたどり着くために、⁠最もよく分割する条件を優先して選択する」というアルゴリズム(これを「エントロピー最大化」などと呼びます)が採用されることが多いです。

上記の例では、一番目の条件として「天気」を採用することで「外出する」の4件にたどり着けますが、ほかの条件を採用した場合、その条件分岐だけでは結論にたどり着けません。そのため、最もよく分割する条件は「天気」となります。

決定木を用いて顧客の購買を予測する

では、決定木による予測モデルの構築を、購買予測に当てはめて考えてみましょう。

先ほどの例と同様、決定木を生成するための教師データが必要になります。今回は、以下を教師データとして利用してみましょう⁠。

  • 顧客が過去に購入した商品
  • 顧客が過去に購入した商品の個数

今回、購買を予測したい商品を「商品A」とします。図3のように、商品Aを過去に購入した顧客と、商品Aを過去に購入したことがない顧客、それぞれが過去に購入した商品とその数を、教師データとして利用してみましょう。

図3 各顧客の購入商品とその個数(一部)
図3 各顧客の購入商品とその個数(一部)

これらの教師データを用いて決定木を構築することで、商品Aを購入した顧客と購入しなかった顧客、それぞれに共通して見られるルールをモデルとして構築することができます。

そのモデルに対して、ある顧客が過去に購入した商品を当てはめることで、その顧客が商品Aを購入するかどうかを予測できます。

※)
本来であれば、これらだけではなく「性別」⁠年齢」⁠職業」といった、購買活動に関連があると思われる変数を必要に応じて教師データとして採用するのが妥当ですが、今回は簡略化のため割愛します。

精度と処理速度の両立を可能にする「Random Forest」

ただし、実際に予測モデルを構築する際には1つ問題点があります。それは、学習データのデータ件数が莫大になり、変数の数も数百と多く、処理に非常に時間がかかってしまう場合がある点です。

その解決策として、解析対象とするデータを一部に限定することで速度を高める方法が考えられます。しかし、抽出した一部のデータの分布が、データ全体の分布とは異なる偏りになっている場合、誤った分析結果になる可能性があります。

この問題点を解決する方法の1つが、⁠Random Forest」と呼ばれるアルゴリズムです。

Random Forestには、以下の特徴があります。

  • 処理速度を高めるために、データ全体を解析せず、一部のデータを抽出して決定木を作成する
  • 一方、モデルの精度を高めるため、決定木の作成を1回でなく、複数回行う
  • 複数の結果から、最終的な答えを導き出す(これを「集団学習」と呼びます)

これにより、学習データが大量であっても、精度を高く維持しつつ、高速な処理が可能になるのです。

Mahoutには、このRandom Forestが実装されています。

次回は、Random Forestを利用して購買予測モデルをMahoutで構築します。お楽しみに!

おすすめ記事

記事・ニュース一覧