CONTAINER技術系のこと書きます。Xクラス間の要素数に偏りのある不均衡なデータに対する分類問題のアプローチとして、多いクラスのデータを減らすアンダーサンプリングという手法がある。データをアンダーサンプリングしてモデルに学習させることで、評価指標が改善したりモデルの学習時間を削減できる。アンダーサンプリングしたデータで学習させたモデルから得られる推論結果の確率にはバイアスが生じるらしい。する方法が紹介されている。pompom168.hatenablog.com今回は、上記の手法をロジスティック回帰以外で試したときの結果が気になったので、やってみることにした。使った環境は次の通り。3.7.4下準備まずは下準備として必要なパッケージをインストールしておく。試す前に、前述したブログを追試してみる。長いけどサンプルコードは以下の通り。各種評価指標と、グラフとしてはキャリブレーションカーブを出力してみた。main()上記を実行してみよう。標準出力の前半は、各種評価指標を以下の条件で計算している。(calibrated)後半は、それぞれが出力した確率値の平均になる。0.09521502104917157上記を見ると、評価指標によってはアンダーサンプリングが有効に作用している様子が伺える。補正済みの確率値を使った評価指標では、アンダーサンプリングしなかった場合の結果に近づいていることが分かる。モデルの出力した確率値の平均も興味深い。大きくバイアスがかかっていることが分かる。真の平均に近づけられている。詳しくグラフにプロットしたものが以下の通り。プロットのようなもので、陽性データの真の出現頻度とモデルの予測を比較している。理想的な状況では斜めに一直線になる。下の図はモデルが出力した確率値のヒストグラムと、確率の平均値になっている。上記を見ると、アンダーサンプリングしたデータを使って学習させたモデルの出力には大きなバイアスが生じていることが分かる。それに対して補正したデータではバイアスが減少している。上記の結果より、確率を補正するとアンダーサンプリングしないデータを使って学習させたモデルの出力を再生するような印象を受けた。した場合でも試してみよう。サンプルコードは次の通り。main()上記の実行結果は次の通り。0.09724228389477375各種評価指標と確率の平均値については、先ほどと同じような振る舞いを見せている。グラフについては次の通り。こちらも、ロジスティック回帰と同様にアンダーサンプリングで生じたバイアスが低減できていることが分かる。する今回は、前回のエントリを書くきっかけになったネタについて。未処理の例外が上がったときの処理をオーバーライドする注目記事スポンサードリンクスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。