1 外れ値とは
外れ値は、統計学において、他の値から大きく外れた値のことです。
モデルに学習させるうえで、精度を下げてしまう要因になるので、学習前に除去しておくことで、モデルの評価値が向上します。
2 3σ法
今回は、外れ値を除去するのに3σ法を使う方法を紹介します。
3σ法では、平均と標準偏差を使って、外れ値を除去します。
$\mu$ 平均
$\sigma$ 標準偏差
としたとき、
\mu-3\sigma \leq x \leq \mu+3\sigma
という数式です。
# 平均値
mu = df['A'].mean()
# 標準偏差
sigma = df['A'].std()
# 3σ法の中身を取得
df2 = df[(mu - 3 * sigma <= df['A']) & (df['A'] <= mu + 3 * sigma)]
このdf2
が上記の数式でいうx
にあたります。
これで外れ値を除去することができました。
2.1 対数変換
対数変換は、きれいに正規分布していないデータを、なんとか無理やり正規分布に近似させたい時に使います。
絶対に正規分布に近づくというわけではないのですが、とりあえず試してみて損はない方法です。
例えば3σ法の前に使うとしたら、コードはこのようになります。
# 対数変換
logA = np.log1p(df['A'])
# 平均値
mu = logA.mean()
# 標準偏差
sigma = logA.std()
# 3σ法の中身を取得
df3 = df[(mu - 3 * sigma <= logA) & (logA <= mu + 3 * sigma)]