3

マルチクラス分類のためにRで(パッケージRWeka経由で)PARTアルゴリズムを使用しています。ターゲット属性は、請求書が顧客によって支払われるタイム バケットです (7 ~ 15 日、15 ~ 30 日など)。モデルからのフィッティングと予測に次のコードを使用しています:

fit <- PART(DELAY_CLASS ~ AMT_TO_PAY + NUMBER_OF_CREDIT_DAYS + AVG_BASE_PRICE, data= trainingData)
predictedTrainingValues <- predict(fit, trainingData)    

このモデルを使用することで、トレーニング データで約 82% の精度を得ています。しかし、テストデータの精度は約 59% です。モデルを過剰に適合させていることを理解しています。予測変数の数を減らそうとしましたが (上記のコードの予測変数は減らされた変数です)、あまり役に立ちません。変数の数を減らすと、テスト データの精度が約 61% に向上し、トレーニング データの精度が約 10% に低下します。 79%。

PART アルゴリズムは部分決定木に基づいているため、別のオプションとして木を剪定することができます。しかし、PARTアルゴリズムのためにツリーを剪定する方法を知りません。インターネット検索で、ルールベースのアルゴリズムのプルーニングに FOIL 基準を使用できることがわかりました。しかし、R または RWeka で FOIL 基準の実装を見つけることができません。

私の質問は、PARTアルゴリズムのツリーを剪定する方法、またはテストデータの精度を向上させるためのその他の提案も歓迎されるということです.

前もって感謝します!!

注 : 正しく分類されたインスタンスの数をインスタンスの総数で割った値として精度を計算します。

4

1 に答える 1

2

PART でツリーを剪定するには、関数の制御引数で指定する必要があります。

ここに制御引数に渡すことができるコマンドの完全なリストがあります

ここでは、プルーニングに関連するいくつかのオプションを引用します。

有効なオプションは次のとおりです。

-C 自信

プルーニングの信頼しきい値を設定します。(デフォルト: 0.25)

Mナンバー

リーフごとのインスタンスの最小数を設定します。(デフォルト: 2)

-R

削減されたエラー プルーニングを使用します。

-N数

エラーの枝刈りを減らすためのフォールド数を設定します。剪定セットとして 1 つの折り目が使用されます。(デフォルト: 3)

上記の C 引数が役立つように見えますが、おそらく R と N と M.

関数でそれらを使用するには、次のようにします。

fit <- PART(DELAY_CLASS ~ AMT_TO_PAY + NUMBER_OF_CREDIT_DAYS + AVG_BASE_PRICE,
       data= trainingData,
       control = Weka_control(R = TRUE, N = 5, M = 100)) #random choices

精度指標に関する別のメモ:

トレーニング セットとテスト セットの精度を比較してオーバー フィッティングを判断することは、私の意見では最適ではありません。モデルはトレーニング セットでトレーニングされているため、テスト セットよりもモデルの方が適切に機能することが期待されます。より優れたテストはクロス検証です。最初に 10 倍の交差検証を実行してみて (キャレットの関数trainを使用できます)、次に交差検証の平均精度をテスト セットの精度と比較します。これで良くなると思います。交差検証とは何かがわからない場合は、一般に、トレーニング セットをより小さなトレーニング セットとテスト セットに分割し、トレーニングのトレーニングとテスト セットのテストを行います。詳細については、こちらをご覧ください。

于 2015-03-16T11:58:33.680 に答える