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

ポジネガの割合に大きな差がある二値分類

Hasegawa
イメージセンサー

ポジネガの割合に大きな差がある二値分類

ただいま取り扱っている二値分類では、
実際の現象の発生割合は
ポジティブ(緑):ネガティブ(紫) = 1:9
程度となっており、DataRobotに投入したデータも同じ割合です。

このようなデータに対して予測するモデルの作成を行いましたが、
予測分布は添付画像のようなものになりました。
ネガティブはしっかり分類できているものの、
ポジティブは一様分布のような形であり、あまり特徴を捉えられていないようです。

ネガティブデータの割合が多すぎるために、このような結果になった可能性もあるのかと考えました。

DataRobotへ投入する教師データをポジネガの割合を1:1になるようにサンプリングすることで、
ポジティブ側の特徴も捉えられるようなモデル作成を目指す、
というアプローチはあり得る手段でしょうか?


大変素人質問で恐縮ですが、ご回答いただけますと幸いです。

 

※画像は最も検定値の良かったモデルですが、他のモデルでも同様の傾向(ポジティブの分布が一様)でした

予測分布.png

0 件の賞賛
8件の返信8
Kei
データサイエンティスト
データサイエンティスト

Imbalancedなデータの問題に対しては、おっしゃる通りover-samlingとunder-samlingmといって、データを増やしたり減らしたりする方法はございます。

ただ、もとのデータ割合から離れてしまったりするため、また今回は1対9のデータということでそこまでImbalancedではないとお見受けするので、まずはデータの割合を変更せずに精度を向上できるか考えていくことをおすすめします。

False negativeになっているサンプルを確認しながら、なぜ間違って判定しているのか生のデータから仮説を立てるとやりやすくなると思います。誤判定しているデータを判定するのに役立つ特徴量を新しく考えてみるなど、是非ご検討いただければと思います。

 

もし、誤判定しているデータが熟練の方でも判定できない場合はモデルで判断することも難しい可能性があるため、そういったサンプルについては誤判定する可能性も念頭にいれたビジネス適用を検討してみることも必要になるかと思いますが、まずは上記方法で精度向上を検討してみてください。

Isao
データロボット同窓生

質問にダイレクトに答えるのであれば、ポジネガの割合が原因ではなく、特徴量の不足が第一要因として考えられます。ご認識の通り、今の特徴量ではネガティブをしっかり捉えられているものの、ポジティブが捉えきれていない様子です。

こうなるケースは、ポジティブとなる為の背景要因が一つでは無く、多種多様な要因がある場合です。一部は今の特徴量で捉えることが出来るものの、他の様々な要因について今の特徴量では捉えきれず、モデルが断言できていないように見えます。

一方、ネガティブについてはモデルが妙に断言していますので、リーケージを警戒して下さい。例えば、ある特徴量が特定の値の場合は必ずネガティブ、ある特徴量が欠損の場合は必ずネガティブ、同じ行が実は複数ある・・などなど、データを作る時に問題があるケースがあります。これは、DataRobotの予測の説明を見れば何か気付けるかも知れません。

もしそうしたリーケージが無い場合、実はこのモデルは既に非常に高い分類性能を持っています。グラフのオレンジの閾値を見ていただければ分かりますが、左側の負例がほぼ確実に予測出来ているということは、そのギリギリに閾値を引くことで、ほぼ確実に右側の正例が予測できます。プレシジョンはほぼ1で、AUCは0.9を超えているのでは無いでしょうか。ビジネスの目的にもよりますが、問題が無いのであればこのまま実運用が行えるレベルのモデルかもしれません。(ただし、経験上前述したリーケージのケースが多いので、その確認を強くお勧めします。)

Hasegawa
イメージセンサー

Kei様 Isao様

ご回答誠にありがとうございます。
ご回答の内容が理解できたと思います。
この先の対処として、新しい特徴量を考える方向のイメージもできました。


リーケージに関しまして、
初めて聞きました言葉ですのでインターネットで調べてみましたところ
現実に予測するにあたり知りえない情報が特徴量に含まれることで
予測の精度が上がってしまうことというような理解をしました。

リーケージの具体例としてIsao様が挙げてくださった
「ある特徴量が特定の値の場合に必ずネガティブになる」
という特徴量がないかを確認しましたところ、ありました。
下に画像を添付します。

特徴量'Explanatory5'のヒストグラム.png

先の質問文に記載しましたように、今回のデータ全体ではポジティブの割合は10%ほどですが、
この特徴量の値が30を超えたあたりから、ポジティブ率は5%を下回り10%から大きく離れていきます。
これはIsao様が例として挙げてくださったケースに該当すると思います。

しかし、この特徴量は予測にあたり利用可能な値です。
よってリーケージとは言えず、予測モデルの実運用の問題にはならないと考えました。
認識は正しいでしょうか?


またリーケージに関しまして、過去のご投稿を拝見しまして

https://community.datarobot.com/t5/%E8%B3%AA%E5%95%8F-%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AB%E3%83%83%...

Miokawa様のご返信より
ホールドアウトデータで精度確認をすることがリーケージの一つのチェックになる
という理解をしました。
これについて認識は正しいでしょうか?

0 件の賞賛
Isao
データロボット同窓生

はい、リーケージについてはご調査頂いた通りです。予測時に使える情報かそうでないかがポイントとなります。以下もご参考頂ければ幸いです。

https://community.datarobot.com/t5/中上級者向け情報/リーケージとは/ta-p/4251

ここからはビジネス知識の出番になります。まずはこの特徴量が何を表しているのか、実際に業務を行っている専門家の方と一緒に確認を行い、実際にターゲットに関して関連する特徴量であるか、納得性があるかを確認します。

