この付録では、Oracle Application Server Personalization(OracleAS Personalization)において、モデルの作成に使用する2つのアルゴリズムについて説明します。モデルは、パーソナライズされたリコメンデーションを生成するために使用します。2つのアルゴリズムは次のとおりです。
Predictive Association Rules
Transactional Naive Bayes
OracleAS Personalizationでは、特定のリコメンデーション・タイプに最適なアルゴリズムが自動的に選択されます。
相関ルールの最もよく知られた使い方は「マーケット・バスケット分析」と呼ばれるもので、「ビールを購入する人の80%はポテト・チップスも購入する」というような、ショッピング・カートに何と何を入れるかに関するルールです。
相関ルールのアルゴリズムにより、トランザクションで頻繁に発生する項目の組合せが特定され、「Aの場合、Bである」というif-then形式のルールとして定義されます。Aは前提、Bは結論です (命題の両側は、「A、BおよびCの場合、DおよびEである」のように、それぞれ複数の項目でもかまいません。Predictive Association Rulesの場合は、結論は1つの項目のみです)。
このようなルールは多数見つけることができますが、課題は、意味のあるルールまたは興味深いルールで、かつ実用的なビジネス上の決定につながるルールを見つけることです。たとえば、「ビールとプレッツェルを購入する人の80%はチョコレートも購入する」などです。 この組合せは自明ではなく、特売中のビールの近くにチョコレートの陳列を移動するなど、レイアウトの変更につながることがあります。
一方、「ペンキを購入する人の80%は、はけも購入する」などのルールはあまり有益ではありません。このルールは自明であり、店舗内でこれらのアイテムの配置を変更することにつながらないからです。これらのアイテムは、すでに近くに配置されていると考えられます。
また、「歯磨き粉とティッシュ・ペーパーを購入する人の80%はトマトも購入する」というルールは自明でもなく、おそらく有益ではありません。実用的なビジネス上の決定をもたらす余地がないからです。
有益なルールや興味深いルールを特定するために、サポート、信頼性およびリフトの3つの評価基準が導入されています。
サポート: まず、強力なサポートがあるルール、つまりデータベース内の多数の例に基づくルールを特定します。 サポートは、そのルールに従うレコード、つまりAとBの両方を含むバスケットの割合です。
信頼性: 次に、信頼性の高いルール、つまりAのすべての事例に対してルールに従う(AとBの両方を含む)事例の割合が高いルールを特定します。たとえば、Aの事例が10あり、そのうちの8つがBにもあり、残りの2つはBにないとします。この場合、信頼性は10分の8、つまり80%になります。
リフト: リフトでは、Aと仮定した場合にBが存在する確率と、無作為に抽出したバスケット内にBが存在する確率が比較されます。リフトを使用すると予測可能性が向上するので、3つの中でリフトが最も効果的です。
Naive Bayesは指導付き学習モジュールの一種で、モデルが学習しようとする入力ターゲット・マッピングの例が収録されています。このようなモデルでは、過去のデータの調査に基づいて新しいデータに関する予測が行われます。モデルの種類が異なると、過去のデータを基にした学習をするための内部アプローチも異なります。Naive Bayesのアルゴリズムでは、ベイズの定理を使用して予測が行われます。
ベイズの定理とは、条件付き確率に関するものです。 ベイズの定理によると、特定の予測イベントの確率は、その事例の事象を前提とした場合、他の3つの数値から計算されます。つまり、(特定の事象を無視した、一般的に同様な状況におけるその予測の確率(事前確率))×(特定の予測が正しいと仮定した場合に現在の事象が現れる確率)÷(可能性がある各予測(現在の予測を含む)に関するその予測の同様の積(つまり、(その予測の一般的な確率)×(可能性がある予測の場合に現在の事象が現れる確率))の和)です。
単純化した仮説(単純な部分)は、この予測が正しいと仮定すると、事象を組み合せたときの確率は、個々の事象の確率の積になるということです。個々の事象が相互に干渉せず、独立して作用する場合、この仮説は真です。その他の場合、この仮説では真の値が概算されるにすぎません。実際には、概算によってモデルの予測精度が低下する度合いは少ないのが通常です。また、概算では、計算上実行が可能なアルゴリズムと実行が困難なアルゴリズムとの差が生じます。
他の指導付き学習モジュールと比較して、Naive Bayesには、簡単かつ高速という利点があります。また、段階的学習や分散学習をサポートする今後の機能拡張に適しています。
Transactional Naive Bayesは、入力が書式化されている方式のことを指します。つまり、アルゴリズム自体は同じです。 次の表は、従来のデータ・フォーマットの例です。列には項目(顧客、りんご、オレンジ、梨、バナナ)が、行には顧客(Joe、Jim、Jeff)がそれぞれ入っており、表の各セルには0または1が格納されています。この表は、たとえば、Joeが購入したものはりんごである(いいえ)、オレンジである(いいえ)、梨である(いいえ)、バナナである(はい)ことを示しています。
| Customer | りんご | オレンジ | 梨 | バナナ |
|---|---|---|---|---|
Joe
|
0
|
0
|
0
|
1
|
Jim
|
1
|
0
|
0
|
1
|
Jeff
|
0
|
1
|
0
|
0
|
従来のデータ・レイアウトでは、多くの場合、そこにゼロが格納されているために、疎行列が生成されます。疎行列はデータベースの領域を大量に使用するので、計算に時間がかかります。
トランザクションベースのフォーマットは、基本的に顧客とヒットの2つの列で構成されます。Joeの場合、表のセルに入るのはバナナのみになります。
| Customer | ヒット |
|---|---|
Joe
|
バナナ
|
Jim
|
りんご
|
Jim
|
バナナ
|
Jeff
|
オレンジ
|
トランザクション型フォーマットは、チェックリストよりもショッピング・バスケットの方式に近く、顧客が製品のサブセットのみを購入する場合に適しています。 OracleAS Personalizationでは、必要に応じて、データをトランザクション型フォーマットに変換してからパッケージがビルドされます。