特徵工程-Outliers
什麼是特徵工程?
Feature Engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.
說白了,就是對原始數據進行清洗、轉化及其他處理,為了更好導入到機器學習模型中。
Outliers
有時候數據集中會包含一個或多個數值異常大或異常小的值,這樣的極端值稱為異常極端(outlier)。這在現實數據集中是很有可能發生的,如數據錄入錯誤、測量錯誤、試驗錯誤、數據處理錯誤等。異常值的存在當然對數據統計產生很多不良的影響,例如降低數據統計的說服力和可信度。
那麼在實際project中我們怎麼發現、處理這些極端值呢?
1、暴力看圖法(我自己取的名字哈哈哈)
呃。。。這種方法比較玄學,不推薦大家直接使用,但是通過圖形我們可以更好的看到數據分布和大致異常值長什麼樣。
最近在做一個Credit Project,用於預測用戶的違約概率(二分問題,是否違約)。輸入特徵有:用戶年齡、月收入、貸款數量、信用卡餘額/總額度、每月支出/收入(Debt Ratio)等、信用卡數量等。
首先,在對總的data.describe()時,我們就可以對數據有一個大致了解。比如,對於percentage這種變數,如果有小於0或者大於1的數值存在,不用多想,直接是異常值。一般我的處理是:小於0的值改成0,大於0的值改成1。當然也可以設置為中值或者分位點值,這裡主要是看Analyst對數據的理解。
連續變數的分布:
import seaborn as snssns.distplot(x1)
離散變數的分布:
import collectionscollections.Counter(x1)
作圖
sns.countplot(x="x1", data=train_data)sns.barplot(x=x1,y=y,data=train_data)
在看圖的時候,我已經大致知道哪些是極端值了,一般把這些數據設置成中值。
推薦閱讀:
※大數據:特徵工程預測用戶行為
※什麼年代了!你還在寫 ETL 代碼抽取特徵?
※文本特徵選擇(信息熵、Gini、IV、卡方值)
※如何獲取可區分性的特徵(loss functon篇上)
TAG:特徵工程 |