日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据挖掘】特征相关性挖掘神器-线性非线性关系一键挖掘!

發布時間:2025/3/12 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据挖掘】特征相关性挖掘神器-线性非线性关系一键挖掘! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:杰少

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.對稱性分析

    • 變量的分數是不一樣的,非對稱的;

    pps.score(df,?"x",?"y") {'x': 'x','y': 'y','ppscore': 0.6698987690580689,'case': 'regression','is_valid_score': True,'metric': 'mean absolute error','baseline_score': 1.0177846519084408,'model_score': 0.3359719664287812,'model': DecisionTreeRegressor()} pps.score(df,?"y",?"x") {'x': 'y','y': 'x','ppscore': 0,'case': 'regression','is_valid_score': True,'metric': 'mean absolute error','baseline_score': 1.0030129309668745,'model_score': 1.0892163726367778,'model': DecisionTreeRegressor()}

    2.可視化

    • 基于PPS的相關性矩陣

    plt.figure(figsize=[10,6]) matrix_df?=?pps.matrix(df)[['x',?'y',?'ppscore']].pivot(columns='y',?index='x',?values='ppscore') sns.heatmap(matrix_df,?vmin=0,?vmax=1,?cmap="Blues",?linewidths=0.5,?annot=True) <AxesSubplot:xlabel='y', ylabel='x'>
    • 基于Person相關系數的相關性矩陣

    plt.figure(figsize=[10,6]) sns.heatmap(df.corr(),?vmin=0,?vmax=1,?cmap="Reds",?linewidths=0.5,?annot=True) <AxesSubplot:>

    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

  • 往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼:

    總結

    以上是生活随笔為你收集整理的【数据挖掘】特征相关性挖掘神器-线性非线性关系一键挖掘!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。