機器學習特徵工程之皮爾森相關係數 pearson correlation of features
示例圖:
皮爾森相關係數為了確定 每個特徵之間是否緊密相關,如果很相關就屬於重複特徵,可以去除。 我們輸入機器學習模型中的每個特徵都獨一無二,這才是最佳。
python實現代碼
import seaborn as sns #圖表模塊
import matplotlib.pyplot as plt #繪圖模塊庫
colormap = plt.cm.RdBu # 繪圖庫中的顏色查找表。比如A1是紅色,A2是淺藍色。 這樣一種映射關係
plt.figure(figsize=(14,12))#創建一個新的圖表,參數是尺寸,單位為英寸。
plt.title("Pearson Correlation of Features", y=1.05, size=15) #給圖表一個標題~~
sns.heatmap(train.astype(float).corr(),linewidths=0.1,vmax=1.0,square=True, cmap=colormap, linecolor="white", annot=True) #將皮爾森係數值畫成圖表形式。
代碼解釋:
這裡的train.astype(float).corr() 中的train 是python pandas模塊中DateFrame結構,這裡存儲著的是機器學習模型的訓練數據, 然後通過.corr()求皮爾森相關係數方法,計算出相關係數。
corr()是correlation的縮寫,中文意思為相關。
演算法底層原理:
皮爾森係數公式為:
cov(X,Y) 是求X數組和Y數組的協方差。
協方差公式為:
當協方差值>0時,表明兩個數組正相關
當協方差值=0時,表明兩個數不相關
當協方差值
回到皮爾森相關係數,現在我們已經知道了 協方差計算出了 相關性,但是只知相關性,而無法度量它強和弱,
如何度量強和弱呢?
這是用協方差/(X數組的標準差*Y數組的標準差),
這個公式的作者是否從餘弦距離得到的啟發呢?如下圖
最終我們計算出了-1 到 1 的取值結果。
公式求的值對應下面圖表(省略了x軸和y軸,自行腦補。。),例如1和-1 他們就是線性相關,一個是正相關,一個負相關,而0就是沒有任何關係的
這樣我們就求得了兩個數組之間的關係程度,排除強相關特徵,降低機器學習數據維度,從而得到更好的模型。
※人人都能看懂的機器學習!3個案例詳解聚類、回歸、分類演算法
※機器學習頂會 ICML 2018 開始了
TAG:機器學習 |