3

Weka を使用して、J48 (C4.5) 決定木をうまく構築しました。自分の機能がどれほど効果的または重要かを評価したいと思います。

明白な方法の 1 つは、すべての特徴をループして、一度に 1 つずつ削除し、毎回分類テストを再実行して、分類精度が最も低下している特徴を確認することです。ただし、これにより、機能間の相互依存関係が隠される場合があります。

ただし、C4.5 アルゴリズムの理解に基づく別のアプローチを考えています。ツリー内の各分割は、最大の情報ゲインの決定に基づいているため、ツリーのルートに近いフィーチャの分割は、ツリー内の下位にある別のフィーチャの分割よりも、そのフィーチャが多くの情報ゲインを持っていたことを意味する必要があります。したがって、ツリー内のいくつかの分割で発生する特定の機能 F について、ルートからの F の平均距離を計算できます。次に、すべてのフィーチャを平均距離でランク付けできます。平均距離が最も低いフィーチャが最も価値のあるフィーチャになります。これは正しいアプローチでしょうか?

4

2 に答える 2

4

少しネクロの投稿...しかし、ここに行きます...

属性の重要性を知りたい理由は、関連する属性のみを使用してより良いツリーを構築できるようにするためだと思います。

その場合は、常にメタ分類子「AttributeSelectedClassifier」を使用してから、j48 を分類子として使用できます。

次に、属性サブセットのエバリュエーターと検索方法を選択する必要があります。たとえば、現在、「WrapperSubsetEval」エバリュエーターと「GeneticSearch」検索アルゴリズムを試しています。

ラッパー評価では、分類子を選択する必要があります (実際に分類子を構築して、検索によってテストされた各属性サブセットでどれだけうまく機能するかを確認します)。私の場合は j48 を使用しています (必要な分類子と一致させます)で設定された属性を使用します)。

これらの設定により、j48 アルゴリズムで適切に機能する属性のサブセットを (遺伝的アルゴリズムを使用して) 進化させ、その進化した属性セットを使用してデータに対して j48 を実行します。

これは、多くのツリーを構築してテストする必要があるため、計算コストが高くなりますが、良い結果が得られます (手動で行うよりもはるかに高速です) :)

于 2012-12-02T05:24:39.550 に答える
2

「属性選択」タブを試すことができます。そこで、PCA 分析、CfsSubsetEval + BestFirst... を実行して、最適な機能を判断できます。

もう 1 つの (ただし手動の) 方法は、同じアルゴリズムを異なる属性でトレーニングしてテストし、T 検定を使用して結果を統計的にチェックして、改善が統計的に有意であるかどうかを判断することです。

于 2012-09-04T13:57:02.473 に答える