【数据挖掘】特征相关性挖掘神器-线性非线性关系一键挖掘!
作者:杰少
Kaggle競賽知識點--PredictivePowerScore(PPS)
簡 介
很多時候,我們在計算特征之間相關性或者繪制相關性矩陣的時候習慣性地會使用Pearson相關性,這在諸多問題中確實可以為模型預測等方面帶來很多幫助,但它卻存在著下面三個比較大的問題:
考慮的是特征之間的線性關系,如果絕對值越大,那么兩個變量之間的線性相關性就越強,反之線性關系就越低;如果兩個變量之間存在極強的非線性關系,也會因為線性關系較低,而被誤以為沒什么關系;
沒法同時適用于類別變量和數值變量的關系計算,或者計算得到的分數價值也不大;
相關性系數矩陣是對稱的,而在許多問題中我們特征變量之間的關系并不一定是對稱的;
那么有沒有一種方法可以同時緩解上面的幾個問題呢?有的!就是本文介紹的PPS(Predictive Power Score)。
Predictive Power Score
假設我們有兩個變量,想要計算變量預測的能力,我們通過下面的方式進行計算:
將變量作為目標變量,將作為特征;
使用決策樹進行交叉驗證,并依據評估指標計算得到分數cross_score;
當變量為數值型,我們使用Decision Tree Regressor并計算MAE);
當變量為類別型,我們使用Decision Tree Classifier并計算weighted F1);
計算的值作為我們最終的分數;
分類問題:final_score = (cross_score - naive_score)/(1-naive_score),這里naive_score是出現最多的類作為最終預測結果計算得到的分數;,使用中位數作為最終預測結果計算得到的分數;
回歸問題:final_score = 1 - (cross_score / naive_mae),這里naive_score是使用中位數作為最終預測結果計算得到的分數;
代碼
此處我們構建一個二次關系:特征從-2到2的均勻變量,目標是的平方加上一些誤差,perfect是的平方。
import?pandas??as?pd import?numpy???as?np #?!pip?install?-U?ppscore import?ppscore?as?pps import?matplotlib.pyplot?as?plt import?seaborn?as?sns df??????????=?pd.DataFrame() df["x"]?????=?np.random.uniform(-2,?2,?1_000_000) df["error"]?=?np.random.uniform(-0.5,?0.5,?1_000_000) df["y"]?????=?df["x"]?*?df["x"]?+?df["error"] df["y_perfect"]?????=?df["x"]?*?df["x"]? plt.figure(figsize=[10,6]) sns.scatterplot(x?=?'x',?y?='y',?data=df)? <AxesSubplot:xlabel='x', ylabel='y'>1.對稱性分析
變量的分數是不一樣的,非對稱的;
2.可視化
基于PPS的相關性矩陣
基于Person相關系數的相關性矩陣
3.小結
從上面的分析我們可以發現:
基于Person相關系數的方法完全沒有找到與的潛在關系;
給予PPS的方法則完美的找到了與以及perfect的關系。
適用問題
PPS的方法適用的問題非常多,應用的方面也很廣,此處我們將其歸納為下面幾點:
數據分析:PPS的方式可以表示兩個數據之間的潛在關系(線性的非線性的),PPS的相關性圖是非常好的一種可視化的解釋方式;
特征篩選,其特征篩選的方式和Pearson相關性的方式類似,如果我們變量與標簽之間的PPS分數很低的話,那么該特征可能和我們的目標變量并不存在任何關系,包括線性的和非線性的關系,可以考慮直接刪除處理;
信息泄漏:使用PPS矩陣檢測變量之間的信息泄漏-信息泄漏是通過其他變量導致的。
當然因為PPS是基于模型(目前主要是決策樹相關的模型)計算得到的,所以它也帶來了一些劣勢:
計算時間更高;
PPS的分數無法像相關性那樣容易解釋(線性相關性的PPS可能為1,二次關系的PPS也可能為1),所以PPS更適合于發現模式;
無法用嚴格的數學方法比較不同目標變量的得分,它們是使用不同的評估指標計算得到的;
目前的PPS是基于決策樹為主的模型進行計算的,所以決策樹的劣勢也會在PPS計算中存在;
參考文獻
Predictive Power Score vs Correlation
Correlation Vs Predictive Power Score
RIP correlation. Introducing the Predictive Power Score
https://github.com/8080labs/ppscore
總結
以上是生活随笔為你收集整理的【数据挖掘】特征相关性挖掘神器-线性非线性关系一键挖掘!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小鱼一键重装系统win7教程
- 下一篇: 【机器学习】平衡你的数据集的几项技巧