ターゲット変数を予測しようとしているデータセットがあります。
Col1 Col2 Col3 Col4 Col5
1 2 23 11 1
2 22 12 14 1
22 11 43 38 3
14 22 25 19 3
12 42 11 14 1
22 11 43 38 2
1 2 23 11 4
2 22 12 14 2
22 11 43 38 3
私はサンプルデータを提供しましたが、私の場合、同様の方法で数千のレコードが配布されています。ここで、Col1、Col2、Col3、Col4は私の機能で、Col5はターゲット変数です。したがって、これらはターゲット変数の私の値なので、予測は1、2、3、または4である必要があります。ランダムフォレスト、決定木などのアルゴリズムを予測に使用してみました。
ここを見ると、値1、2、3は4と比較してより多く発生しています。したがって、予測している間、モデルは1 2と3に偏っていますが、4の予測の数は少なくなっています(1つだけ予測されました)混乱マトリックスを見たときの数千のレコードのうちのpolicy4の場合)。
モデルを一般化するために、1、2、および3の値に属する同じ割合のデータをランダムに削除しました。Col5の各値でグループ化し、特定のパーセンテージを削除して、レコード数を減らしました。今、私は正確さのパーセンテージの一定の増加と混同行列の値4の予測の合理的な増加を見ることができました。
これは対処する適切なアプローチですか(モデルがバイアスされているグループからランダムにデータを削除します)?
私は、sklearnを使用したAdaboost、GradientBoostテクニックなどの組み込みのPythonアルゴリズムを試しました。私はこれらのアルゴリズムが不均衡クラスを処理するためのものであることを読みました。しかし、データをランダムに削除して精度を向上させることはできませんでした。
この削減はアンダーサンプリング手法ですか?これはアンダーサンプリングの正しいアプローチですか?
ランダムな削除が間違っている場合、sklearnに事前定義されたパッケージや、これを実行するためにpythonに実装できるロジックがありますか?
また、オーバーサンプリングを扱うSMOTEテクニックについても学びました。これを値4に試してみますか?そして、Pythonの組み込みパッケージを使用してこれを行うことができますか?この状況で誰かが私を助けてくれるといいですね。