特徵工程總結(一

2021-10-07 00:23:03 字數 4486 閱讀 5390

(一)資料(data)

• 若資料質量差(有空值(null values)、錯誤(wrong value)、離群值(outlier)),容易造成分析結果不正確

• 若資料在目標欄位上分布不平衡,容易造成模型無法建置

• 若訓練資料太少,容易造成模型不穩定及效能不彰

(二) 屬性(attribute)

• 重要屬性是否收集完整,不重要的屬性是否有事先移除

• 屬性間的相關性是否能掌握

(三)演算法(algorithm)

• 引數設定是否最佳

• 高階演算法(整合演算法、深度學習演算法)是否有使用

• 不同效能評估下的作法調整(f1, profit)

(一) 雜訊(noise)消除

1、雜訊有哪些?

• 雜訊包含錯誤值(類別型字段)及離群值(數值型字段)

2、雜訊的後果?

• 雜訊使探勘結果有相當大的偏差,必須將雜訊移除或將其做適當的處理

3、 雜訊的偵測方法

• 針對類別型字段,檢視其分布 (找錯誤值)

• 針對數值型字段,檢視其分布 (找離群值)

4、雜訊的處理方法

(1)錯誤值(類別型字段)

• 視為空值

(2)離群值(數值型字段)

• 視為空值

• 天花板/地板法(蓋帽法) • 函式校正法

• 取log10, log2, ln等

(二)空值(missing value)填補

1、資料遺缺原因

• 資料建立時未輸入

• 故意或是不小心造成資料沒有被輸入

• 裝置故障

• 例如收款機故障,導致顧客消費明細無法輸入

• 因資料內容不一致而被刪除

• 當資料內容不一致時,為了避免錯誤的資料影響分析的準確性,可能會

將該項資料以空值取代,因此產生資料的遺缺

2、資料遺缺處理方法——直接忽略法

(2.1)當資料有遺缺值時,則將整筆資料刪除

• 處理資料遺缺最簡單的方法

• 蒐集的資料量很多,而遺缺資料只佔一小部分時,便可直接刪除

• 進行分類建模時,若資料的分類標記(class label)為空值,這筆資料因無

法被正確分類,便可直接刪除

• 缺點

• 資料遺缺比例很可觀時,會造成大量資料流失

(2.2)當字段有遺缺值時,則將整個字段刪除

• 處理資料遺缺最簡單的方法

• 遺缺資料佔整個字段所有資料的比例過大時(>50%),便可直接刪除

(2.3)當字段有遺缺值時,則將整個字段轉換成指示變數(indicator

variable)

• 處理資料遺缺的特殊方法

• 遺缺資料佔整個字段所有資料的比例過大時(>50%),便可使用此法

• 使用此法的理論基礎為空值也是行為的另一種呈現

3、資料遺缺處理方法——人工填補法

• 處理資料遺缺的現象,可採用人工來填補

• 當某會員資料的生日欄位有遺缺,可打**詢問該會員,以取得其生日

並加以填補

• 了解資料遺缺原因,採用適當的值填補

• 性別可用身分證字型大小來補

• 一些比例型的字段

• 缺點

• 當資料遺缺較多時,耗時且人力負擔沉重

4、資料遺缺處理方法——自動填補法

(4.1)類別字段

(4.1.1)填入乙個通用的常數值

• 如填入「未知/unknown」,成為乙個新的類別

(4.1.2)填入該字段的眾數(mode)

• 缺點是不夠客觀

• 可用分群的方式,分群求眾數

(4.1.3)更精確作法是利用模型求出較可能的值來填入

• 把填遺缺值的問題當作是分類的問題

• ***用xgboost方法,該方法的優點是傳入的特徵允許有缺失值的。

(4.2)數值字段

(4.2.1)填入乙個通用的常數

• 如填入0(但需check其意義)

(4.2.2)填入該字段的整體平均值(mean)

• 不會對統計結果造成太大的影響

• 缺點是不夠客觀

• 可用分群的方式,分群求平均值

(4.2.3)更精確作法是利用模型求出較可能的值來填入

• 把填遺缺值的問題當作是**的問題

• ***用xgboost方法,該方法的優點是傳入的特徵允許有缺失值的。

• python自帶用knn模型填充

(一)以統計為基礎的關鍵特徵分析

1、定類特徵的重要程度

(1.1)傳統上可用卡方檢定進行相關性檢定

(1.2)利用卡方檢定去計算各個類別型的輸入屬性與目標屬性間的相關

程度• 首先必需先計算其卡方值

• 然後根據卡方值查表算出p‐value

• p‐value越小代表此屬性與目標屬性間的相關程度越大,也越重要

• 在95%的信心水平之下,p‐value<0.05則為顯著(重要)的關鍵屬性

2、定量特徵的重要程度

(2.1) 傳統上可用t檢定及anova檢定進行重要性分析

(2.2)利用anova檢定去計算各個數值型的輸入屬性與目標屬性間的相

關程度• 首先必需先計算其f‐value

• 然後根據f‐value查表算出p‐value

• p‐value越小代表此屬性與目標屬性間的相關程度越大,也越重要

• 在95%的信心水平之下,p‐value<0.05則為顯著(重要)的關鍵屬性

• 可接受標籤是多分類

(2.3)利用t檢定去計算各個數值型的輸入屬性與目標屬性間的相

關程度• p‐value越小代表此屬性與目標屬性間的相關程度越大,也越重要

• 在95%的信心水平之下,p‐value<0.05則為顯著(重要)的關鍵屬性

• 只接受標籤是二分類

(二)降維

如:pca

(三)利用演算法輸出關鍵特徵

如:決策樹

from sklearn.impute import ******imputer

# 1、使用訓練集資料來訓練我們的填補器,本質是在生成訓練集中的眾數,然後用訓練集中的眾數來同時填補訓練集和測試集。

from sklearn.preprocessing import minmaxscaler #歸一化

# 1、改變資料分布形狀

# 2、可批量處理多個特徵

from sklearn.preprocessing import standardscaler #標準化

# 1、不改變資料分布形狀

# 2、可批量處理多個特徵

from sklearn.preprocessing import polynomialfeatures #多項式特徵

from sklearn.preprocessing import binarize #二值化

# 1、用於伯努利貝葉斯演算法,該演算法要求每個特徵是二分類的

from sklearn.preprocessing import onehotencoder #獨熱編碼

# 1、即0-1編碼,某乙個定類特徵有c類別,就產生c列新的特徵

# 2、可批量處理多個特徵

# 3、類似功能函式get_dummies()啞變數化

from sklearn.preprocessing import labelencoder #標籤編碼

# 1、編碼:0,1,2,3,....

# 2、一般用於標籤編碼,也可用於定序特徵進行編碼

# 3、一次只能處理乙個特徵

from sklearn.preprocessing import ordinalencoder

# 1、編碼:0,1,2,3,....

# 2、可批量處理多個定類特徵,返回定序特徵

# pip install mlxtend

from mlxtend.preprocessing import transactionencoder

# 1、編碼:false true

# 2、用於關聯規則

# 3、可批量處理

from sklearn.model_selection import train_test_split

# 1、stratify:實現分層抽樣

一 特徵工程

問題 1 常用的特徵工程方式?答 引用圖形 參考 七種常用的特徵工程 總結的很好 1.對於不同的特徵該如何進行特徵工程?1 對於數值型特徵,採用特徵歸一化,目的是將所有的特徵統一到大致相同的我數值區間 2 對於類別型特徵,先處理成數值型特徵,具體可以採用序號編碼 處理類別之間具有大小關係的資料 獨熱...

特徵工程 特徵工程入門與實踐(一)

特徵工程 將資料轉換為能更好地表示潛在問題的特徵,從而提高機器學習效能。大體上,機器學習分為兩類 評估分類問題,可以採用交叉驗證法 from sklearn.linear model import logisticregression from sklearn.model selection imp...

特徵工程 特徵歸一化

為了消除資料特徵之間的量綱影響,需要對特徵進行歸一化 normalization 處理,使得不同特徵處於同乙個數量級,具有可比性 2.1 線性函式歸一化 min max scaling 對原始資料進行線性變換,使結果對映到 0,1 的範圍內,實現對原始資料的等比縮放。歸一化公式 其中,x為原始資料,...