Data Analysis

データ分析について語ります。

ビックデータ分析はロバストで行こう、平均さえ気を付けないと危ないかも

ロバストとは

ロバスト(En: robust)は、堅牢な、頑強な、強靭な、みたいな意味の言葉です。

 

古典統計(というと怒られるかもしれませんが、データサイエンスに比べた従来の統計学、と取ってください)では、サンプリングが基本です。なので、外れ値みたいなものを取り込みにくかった、といえます。

IoT化が進み、DXも叫ばれるようになってきて、大量のデータ、Big Dataを扱うことが多くなってきました。Big Data解析やデータサイエンスの領域では、全てのデータを扱うことが多いです。そうなると、外れ値(En: outlier)みたいなものの影響は避けられなくなります。

一応、ロバスト統計と呼ばれる古典的な手法は確立されています。ここら辺をうまく活用しないと惑わされます。

Big Dataではヤバヤバな基本統計量 平均すら怪しい…

Big Data解析で、そのままやるとどういう危険があるのか、見てみます。

皆さん、平均の計算はよくやりますね。例として1が10個あるとします。平均値は1ですね。ちなみに標準偏差は全部同じ値なんで0です。

mean(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)) = 1 ← 平均

sd(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)) = 0 ← 標準偏差

この中で1個だけ外れ値9991を入れてみます。

mean(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 9991)) = 1000  ← 平均
sd(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 9991)) = 3159.115 ← 標準偏差

とんでもないことになりましたね。10個中9個は1なのに、平均が1000!。こういうシンプルで分かり易い事例ではすぐ気づけますが、例えば数百とか数千の変数を同時に扱っているときに、これに気付けるか、は微妙かと思います。さらにもう一個外れ値を入れて、最大・最小まで見てみましょう。

mean(c(-9989, 1, 1, 1, 1, 1, 1, 1, 1, 9991)) = 1 ← 平均
sd(c(-9989, 1, 1, 1, 1, 1, 1, 1, 1, 9991)) = 4709.331 ← 標準偏差
max(c(-9989, 1, 1, 1, 1, 1, 1, 1, 1, 9991)) =  9991 ← 最大
min(c(-9989, 1, 1, 1, 1, 1, 1, 1, 1, 9991)) = -9989 ← 最小

Big Dataではロバストな手法を取り入れましょう

基本統計量ばかりですが、如何に外れ値に弱いかお判りいただけたと思います。ケアしなければすぐ破綻します。ここら辺ちゃんとやらないと、いくら機械学習駆とか使しても残念なことにしかならないです。そうならないようロバストに行きましょう。