1

私は Weka の J48 ディシジョン ツリーを使用して、RSS フィード内のキーワードの頻度をターゲット カテゴリに分類しています。そして、生成された決定木と、報告された正しく分類されたインスタンスの数と混同行列を調整する際に問題が発生する可能性があると思います。

たとえば、私の .arff ファイルの 1 つには、次のデータ抽出が含まれています。

@attribute Keyword_1_nasa_Frequency numeric
@attribute Keyword_2_fish_Frequency numeric
@attribute Keyword_3_kill_Frequency numeric
@attribute Keyword_4_show_Frequency numeric
...
@attribute Keyword_64_fear_Frequency numeric
@attribute RSSFeedCategoryDescription {BFE,FCL,F,M, NCA, SNT,S}

@data
0,0,0,34,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
...
20,0,64,19,0,162,0,0,36,72,179,24,24,47,24,40,0,48,0,0,0,97,24,0,48,205,143,62,78,
0,0,216,0,36,24,24,0,0,24,0,0,0,0,140,24,0,0,0,0,72,176,0,0,144,48,0,38,0,284,
221,72,0,72,0,SNT
...
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,S

などなど: 合計 64 個のキーワード (列) と 570 行があり、それぞれに 1 日のフィード内のキーワードの頻度が含まれています。この場合、10 日間で 57 のフィードがあり、合計 570 のレコードが分類されます。各キーワードにはサロゲート番号が前に付けられ、「頻度」が後置されます。

私のデシジョン ツリーの使用は、10x 検証を使用したデフォルト パラメータです。

Weka は次のように報告しています。

Correctly Classified Instances         210               36.8421 %
Incorrectly Classified Instances       360               63.1579 %

次の混同行列を使用します。

=== Confusion Matrix ===

   a   b   c   d   e   f   g   <-- classified as
  11   0   0   0  39   0   0 |   a = BFE
   0   0   0   0  60   0   0 |   b = FCL
   1   0   5   0  72   0   2 |   c = F
   0   0   1   0  69   0   0 |   d = M
   3   0   0   0 153   0   4 |   e = NCA
   0   0   0   0  90  10   0 |   f = SNT
   0   0   0   0  19   0  31 |   g = S

ツリーは次のとおりです。

Keyword_22_health_Frequency <= 0
|   Keyword_7_open_Frequency <= 0
|   |   Keyword_52_libya_Frequency <= 0
|   |   |   Keyword_21_job_Frequency <= 0
|   |   |   |   Keyword_48_pic_Frequency <= 0
|   |   |   |   |   Keyword_63_world_Frequency <= 0
|   |   |   |   |   |   Keyword_26_day_Frequency <= 0: NCA (461.0/343.0)
|   |   |   |   |   |   Keyword_26_day_Frequency > 0: BFE (8.0/3.0)
|   |   |   |   |   Keyword_63_world_Frequency > 0
|   |   |   |   |   |   Keyword_31_gaddafi_Frequency <= 0: S (4.0/1.0)
|   |   |   |   |   |   Keyword_31_gaddafi_Frequency > 0: NCA (3.0)
|   |   |   |   Keyword_48_pic_Frequency > 0: F (7.0)
|   |   |   Keyword_21_job_Frequency > 0: BFE (10.0/1.0)
|   |   Keyword_52_libya_Frequency > 0: NCA (31.0)
|   Keyword_7_open_Frequency > 0
|   |   Keyword_31_gaddafi_Frequency <= 0: S (32.0/1.0)
|   |   Keyword_31_gaddafi_Frequency > 0: NCA (4.0)
Keyword_22_health_Frequency > 0: SNT (10.0)

私の質問は、マトリックスをツリーに、またはその逆に調整することに関するものです。私が結果を理解している限り、(461.0/343.0) のような評価は、461 のインスタンスが NCA に分類されたことを示しています。しかし、マトリックスが 153 しか示していないのに、どうしてそれができるのでしょうか? これをどのように解釈すればよいかわかりませんので、どんな助けでも大歓迎です。

前もって感謝します。

4

1 に答える 1

2

各リーフの括弧内の数は、(このリーフでのこの分類の合計インスタンス数 / このリーフでの誤った分類の数) として読み取る必要があります。

最初の NCA リーフの例では、NCA として分類された 461 のテスト インスタンスがあり、それらの 461 のうち、343 の間違った分類があったと言っています。したがって、その葉には 461-343 = 118 の正しく分類されたインスタンスがあります。

ディシジョン ツリーを調べると、NCA が他のリーフにもあることに注意してください。NCA の合計 461 + 3 + 31 + 4 = 499 の分類のうち、正しく分類されたインスタンスは 118 + 3 + 31 + 4 = 156 です。

あなたの混同行列は、39 + 60 + 72 + 69 + 153 + 90 + 19 = 502 の NCA の合計分類のうち、153 の NCA の正しい分類を示しています。

したがって、ツリー (156/499) と混同行列 (153/502) にはわずかな違いがあります。

コマンドラインから Weka を実行している場合、すべてのトレーニング データをテストするためのツリーと混同マトリックスが出力され、交差検証を使用したテストも行われることに注意してください。正しいツリーの正しいマトリックスを見ていることに注意してください。Weka はトレーニングとテストの両方の結果を出力し、マトリックスとツリーの 2 つのペアを生成します。あなたはそれらを混同しているかもしれません。

于 2012-08-08T18:27:10.763 に答える