キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
DataRobot コミュニティ

2値分類におけるweightの設定について

rikuo.tanaka
青色LED

2値分類におけるweightの設定について

  • DataRobot上の処理において、weightの設定はどのように作用するのでしょうか。
    weightは
    モデル学習時の損失関数に追加され、偏りがあるデータの検出力を上げる使われ方をすると理解していますが、他にありますでしょうか。

  • DataRobot上で評価>ROC曲線のメニューから見ることができる
    Holdoutや交差検証での精度について、weightが掛けられた状態で算出されているかと思います。通常、予測(スコアリング)精度の計算時にはweightは用いられないため、Holdoutや交差検証においてもweightを掛けた精度算出は行わないべき(ミスリードになる)と思っておりますがいかがでしょうか。

    私の理解に誤りがありましたらご指摘いただけますと幸いです。

 

0 件の賞賛
1件の返信1
Kotaro Wakatsuki
データサイエンティスト
データサイエンティスト

ご質問ありがとうございます。

  • weightの作用の仕方について
    おっしゃる通り、学習時の損失関数で適用され、どの行を重視して学習するかの重みづけができます。イメージとしては、重みをつけたデータが複数回出現するように扱うことになります(詳細についてはこちらのブログの「加重指標の場合」、および過去の質問もご参照ください)。
  • Holdoutや交差検証でweightを使うべきか否か
    こちらはweightの使い方による、ということになります。
    例えばDataRobotの機能の一つであるスマートダウンサンプリングでは、Majority ClassのデータをダウンサンプリングしたのちにMajority Class側を重視するよう重みをつける、といった処理を行なっています。単純にダウンサンプリングをするとMajority Classのデータが学習時に減ってしまい予測・実運用時のデータの分布と異なってしまう問題が発生しますが、このような対応を行うことで元データの分布が崩れるリスクを最小限にとどめつつ学習時間を短縮するというダウンサンプリングの恩恵を受けることができます。このように、何らかの理由で実運用時のデータの分布と学習時のデータの分布が異なるときにはweightを使って評価を行うのがむしろ適切である、ということになります。もちろん、DataRobot外でダウンサンプリングした上でweightをつけていただくことで、元が膨大なデータであってもDataRobotでモデリングできるようにしつつ、学習時と予測時の分布とのズレも抑えるといった使い方をすることもできます。
    一方でそうでない何らかの理由でweightをつける場合、おっしゃる通り予測時にはweightが用いられないため、学習時と予測時とで精度が異なってくるリスクが生じてきます。このようなリスクを許容できるのかなども鑑み、正しく理解した上で用いることが重要となります。
0 件の賞賛