この章では、Oracle Data Miningでサポートされている分類アルゴリズムの1つであるNaive Bayesについて説明します。
この章には、次の項が含まれます。
Naive Bayesアルゴリズムは条件付き確率に基づきます。アルゴリズムではBayesの定理が使用されます(履歴データの値の組合せと値の頻度を数えて確率を計算する式)。
Bayesの定理では、すでに発生している別のイベントの確率を前提として、あるイベントの発生確率を見つけます。Bが従属イベントを、Aが事前イベントを表す場合、Bayesの定理は次のように示すことができます。
|
Bayesの定理: Prob(B given A) = Prob(A and B)/Prob(A) |
Aを前提としたBの確率は、AおよびBが一緒に発生するケースの数を、Aが単独で発生するケースの数で除算して計算されます。
例15-1 Bayesの定理を使用した消費の増加予測
21才未満の顧客が消費を増やす可能性を特定する必要があるものとします。この場合、事前条件(A)が「21未満」となり、従属条件(B)が「消費を増やす」となります。
トレーニング・データ内に100人の顧客が含まれていて、そのうち25人が消費を増やしている21才未満の顧客である場合、次のように計算されます。
Prob(A and B) = 25%
100人の顧客のうち75人が21才未満である場合、次のように計算されます。
Prob(A) = 75%
この場合、Bayesの定理では、21才未満の顧客の33% (25/75)が消費を増やす可能性があると予測されます。
両方の条件が一緒に発生するケースは、組(pairwise)と呼ばれます。例15-1では、すべてのケースの25%が組です。
事前イベントのみが発生するケースは、単一(singleton)と呼ばれます。例15-1では、すべてのケースの75%が単一です。
図15-1は、Bayesの定理で使用される条件の関係を視覚的に表しています。
例15-1および図15-1では、説明のために、1つの独立イベントに基づく従属イベントを示しています。実際には、Naive Bayesアルゴリズムでは通常、多数の独立イベントを考慮する必要があります。例15-1では、年齢の他に、収入、教育レベル、性別、店舗の場所などの要素を考慮する場合があります。
Naive Bayesでは、各予測子が条件付きで他の項目から独立していると仮定されます。指定されたターゲット値に対して、各予測子の分散は、その他の予測子から独立しています。実際、この独立の仮定では(違反された場合も)、モデルの予測精度は大幅に低下せず、高速で計算的に実行可能なアルゴリズムと困難なものの間に差はでません。
特定の予測子の分布が、明らかに、より大きな母集団を代表していない場合があります。たとえば、トレーニング・データ内に21才未満の顧客が少数しか存在しないが、広範な顧客ベースには、この年齢グループの顧客が実際に多数存在する場合などが考えられます。これを補正するには、モデルのトレーニングの際に、事前確率を指定します。「事前確率」を参照してください。
Naive Bayesアルゴリズムでは、高速で拡張性の高いモデルの作成とスコアリングが可能です。予測子および行の数に基づいて線形に拡張されます。このアルゴリズムは予測子および行の数に基づいて線形にスケーリングされます。(スコアリングはアルゴリズムに関係なく並列処理されます。)
Naive Bayeは、2項および多クラスのどちらの分類問題にも使用できます。
Naive Bayesでは、組の発生割合を単一の発生割合で除算することによって確率が計算されます。これらの割合は、特定の予測子に関して非常に小さい場合、モデルの効率性にはほとんど寄与しません。通常、特定のしきい値以下の発生は無視できます。
確率のしきい値を調整するために、2つの構築設定を使用できます。次を指定できます。
モデルに予測子を含めるために必要な組の最小発生割合
モデルに予測子を含めるために必要な単一の最小発生割合
デフォルトのしきい値はほとんどのモデルに対して問題なく機能するため、通常はこれらの設定を調整する必要はありません。
|
関連項目: Naive Bayesのアルゴリズム設定の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。 |
Naive Bayesに対する自動データ準備では、監視ありビニングが実行されます。監視ありビニングでは、ディシジョン・ツリーを使用して最適なビンの境界が作成されます。質的属性と量的属性のいずれもビニングされます。
Naive Bayesでは、欠損値をそのまま(ランダムに欠損している値として)処理します。スパースな量的データは0 (ゼロ)に置換され、スパースな質的データはゼロ・ベクトルに置換されます。ネストした列の欠損値はスパースとして解釈されます。単純なデータ型の列の欠損値は、ランダムに欠損した値として解釈されます。
独自のデータ準備を行う場合、Naive Bayesでは通常ビニングが必要となります。Naive Bayesでは、カウント手法に依存して、確率が計算されています。カーディナリティを必要に応じて削減するために、列がビニングされます。量的データは、値の範囲(たとえば、低、中および高)にビニングされ、質的データは、メタクラス(たとえば、市ではなく地域)にビニングされます。等幅ビニングを使用すると、外れ値によって、ほとんどのデータが少数のビン(場合によっては単一のビン)に集中するためお薦めできません。その結果、アルゴリズムの識別能力が著しく低下します。