RandomForestClassifier(n_estimators= 1000)による二値分類に取り組んでいます。
特徴量は250程度です。
max_depth=Noneで行ったところ、トレーニングでの正解率が1.0、テストが0.65ほどになりました。
過学習と判断し、max=depthを下げていきましたが、max_depth=5でもトレーニング正解率が0.8ほどに下がり、テスト正解率も上がるどころか、0.62に下がっていしまいした。
どのような原因が可能性として考えられるのでしょうか?
ランダムフォレストはかなり過学習しにくいということなのですが。
各treeの表現力が下がった結果なんじゃないかなぁ。n_extimatorsを100, 200などで試すとどうでしょう。
回答ありがとうございます。抜けておりましたが、n_estimatorsについては1000でやっております。
すみません、勘違いしていました。試してみましたが、あまりかわりませんでした。。
それだったらmax_depthは最初のままで維持して、n_estimatorを5とか10から増やして、どこでover-fittingしてそうか見るといいかもです。
試してみます。ありがとうございます。
n_estimators=5の時点でtrain_acc=0.9, test_acc=0.6程度になるので、まったく意味が分からなくなってきてしまいました。。。
回答にも書きましたが、機械学習的な方法論ではそのままではうまく分類できないデータを入れているような気がします。差し支えなければどういう性質のものなのか教えてください
データ分割の問題も絡んでそうな。
ご回答ありがとうございました。医薬品などを含む化合物の記述子(物理的、構造上、化学的特性などの特徴量)から毒性を予測するQSAR研究です。
たとえば、専門知識のある人がその特徴量だけ見せられたとして、(十分な検討時間さえあれば)正しく予測できますか? 人間にできないことを機械学習にやらせるのは困難です
あと、データ数と「特徴量がスパースか否か」も気になるといえば気になる。データ数が足りなくて過学習というのもよくある話なので。スパースの方は(それこそカテゴリデータから変換したような)すかすかな特徴量だと、なかなかうまく扱うのが難しいからです
正直毒性がなかなかよそくできないために機械学習の力を借りたいというところですので、ある程度まではわかるかもですが正しく予測できるかは不明です。データ数につきましては約6000ありますが、不均衡データですので約400(各クラス200ずつ程度)にアンダーサンプリングしてモデルの学習をしております。
特徴量については一部を除いてスパースです。
真っ先に思いつくのは、前処理でPCAかけるPipeline組んで、不均衡データ対策した上で6000件を入れて評価指標はF1値、というのですが、それでもどうだろうというくらいの厳しいデータな気がします
なるほど。まあ厳しいというのはある程度わかってはいたのですが、とりあえずもう少し粘ってみようかなと思います。ご丁寧にありがとうございました。
回答1件
あなたの回答
tips
プレビュー