2(2).特征處理---連續型特征


一.查看變量的缺失值(missing value,空值)個數以及所占比例

連續型數據探索

 

二.畫頻數占比分布圖,查看樣本在該特征值上的分布

  • 根據連續變量的值域范圍,將該變量分成10箱,就是分成10段,箱數可自由選擇;
  • 統計每一箱內樣本的頻數占比:該箱內樣本個數/總樣本個數。然后將每一箱的頻數比例畫出來:
sns.distplot(data,kde=True) # 或 df.hist(bins=10)

 

三.畫“好壞樣本比”曲線,也叫比率曲線

  • 根據連續變量的值域范圍,將該變量分成10箱,就是分成10段,箱數可自由選擇;
  • 統計每一箱內的兩類樣本的比值:該箱內label=1的樣本個數 / 該箱內label=0的樣本個數;
  • 可以看出該特征對兩類樣本的區分度。
  • 問題:在實際畫圖的時候,會出現一個問題,當分母=0的時候,該比值會無窮大,畫不出來;
  • 解決辦法:找到該樣本集中總體占比多的那一類,比說label=1的樣本多,那么統計每一箱內label=1樣本個數 / 該箱內總樣本個數,效果也是一樣的,因為就只有兩類。

 

四.極端值分析

  • 在上一步畫圖的時候,就可以看出來有哪些極端值
  • 除非是計算或者人為錯誤,極端值需要從業務層面進行分析
    • a) 分別計算“擁有極端值的那些樣本中,label=1樣本的占比R1” 和“擁有非極端值的那些樣本中,label=1樣本的占比R2”
    • b) 如果R1明顯大於R2,則說明極端值有業務意義,建議保留,特別是從反欺詐的角度來分析一
    • 3)如果是計算或者人為錯誤,極端值的影響可以通過分箱被中和,對模型訓練沒有影響;也可以將極端值設置成缺失值/空值,然后用處理缺失值的方法進行處理

 

五.計算變量的方差

# 計算變量的方差
# 如果方差接近於0,也就是該特征的特征值之間基本上沒有差異,這個特征對於樣本的區分並沒有什么用,剔除
from sklearn.feature_selection import VarianceThreshold
selector = VarianceThreshold(threshold=0)#默認threshold=0.0
selector.fit_transform(data[all_used_features])

# 查看各個特征的方差,
selector.variances_ ,len(selector.variances_)

selector.get_params(deep=True)
# {'threshold': 0}

all_used_features_dict = dict(zip(all_used_features,selector.variances_ )) #特征和方差的對應  

 

六.查看變量與label之間的相關性

 連續型特征與連續型特征間的相關性

 

七.查看變量之間的相關性

特征選擇---特征相關性分析

 

八.計算變量IV值(也可以考慮Gini系數)

目的:篩選變量,IV值低的變量根據業務分析決定是否剔除,一般情況下,

<0.02的變量可剔除
<0.02 unpredictive 0.02 – 0.1 weak (maybe acceptable) – 0.3 medium >0.3 strong

 

九.計算AUC

計算單變量的AUC:該變量經過lightgbm之后的AUC,AUC>0.53可以考慮留下

 

十.計算importance

將上面步驟篩選出來的特征,全部輸送到lightgbm算法中訓練,得到每一個特征的importance,過濾掉importance=0的變量。

 

十一.其他考慮因素

 以上所有特征工程的步驟,都要跟業務結合在一起,綜合考慮,衡量一個變量采用與否。

 

參考文獻:

【1】特征工程步驟——以二分類問題為例

【2】【Python數據分析基礎】: 數據缺失值處理

【3】5種方法教你用Python玩轉histogram直方圖

【4】【持續更新】機器學習特征工程實用技巧大全


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM