Skewness[ˋskjunɪs] 稱為偏度,這是分析離群值的重要演算法,屬於特徵工程的一種。就是在眾多的特徵中,將有問題特徵挑出來,再進行後續的處理。後續怎麼處理呢? 方法可多著了,比如用 log 拉近,也可用平方根,三次方根,或者更絕的就是直接去除。
至於 Skewness 怎麼計算呢,請放慢腳步,看看底下的說明。
Seaborn位置分佈
上一章的 波士頓房價預測,可以看出 LSTAT 的值呈現如下分佈
import pandas as pd
import seaborn as sns
import pylab as plt
display=pd.options.display
display.max_columns=None
display.max_rows=None
display.width=None
display.max_colwidth=None
df=pd.read_excel("boston.xlsx", sheet_name='Sheet1',index_col=0, keep_default_na=False)
lstat=df['LSTAT']
skew=round(lstat.skew(),2)
sns.histplot(lstat, kde=True)
plt.title(f'skew:{skew}')
plt.show()

整個分佈圖中,窮人的比例大都集中在 10%~20% 左右,但有著極少的數量介於30%-36%之間,這些少數的數量就是所謂的離群值,也就是異常的地方。
上面的代碼中, lstat.skew()就是計算偏度值,其值為 0.91。此值正數表示整個分佈重心在邊左,然後向右邊有零星的異常值。負數表示重心在右邊,然後左邊有零星的異常值。當然最好的資料 skew 為0。
修正Skewness
理論上(假設) skew 值愈接近 0 ,讓整個重心愈靠近中心,所預測出來的值就會更準確。所以我們先修正skew, 再來驗証預測的分數是否會提高。
修正 skew 有許多方法,目前我們將 LSTAT 開立方根看看 skew 的值是否有接近 0
