【数据挖掘】特征相关性挖掘神器-线性非线性关系一键挖掘!
作者:杰少
Kaggle競(jìng)賽知識(shí)點(diǎn)--PredictivePowerScore(PPS)
簡(jiǎn) 介
很多時(shí)候,我們?cè)谟?jì)算特征之間相關(guān)性或者繪制相關(guān)性矩陣的時(shí)候習(xí)慣性地會(huì)使用Pearson相關(guān)性,這在諸多問(wèn)題中確實(shí)可以為模型預(yù)測(cè)等方面帶來(lái)很多幫助,但它卻存在著下面三個(gè)比較大的問(wèn)題:
考慮的是特征之間的線性關(guān)系,如果絕對(duì)值越大,那么兩個(gè)變量之間的線性相關(guān)性就越強(qiáng),反之線性關(guān)系就越低;如果兩個(gè)變量之間存在極強(qiáng)的非線性關(guān)系,也會(huì)因?yàn)榫€性關(guān)系較低,而被誤以為沒(méi)什么關(guān)系;
沒(méi)法同時(shí)適用于類別變量和數(shù)值變量的關(guān)系計(jì)算,或者計(jì)算得到的分?jǐn)?shù)價(jià)值也不大;
相關(guān)性系數(shù)矩陣是對(duì)稱的,而在許多問(wèn)題中我們特征變量之間的關(guān)系并不一定是對(duì)稱的;
那么有沒(méi)有一種方法可以同時(shí)緩解上面的幾個(gè)問(wèn)題呢?有的!就是本文介紹的PPS(Predictive Power Score)。
Predictive Power Score
假設(shè)我們有兩個(gè)變量,想要計(jì)算變量預(yù)測(cè)的能力,我們通過(guò)下面的方式進(jìn)行計(jì)算:
將變量作為目標(biāo)變量,將作為特征;
使用決策樹(shù)進(jìn)行交叉驗(yàn)證,并依據(jù)評(píng)估指標(biāo)計(jì)算得到分?jǐn)?shù)cross_score;
當(dāng)變量為數(shù)值型,我們使用Decision Tree Regressor并計(jì)算MAE);
當(dāng)變量為類別型,我們使用Decision Tree Classifier并計(jì)算weighted F1);
計(jì)算的值作為我們最終的分?jǐn)?shù);
分類問(wèn)題:final_score = (cross_score - naive_score)/(1-naive_score),這里naive_score是出現(xiàn)最多的類作為最終預(yù)測(cè)結(jié)果計(jì)算得到的分?jǐn)?shù);,使用中位數(shù)作為最終預(yù)測(cè)結(jié)果計(jì)算得到的分?jǐn)?shù);
回歸問(wèn)題:final_score = 1 - (cross_score / naive_mae),這里naive_score是使用中位數(shù)作為最終預(yù)測(cè)結(jié)果計(jì)算得到的分?jǐn)?shù);
代碼
此處我們構(gòu)建一個(gè)二次關(guān)系:特征從-2到2的均勻變量,目標(biāo)是的平方加上一些誤差,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.對(duì)稱性分析
變量的分?jǐn)?shù)是不一樣的,非對(duì)稱的;
2.可視化
基于PPS的相關(guān)性矩陣
基于Person相關(guān)系數(shù)的相關(guān)性矩陣
3.小結(jié)
從上面的分析我們可以發(fā)現(xiàn):
基于Person相關(guān)系數(shù)的方法完全沒(méi)有找到與的潛在關(guān)系;
給予PPS的方法則完美的找到了與以及perfect的關(guān)系。
適用問(wèn)題
PPS的方法適用的問(wèn)題非常多,應(yīng)用的方面也很廣,此處我們將其歸納為下面幾點(diǎn):
數(shù)據(jù)分析:PPS的方式可以表示兩個(gè)數(shù)據(jù)之間的潛在關(guān)系(線性的非線性的),PPS的相關(guān)性圖是非常好的一種可視化的解釋方式;
特征篩選,其特征篩選的方式和Pearson相關(guān)性的方式類似,如果我們變量與標(biāo)簽之間的PPS分?jǐn)?shù)很低的話,那么該特征可能和我們的目標(biāo)變量并不存在任何關(guān)系,包括線性的和非線性的關(guān)系,可以考慮直接刪除處理;
信息泄漏:使用PPS矩陣檢測(cè)變量之間的信息泄漏-信息泄漏是通過(guò)其他變量導(dǎo)致的。
當(dāng)然因?yàn)镻PS是基于模型(目前主要是決策樹(shù)相關(guān)的模型)計(jì)算得到的,所以它也帶來(lái)了一些劣勢(shì):
計(jì)算時(shí)間更高;
PPS的分?jǐn)?shù)無(wú)法像相關(guān)性那樣容易解釋(線性相關(guān)性的PPS可能為1,二次關(guān)系的PPS也可能為1),所以PPS更適合于發(fā)現(xiàn)模式;
無(wú)法用嚴(yán)格的數(shù)學(xué)方法比較不同目標(biāo)變量的得分,它們是使用不同的評(píng)估指標(biāo)計(jì)算得到的;
目前的PPS是基于決策樹(shù)為主的模型進(jìn)行計(jì)算的,所以決策樹(shù)的劣勢(shì)也會(huì)在PPS計(jì)算中存在;
參考文獻(xiàn)
Predictive Power Score vs Correlation
Correlation Vs Predictive Power Score
RIP correlation. Introducing the Predictive Power Score
https://github.com/8080labs/ppscore
總結(jié)
以上是生活随笔為你收集整理的【数据挖掘】特征相关性挖掘神器-线性非线性关系一键挖掘!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 小鱼一键重装系统win7教程
- 下一篇: 鸿蒙系统桌面小艺建议怎么删除?鸿蒙系统小