そして本当に予測する時点で使えるデータであれば問題ないのですが、例えば別のトピックで例に上げて頂いた工場の部品関連であれば、

・部品の不良を予測したいのに、最終検査の検査値が入っている。

 →実際に製造してからでないと分からず、検査値は不良の際に値が低くなるものだった。

・部品の購入を予測したいのに、先方への営業回数が入っている

 →即時購入してくれたから営業回数が少なく、なかなか買ってくれなかったから営業回数が多かった。

等々、業務によって枚挙にいとまが無く、色々なパターンで混在してしまうことがあります。

その時に、確かに手っ取り早いのは引用頂いた小川のアイデアですね。これはDataRobotにおけるホールドアウトではなく、まさに「たった今から実業務に使う」としてデータをホールドアウトとして新しく入手するイメージです。実施できればデータを集める時点でリーケージをあっさり見つけることが出来るかも知れません。

色々お伝えしましたが、この特徴量の素性をしっかり確認して、モデルに入れて良いのかを実業務を行っている方と確認頂き、それでも問題無いと言うことであれば実際に使ってしまって構わない、と言うことになります。

(ただし、本当に予測に使っていいとすれば、DataRobotを使わずともこの特徴量の値だけでルールベース的に「10以上はほぼFalse」として、人間でもかなりの精度で予測できる、難易度の低いタスクと言うことにはなります。その辺りのタスク自体の難易度感覚も、こう言ったリーケージを見極めるヒントになります。)

Hasegawa
イメージセンサー

Isao様

ご回答ありがとうございます。

>> 本当に予測に使っていいとすれば、DataRobotを使わずとも
>> この特徴量の値だけでルールベース的に「10以上はほぼFalse」として、
>> 人間でもかなりの精度で予測できる、難易度の低いタスクと言うことにはなります。

ご指摘の通り、この特徴量の値が非常に大きい場合にFalseなることは業務的に明らかなことです。
しかしこの特徴量の値が0に近くなるほどにファジーになる性質であり、DataRobotで予測を試みています。


今回の特徴量を決めるにあたり
リーケージの観点で深く考えたわけではありませんでしたが
「(普通に考えて)予測する時点よりも未来に得られるデータはだめだろう」
という視点を持っておりましたので今回はその問題はないのですが、
一般に陥りやすい問題だと認識しました。
自分なりに考えてみますと、
データの素性を(工数都合などで)精査せずに分析に入る場合や
元々蓄積されているデータの特徴量の名前だけを見て意味を誤解した場合に
陥りうると思いました。

Isao
データロボット同窓生

>ご指摘の通り、この特徴量の値が非常に大きい場合にFalseなることは業務的に明らかなことです。
>しかしこの特徴量の値が0に近くなるほどにファジーになる性質であり、DataRobotで予測を試みています

なるほど!失礼しました。そういった背景であれば、今回の結果も納得性がありますね。

はい、仰る通りで、「持っているデータをとりあえず入れてみよう」というアプローチをしてしまうと非常に陥りやすい問題です。Hasegawa様のように未来のデータは使わない、データの素性をチェックする、ということをして頂ければ、こうした特徴量の"列のリーケージ"にはハマりにくいです。

しかし、実はもっと分かりにくい"行のリーケージ"というのもあり、同じ部品が複数行存在しているだとか、時系列的なデータをそのまま交差検定に掛けてしまっているとか。そう言ったデータの作り方側でも不当に精度が高いモデルが出来る場合があり、機械学習に慣れている方でもうっかりハマる場合があります。今後もこの「リーケージ」という問題についてぜひ気を付けて頂ければ幸いです。

さて、もしこの問題が無いとすれば、前述した通り既にかなりの識別性能を持っていると推測されます!このまま実際にお使い頂いても良いと思いますし、さらなるモデルの向上についてはKeiのコメントの通り、何を誤っているかの検証頂くのが良いかと思います。

予測タブで「トレーニングデータ」の「予測を計算」→ダウンロードを頂くことで、そうした検証がやりやすいです。

その際、ダウンロードに含める特徴量に「IDに相当する列」と「ターゲット列」を設定してダウンロード頂くと検証がやりやすいかと思います。頑張ってください!

Isao_0-1612500617512.png

 

Hasegawa
イメージセンサー

ご回答誠にありがとうございます。

行のリーケージを概念として理解できていないかもしれませんが、
例に挙げて頂いた点はデータ準備の時点で検討・ケアできています。

  時系列性 → なし
  レコード重複 → 無くなるよう処理済み


ご教授頂く中で自分の頭も整理されてきたように思います。
この高いAUCなど指標は全体としてどれだけ良い予測ができているか示しているだけであり、
それは先の特徴量Xなどによって大方の判断ができていることに依存している可能性があり、
ではファジーな(ことが業務知見で分かっている)エリアに限ればどれほど予測できているかを見ていく必要がありそうです。
※むしろ最初に掲載しました予測分布でTrueが一様分布になっていることを考えると、
 ファジーなエリアはまったく予測できていないかもしれません

今回の予測モデルをどう業務適用するか詳細はまだありませんが、
人間の判断と併用する形を取るのであれば、
むしろファジーなエリアだけが重要ということになってきます。

その上で、予測モデルの足りない部分を調べるために、ご説明頂いている「予測の計算」を活用していきます。
ありがとうございます。

Isao
データロボット同窓生

課題の整理のお手伝いが出来て大変嬉しいです!

仰る通り、ビジネス上のご興味に焦点を合わせて解析して頂くのが重要と思います。

今後も何かありましたらお気軽にご質問下さい!

0 件の賞賛