大規模なデータで不正な変数をすばやく検出するにはどうすればよいですか?


7

数百万行、数千列のデータセットがあり、タスクはバイナリ分類であるとします。ロジスティック回帰モデルを実行すると、パフォーマンスは予想よりもはるかに優れています(たとえば、ほぼ完全な分類)。

データに不正な変数があると思われますが、どうすればすばやく検出できますか?

ここで不正な変数とは、応答を非常に示す変数であり、使用すべきではありません。たとえば、ユーザーがカスタマーサービスに電話をかけた場合に使用して、その人が製品を購入したかどうかを予測します。


2
ここでの「不正変数」の考えは、「相関=因果関係」の誤解(またはおそらく「予測」)に似ています。しかし、あなたの提案は、「1つの予測因子が結果を支配するかどうかをどのように判断するか?」のように見えます。これは、さらなるQA / QCのために変数にフラグを立てるのに役立ちますが、決定的ではありません。最後の例では、データのタイムスタンプが決定的です(つまり、購入はコールに続くため、因果関係の矢印が逆方向であるため「チート」します)。
GeoMatt22

@ GeoMatt22コメントありがとうございます。離反は明確ではありません。また、1つの変数ではなく変数の線形結合を定義に含め、「不正行為」として扱うことの強さを定義する必要があるかどうかも考えています。
Haitao Du

「強い関連」は、純粋に論理的な方法で「因果関係vs.チート」を推測するために使用することはできないと思います。ただし、ベイジアンの意味では、「真実であるにはあまりにも良い」事前は価値がないように見えます。しかし、これを形式化する方法がわかりません:)(特定のドメインでは、「以前の因果関係のある PDF」を蓄積できると思いますか?)R2
GeoMatt22

プロセスノート:フィードバックを促すために、回答を投稿する前に遅らせることができます。(または、私がここで行っように、あなたの意図についてのメモを投稿してください。)
GeoMatt22

1
@ hxd1011:データ漏洩を伴う別のインスタンスを見たい場合は、この最近のスレッドを参照してください。提供されているその他の参考資料やリンクも役立つ場合があります。
usεr11852

回答:


11

これは、「データ漏洩」と呼ばれることもあります。これに関する素晴らしい論文がここにあります:

データマイニングの漏洩:公式化、検出、および回避

上記の論文には、データ漏えいの面白い(そして恐ろしい)例がたくさんあります。たとえば、研究全体でグループがどのように形成されたかに起因して、患者ID番号が将来の癌をほぼ完全に予測していることが判明した癌予測競争などです。 。

データ漏洩を特定する明確な方法はないと思います。上記の論文にはいくつかの提案がありますが、一般的にそれは非常に特定の問題です。例として、機能とターゲット間の相関関係だけを確認することができます。ただし、場合によっては見落とすことがあります。たとえば、stackexchangeのようなWebサイト用のスパムボット検出器を作成しているとします。メッセージの長さ、コンテンツなどの収集機能に加えて、メッセージが別のユーザーによってフラグが付けられたかどうかに関する情報を収集できる可能性があります。ただし、ボット検出器をできるだけ高速にしたい場合は、ユーザーが生成したメッセージフラグに依存する必要はありません。当然、スパムボットは大量のユーザー生成メッセージフラグを蓄積するため、分類器はこれらのフラグに依存し始める可能性があります。メッセージの内容はそれほどではありません。このようにして、フラグを機能として削除することを検討する必要があります。これにより、クラウドソースのユーザーの努力よりも速く、つまり、幅広い聴衆がメッセージにさらされる前に、ボットにタグを付けることができます。

他の場合には、あなたの検出を引き起こしている非常に愚かな機能があります。軍隊がタンク探知器を作成しようとした方法に関するストーリーについての素晴らしい逸話があります。これはほぼ完全な精度でしたが、代わりに曇りの日を検出することになりました。タンクなしで晴れた日に撮影されました。これに関する非常に関連性の高い論文は、「なぜ私はあなたを信頼しなければならないのですか?」:分類子の予測を説明する -リベイロ、他 al。


1
わからない質問に答えてくれてありがとう+1!そして今、私は用語を知っており、彼らの公式を読みます!
Haitao Du

最後の段落で:軍は明らかにその教訓を心に留めました
GeoMatt22

2
+1私が遭遇する最も一般的なリークは、未来からのリークです。これが、「データをアルゴリズムで実行するだけで、データサイエンティストのようなモデルが作成される」という新しい状態があまり心配されない理由です。製品。信号がリークであっても、機械学習が信号を追跡します。
ウェイン

2

不正変数を検出する1つの方法は、ツリーモデルを作成して、最初のいくつかの分割を確認することです。これはシミュレーションの例です。

cheating_variable=runif(1e3)
x=matrix(runif(1e5),nrow = 1e3)
y=rbinom(1e3,1,cheating_variable)

d=data.frame(x=cbind(x,cheating_variable),y=y)

library(rpart)
library(partykit)
tree_fit=rpart(y~.,d)
plot(as.party(tree_fit))

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.