質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

3786閲覧

機械学習:不均衡データでオーバーサンプリングした時の問題

amikappa

総合スコア6

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2020/06/10 08:25

scikit-learnのSVMで2値分類モデルを作っている最中です。
結果ラベルは0,1の2値なのですが、0と1の割合が2:8くらいで、そのまま学習させると0の再現率が非常に低くなるため、オーバーサンプリングしています。

オーバーサンプリングには、imblearnのSMOTEを使っています。0と1の比率を1:1になるまでオーバーサンプリングさせました。

結果、学習の精度、0の再現率、1の再現率とも満足いく結果(80~90%)になりました。

しかし、この学習済みモデルを保存して、他のデータを予測させると、なぜか0を判定できません。(0の再現率が0%になる)

そこで質問なのですが、このようにオーバーサンプリングした学習済みモデルを使って他のデータを予測させる場合、なにか注意すべき点があるのでしょうか?

0の再現率が異常に低くなる原因がわからず困っています。

ご助言いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

学習データはどれくらいでしょうか。
また、学習データと他のデータの目的変数、説明変数の分布は異なってないでしょうか。

オーバーサンプリングの問題と言うよりも過学習かも知れません。
また、精度を考えるとSVMよりもアンサンブル系の方がよくなるかと思います。

投稿2020/06/21 05:11

aokikenichi

総合スコア2218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amikappa

2020/06/22 08:50

回答いただき、ありがとうございました。 学習データは約3万件ほどです。 ご指摘頂きましたとおり、過学習の問題でした。(オーバーサンプリングには問題ありませんでした。) 学習データを作成する際、同一条件で複数回発生するものがあり、それを同一レコードを発生回数だけ作成していたことが原因で、学習データと検証データの間にデータリークが発生していました。「発生回数」という項目を設けてそこにカウント値をセットし、重複データが発生しないようにしたら、無事、考えていた結果が得られるようになりました。 ありがとうございます。
aokikenichi

2020/06/22 09:05

気づきのきっかけとなったようで良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問