數據挖掘中的特徵工程-持續更新。。。。。
高集勢類別特徵的處理方法(經驗貝葉斯方法)
論文參考:
A Preprocessing Scheme for High-Cardinality Categorical Attributes in Classification and Prediction Problems
參考一個kaggle比賽:
很多預測或者回歸問題都需要數值類型特徵作為輸入,但是在現實中很多特徵都是類別特徵的,所以就出現了文中提高的使用統計方法對類別特徵進行處理的方法。
什麼是高集勢類別特徵(High-cardinality categorical data)
包含有很多取值的非數值特徵,如性別只能取到 男、女,這是一個類別特徵但是不是高集勢的。
高集勢類別特徵處理方法:
1、如果類別特徵的取值較少(如 10)經常的一個處理方法就是,那麼使用one-hot的方 法就可以解決類別特徵編碼問題。
2、如果取值很多的話,那麼使用上面的one-hot方法會帶來維度爆炸的問題,所以會使用到聚類的方法,如取值有N個,將這些聚類到K個類裡面,K<< N,是有每個類值去代替類中的每一個值,然後在使用one-hot處理,很明顯,聚類的方法會丟失原始數據中的信息
目標編碼(高集勢類別特徵的處理方法(經驗貝葉斯方法)):
編碼策略:將獨立的高集勢特徵值映射到獨立的高集勢特徵值的概率的估計值(翻譯好難看,原話是這樣的:map individual values of a high-cardinality categorical independent attribute to an estimate of the probability or the expected value of the dependent attribute)
這種編碼的方法適用的場景有:二分類、多分類、回歸問題
二分類中的編碼方法:目標值取值{0,1},高集勢特徵為 x,取值有 ,將 編碼後:
計算公式為: 為在Y = 1 X = 情況下的count值, 就是說X = 的count
這個公式存在很大的問題,只有少數的 ,那麼對它的估計s將會不可信,為此對其進行一下修改,上式s也是後驗概率。於是在式(2)中加入先驗概率,得到下式,
如果後驗概率不可信,那麼在加入先驗概率, 是所有訓練集中取到 Y = 1 的count, 是所有訓練集的count,也就是 shape[0],lambda(ni)是一個[0,1]範圍的函數s函數,
當使用的數據個數n很大的時候,lambda -> 1,此時就是給後驗(式(3)前半部分公式)交大權重,如果n比較少,那麼後驗估計就不可信,公式3,就會給先驗較大的權重,參數f控制s函數拐點的斜率,f控制的是。
缺失值的處理:
1、缺失值為數值的,那麼會以平均值填補
2、若果是低集勢的類別特徵,將這些特徵one-hot編碼處理,然後缺失值就是全0的3、有些模型會直接忽視缺失值,直接將缺失值作為另外一個值
而可以直接使用上面的方法去計算缺失值的映射
這個方法的好處是,如果缺失值與目標值有很大相關性,那麼這個公式就能很好的表達出相關信息。如果缺失值與目標值沒有太大關係,那麼S0S0也會很快收斂於先驗概率,這也是對缺失值的中立表示。
處理回歸問題中的高集勢類別特徵:很好理解哈,直接計算平均值來著,
推薦閱讀:
※數據挖掘簡介第一講(已完結)
※用時間序列的方法處理數據
※R 包 `ezdf`的講解
※《Python數據挖掘》筆記(二)關聯規則挖掘
※從懵逼到菜逼------菜逼來談數據挖掘