Data-mining-dm-rbc

提供:Dev Guides
移動先:案内検索

データマイニング-ルールベースの分類

IF-THENルール

ルールベースの分類子は、分類に一連のIF-THENルールを使用します。 私たちは次のルールを次のように表現できます-

IF条件THEN結論

ルールR1を考えてみましょう。

R1: IF age = youth AND student = yes
   THEN buy_computer = yes

覚えておくべきポイント-

  • ルールのIF部分は、 rule antecedent または precondition と呼ばれます。
  • ルールのTHEN部分は、 rule consequent と呼ばれます。
  • 条件の前件部分は1つ以上の属性テストで構成され、これらのテストは論理的にANDされます。
  • 結果部分はクラス予測で構成されます。

-ルールR1を次のように書くこともできます-

R1: (age = youth) ^ (student = yes))(buys computer = yes)

条件が特定のタプルに当てはまる場合、前件は満たされます。

ルール抽出

ここでは、意思決定ツリーからIF-THENルールを抽出して、ルールベースの分類子を構築する方法を学びます。

覚えておくべきポイント-

決定木からルールを抽出するには-

  • ルートからリーフノードへのパスごとに1つのルールが作成されます。
  • ルールの前件を形成するために、各分割基準は論理的にANDされます。
  • リーフノードはクラス予測を保持し、結果としてルールを形成します。

シーケンシャルカバリングアルゴリズムを使用したルール誘導

シーケンシャルカバリングアルゴリズムを使用して、トレーニングデータからIF-THENルールを抽出できます。 最初に決定木を生成する必要はありません。 このアルゴリズムでは、特定のクラスの各ルールが、そのクラスの多くのタプルをカバーします。

シーケンシャルカバリングアルゴリズムには、AQ、CN2、およびRIPPERがあります。 一般的な戦略に従って、ルールは一度に1つずつ学習されます。 ルールが学習されるたびに、ルールの対象となっているタプルが削除され、残りのタプルについてプロセスが続行されます。 これは、決定木の各葉へのパスがルールに対応しているためです。

-ディシジョンツリーの帰納は、一連のルールを同時に学習すると見なすことができます。

以下は、一度に1つのクラスのルールを学習する逐次学習アルゴリズムです。 クラスCiからルールを学習するとき、ルールはクラスCからのすべてのタプルをカバーし、他のクラスのタプルはカバーしないようにします。

Algorithm: Sequential Covering

Input:
D, a data set class-labeled tuples,
Att_vals, the set of all attributes and their possible values.

Output:  A Set of IF-THEN rules.
Method:
Rule_set={ };//initial set of rules learned is empty

for each class c do

   repeat
      Rule = Learn_One_Rule(D, Att_valls, c);
      remove tuples covered by Rule form D;
   until termination condition;

   Rule_set=Rule_set+Rule;//add a new rule to rule-set
end for
return Rule_Set;

ルールプルーニング

ルールがプルーニングされているのは、次の理由によるものです-

  • 品質の評価は、トレーニングデータの元のセットで行われます。 このルールは、トレーニングデータではうまく機能しますが、後続のデータではあまり機能しません。 そのため、ルールのプルーニングが必要です。
  • ルールは、接続詞を削除することで整理されます。 Rの枝刈りされたバージョンの品質が、独立したタプルのセットで評価されたものよりも高い場合、ルールRは枝刈りされます。

FOILは、ルールプルーニングのためのシンプルで効果的な方法の1つです。 与えられたルールRに対して、

FOIL_Prune = pos-neg/pos + neg

ここで、posおよびnegは、それぞれRでカバーされる正のタプルの数です。

注意-この値は、プルーニングセットのRの精度とともに増加します。 したがって、FOIL_Prune値がRの枝刈り済みバージョンの方が高い場合、Rを剪定します。