2016-07-24 2 views
2

私は現在、データベースの一部に誤ラベルが付いています。データベースの異常値データポイントを検出する方法

例データ:このデータに

Product - Price - SalesDate 
ProdA - 10 - 1/1/2016 
ProdB - 20 - 1/2/2016 
ProdA - 100 - 1/3/2016 
ProdB - 20 - 1/4/2016 
ProdB - 21 - 1/5/2016 
ProdA - 11 - 1/6/2016 

レコードセット "ProdA - 100 - 2016年1月3日は、" エラーが発生したものです。おそらく価格を入力した人は入力ミスを犯したはずです。さらに、異なる日にProdAが価格を変える可能性があるため、この問題が面白くなります。

この種類のレコードを特定するのに役立つツールにはどのようなものがありますか?異常値データポイントをSQLで手助けすることはできますか?私はこれについて機械学習を調べ始めるべきですか?

+0

あなたの質問には使用しているデータベースを付けてください。 –

答えて

3

これは少し主観的ですが、値が平均値から最も離れている行を特定できます。私はz-スコアを計算し、最大/最小のz-スコアを調べることでこれを行います。

z-スコアは、平均値から標準偏差を除いた値です。ここでは、計算の例です:

select t.*, 
     (price - avg_price)/nullif(std_price, 0) as z_price 
from t join 
    (select product, avg(price) as avg_price, stdev(price) as std_price 
     from t 
     group by product 
    ) tt 
    on t.product = tt.product 
order by abs(z_price) desc; 

標準偏差のための機能は、使用しているデータベースに応じて、異なる場合がありますが、ほとんどのデータベースは、このような機能をサポートしています。

関連する問題