moxt

Just another Blog site

imbalanced-learnで不均衡データをアンダーサンプリングしてみる

   

https://github.com/scikit-learn-contrib/imbalanced-learn

↑ドキュメントを読めば終わり。

雑談

最近、scikit-learnをちょくちょく触ってる。
めっちゃ便利だよね。

テストデータいじって予想したりするのに飽きたので「この本は興味ありそうか否か」っていうテキストの二値分類に取り組んでいる。
本のデータをクローリングして「興味なし」は0、「興味あり」は1として各本データにラベル付ける。(一番しんどい)

ラベル付けしてから気がついたのだが、興味ありが圧倒的に少ない。
割合としては80%くらいが興味なし。
データがめっちゃ偏ってる。

これで学習させてpredictしてみると…
結果が全て「興味なし」となってしまった
ほとんどが0のデータで学習させたらそうなるわなw

こういう偏ったデータを「不均衡データ」というらしい。

この不均衡データを使うと何が問題なのかってのがよく分かってない。
均等データで学習した場合と比較すると精度が悪くなる、みたいなことは書いてる。
なんとなく偏ったデータで学習すると過学習状態になるのかなって感想。

とりあえずpredictで全部0になってるのを見ると、学習してない感(してるよ)あって萎えるので、手元の不均衡データをイイカンジにする方法を調べてみた。

↑これ見たら終わり。

なるほどですね。
偏ってるデータを取り除く(今回の場合だったら「興味なし」な本のデータだね)アンダーサンプリングってのが圧倒的に理解しやすいので、これをやってみようという気概になった。

手で間引くのメンドイし、なんかイイカンジな実装がscikit-learnにあるだろ、と思って調べたけど見つけられなくてアレだった
とはいえ自分で実装するのは絶対にイヤなので、五万年くらいググり続けた。
そしたらimbalanced-learnと出会った。

使ってみる

インストール

condaでもインストールできるっぽいよ。

こんな感じ

リサンプリングできてる

 - 機械学習

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

  関連記事

keras-logo-small
KerasのCNNを使って文書分類する

Contents1 TL;DR(笑)2 …

2152048926_d60b8ea093_z
不均衡データでClassification of text documents using sparse featuresしてみる

読み取った新書のデータから自分にとって興味あるか否かを判定する、という一連をやった。 生まれつき好奇心が全く無い病気なので、全体の比で見ると「興味あり」が圧倒的に少ない。 …

2152048926_d60b8ea093_z
コード読みながら理解する機械学習〜porn_sieve〜

porn_sieveは、好みの動画(xvideos)を数値評価することでアナタに最適な動画(xvideos)を提供してくれるPython製アプリだ。 最適な動画を選定するために「機械学習」ってのが使われているわけですね。 …

no image
[WIP]単純ベイズ分類器がまったく単純じゃないので入門

書き途中&間違いあるかも 単純(ナイーブ)ベイズ分類器というものがある。 …