この章では、データ内の希少ケースを検出するための監視なしマイニング機能である異常検出について説明します。
参考: 『Creation and Deployment of Data Mining-Based Intrusion Detection Systems in Oracle Database 10g』(Campos, M.M.、Milenova, B.L.、Yarmus, J.S.共著) |
この章では、次の項目について説明します。
異常検出の目標は、一見同質なデータ内に存在する特異なケースを識別することにあります。異常検出は、重大な意味を持ちながら検出することが難しい、不正行為、ネットワークへの侵入などの発生頻度の低いイベントを検出するための重要なツールです。
異常検出は、次のような問題の解決に使用できます。
司法当局は不正行為に関するデータは蓄積しますが、合法行為に関するデータは収集しません。疑わしい行為についてはどのようにして注意すればよいでしょうか。
司法当局のデータはすべて1つのクラスに属します。反例はありません。
保険代理店は何百万もの保険金請求を処理しますが、ごくわずかに不正が含まれていることを認識しています。不正請求はどのように識別できるでしょうか。
請求データには、反例がごくわずかですが含まれています。これらは外れ値です。
異常検出は、分類の一形式です。分類マイニング機能の概要は、5章の「分類とは」を参照してください。
異常検出は、1クラス分類として実装されます。これは、トレーニング・データに示されるクラスが1つのみであるためです。異常検出モデルでは、あるデータ・ポイントが特定の分布に対して典型的かどうかを予測します。非典型的なデータ・ポイントは、外れ値か、これまでに観測されていないクラスのサンプルである可能性があります。
通常、分類モデルは、各クラスのサンプルと反例の両方が含まれるデータに対してトレーニングする必要があります。これによって、その分類モデルは両者を区別できるようになります。たとえば、薬物の副作用を予測するモデルは、その薬物に対する広範な反応が含まれるデータに基づいてトレーニングする必要があります。
1クラス分類プログラムは、トレーニング・データの典型的なケースを大まかに説明するプロファイルを作成します。プロファイルからの偏差は、異常として識別されます。1クラス分類プログラムは、「正しい」動作を識別しようとする一方、それ以外の動作はすべて不正とみなすため、ポジティブ・セキュリティ・モデルと呼ばれる場合もあります。
注意: 1クラス分類問題の解決は困難な場合があります。1クラス分類プログラムの精度は、有意の反例を使用して作成した標準的な分類プログラムの精度とは通常一致しません。異常検出の目的は、これまで何も情報が得られなかった箇所に、一定の有益な情報を提供することにあります。ただし、十分な数の「希少」なケースが存在し、層別サンプリングで十分な反例を含むトレーニング・セットを標準的な分類モデル用に生成することが可能な場合は、それが一般的に優れた解決策となります。 |
1クラス・データでは、すべてのケースが同じ分類に属します。この場合、反例(別のクラスのケースの集合)の特定が困難であったり、反例の収集にコストがかかったりすることがあります。たとえば、テキスト・ドキュメントの分類の場合、特定のトピックに基づいてドキュメントを分類することは簡単です。しかし、そのトピックに属さないドキュメントが非常に大量にあり、種類も様々である場合があります。そうなると、他の種類のドキュメントを反例として指定することは難しくなります。
異常検出を利用すれば、特定の種類のドキュメントについて特異なケースを見つけることが可能です。
外れ値とは、データにとって典型的とみなされる分布から外れた位置に存在するために特異であるケースのことです。たとえば、人口調査のデータにおいて、家計収入の中央値が70,000ドルで平均値が80,000ドルとなっているとき、収入が200,000ドルの家庭が1、2軒存在する場合があります。この場合、これらのケースは外れ値とみなすことができます。
正規分布の中央からの距離によって、データの分布に対して特定のポイントがどの程度典型的であるかが示されます。各ケースは、そのケースが典型的または非典型的である確率に従ってランク付けできます。
外れ値が存在すると、様々な種類のデータ・マイニングに悪影響を及ぼすことがあります。異常検出は、データ・マイニングの実行前に外れ値を特定する目的で使用できます。
次の例では、異常検出を使用してトレーニング・データ内の外れ値を検出する方法、および新しい1クラス・データをスコアリングする方法について説明します。
図6-1は、モデルの作成に使用したケース表から抜粋した6つの列と10の行です。ここでは、データが1クラス全体であるため、ターゲットとして指定されている列がないことに注意してください。
関連項目: Oracle Data Miningのサンプル・モデルの詳細は、『Oracle Data Mining管理者ガイド』を参照してください。 |
典型的な顧客の人口統計データで構成されるデータセットを作成する場合について考えてみます。まず、最も特殊な顧客を特定してそれらの顧客をデータから除外する必要があります。
外れ値を見つけるために、異常検出モデルを使用して作成データをスコアリングします。図6-2では、顧客101,505が特異であり削除する必要があることがわかります。
注意: 予測が0の場合は異常とみなされます。予測が1の場合は典型的とみなされます。 |
注意: Oracle Data Minerでは、適用出力表のDMR$CASE_ID 列に一般化されたケースIDが表示されます。出力に含めるように選択した各予測子の列名には「1」が追加されます。予測値(図6-2では、典型的を表す1または異常を表す0)は、PREDICTION 列に表示されます。それぞれの予測の確率は、PROBABILITY 列に表示されます。 |
新しく獲得した顧客について、現在の顧客データベースに格納されているある典型的顧客とどの程度共通しているかを評価するとします。
新規顧客データをスコアリングする際に、異常検出モデルを使用できます。この新しい顧客は、学士号を持つ管理職の40歳の男性で、提携カードを使用しています。この例では、SQL関数PREDICTION_PROBABILITY
を使用して、モデルsvmo_sh_clas_sample
(Oracle Data Miningのサンプル・プログラムに用意されている異常検出モデルのサンプル)を適用します。この関数の戻り値は0.05です。つまり、この新規顧客が典型的である可能性は5%であることを示しています。言いかえると、既存顧客の95%は、この顧客よりも平均的な顧客に近いということです。このことから、この新規顧客はいくらか特異であると言えます。
COLUMN prob_typical FORMAT 9.99
SELECT PREDICTION_PROBABILITY (svmo_sh_clas_sample, 1 USING
'M' AS cust_gender,
'Bach.' AS education,
'Exec.' AS occupation,
40 AS age,
'1' AS affinity_card) prob_typical
FROM DUAL;
PROB_TYPICAL------------ .05