この章では、Oracle Data Miningでサポートされている分類アルゴリズムの1つであるNaive Bayesについて説明します。
この章では、次の項目について説明します。
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 Bayesの作成プロセスは並列処理されます(スコアリングはアルゴリズムに関係なく並列処理されます)。
Naive Bayeは、2項および多クラスのどちらの分類問題にも使用できます。
Naive Bayesでは、組の発生割合を単一の発生割合で除算することによって確率が計算されます。これらの割合は、特定の予測子に関して非常に小さい場合、モデルの効率性にはほとんど寄与しません。特定のしきい値以下の発生は、通常無視できます。
確率のしきい値を調整するために、NABS_PAIRWISE_THRESHOLDおよびNABS_SINGLETON_THRESHOLDという2つの構築設定を使用できます。デフォルトのしきい値はほとんどのモデルに対して問題なく機能するため、通常は調整する必要はありません。
NABS_PAIRWISE_THRESHOLD: モデルに予測子を含めるために必要な組の最小発生割合
NABS_SINGLETON_THRESHOLD: モデルに予測子を含めるために必要な単一の最小発生割合
|
関連項目: Naive Bayesのアルゴリズム設定の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 |
Naive Bayesに対する自動データ準備では、監視ありビニングが実行されます。監視ありビニングでは、ディシジョン・ツリーを使用して最適なビンの境界が作成されます。質的属性と量的属性のいずれもビニングされます。
Naive Bayesでは、欠損値をそのまま(ランダムに欠損している値として)処理します。スパースな量的データは0(ゼロ)に、スパースな質的データはゼロ・ベクトルに置換されます。ネストした列の欠損値はスパースとして解釈されます。単純なデータ型の列の欠損値は、ランダムに欠損した値として解釈されます。
独自のデータ準備を行う場合、Naive Bayesでは通常ビニングが必要となります。Naive Bayesは、確率を計算する上で集計手法に依存しています。必要に応じてカーディナリティを低くするために、列をビニングする必要があります。量的データは値の範囲(低、中、高など)にビニングでき、質的データはメタクラス(都市のかわりに地域など)にビニングできます。等幅ビニングはお薦めできません。これは、外れ値が存在すると、ほとんどのデータが小数のビン(場合によっては1つのビン)に集中するためです。その結果、アルゴリズムの識別能力が著しく低下することがあります。