資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限。
拿到一份新的資料,需要對特徵進行一定的處理使其變成我們可用的資料,具體應該怎麼做呢?下面是我整理的分析思路。
特徵使用方案
拿到資料之前,需要結合業務經驗、市場預分析對資料裡需要使用的特徵進行預篩選,初步確定對因變數可能有影響的所有變數。
特徵的可用性評估可以由以下幾個方案進行考察:
①資料的獲取難度:歷史資料的獲取是否花銷在可控範圍內,儲存形式,需要考慮在預測階段也可獲得與可儲存。
②覆蓋率:已經獲得的資料是否有較多的空缺值。
③準確率:對於已經獲得的資料是否準確需要進行預判定。
綜合判定資料的質量,需要從準確性、完整性、一致性、時效性、可信性、可解釋性定義等角度出發進行判別。
特徵處理
特徵清洗:清洗異常樣本(異常值處理);若資料不均衡,考慮取樣:允許使用資料小得多的隨機樣本表示大型的資料集。
常見的資料清洗思路 填補空缺值、光滑噪聲、識別離群點、糾正資料的不一致性
特徵預處理:
①單項特徵
常見特徵有如下型別:
標稱屬性:與名稱相關,是一些符號或者事物的名稱,代表某種類別、編碼或者狀態,是分類的;在電腦科學中可視為列舉型別。
標稱屬性的數學運算沒有意義,一般不定量使用;可以觀察”眾數“,是一種中心趨勢度量。
二元屬性:一種標稱屬性,只有兩個類別或者狀態:0或者1,0通常表示屬性不出現,1表示出現。二元屬性稱為“布林屬性”,對應ture與false值。
對稱的二元屬性:如果兩種狀態具有等價值並且攜帶相同的權重,關鍵結果用0或者1編碼 無偏好(如男或者女)
非對稱的二元屬性:狀態結果不是同樣重要,用1用於最重要的結果。用0編碼另一個結果。
序數屬性:可能的值之間具有意義的序或者秩,但是相繼值之間的差未知。如:飲料店的值小、中 、大,具有有意義的先後次序;grade:A、B、C、D等,職位可以按照順序列舉,對於教師按照列兵、軍事、下士等。序數屬性是有用的,一般按照順序排列:如0-很不滿意,1-不太滿意,2-中性,3-滿意,4-和滿意。
序數屬性可以透過數質量劃分優先有序類別,將數值屬性離散化得到。
中心趨勢可以使用眾數或者中位數進行表示,不能用於定義均值。
數值屬性:提供物件的定量度量,屬性可以以區間的標度或者比率標度的。
區間標度屬性:用相等的單位尺度度量,區間屬性的值有序,可以為0、或者負值,允許我們比較與定量評估值之間的差。如溫度(區間標度)除了中心趨勢度度量中位數與眾數之外,可以計算他們的均值。
比率標度屬性:比率標度:是具有固有零點的數值屬性,如果度量是比率標度,可以說一個值是另一個的倍數或者比率。值是有序的,可以計算值之間的差、均值、中位數、眾數。如員工工作年限、字數(有計數屬性的特徵)、重量、貨幣量等。
離散屬性與連續屬性:使用許多方法組織屬性型別,型別不是互斥的。開發分類演算法通常把屬性分成離散或者連續,離散屬性具有有限或者無限可數個值。如果屬性不是離散的,則是連續的。經典意義下,連續值是實數,數值型別是整數或者實數。
對於離散型屬性,根據特徵特點對應進行填補空缺值、資料編碼(獨熱編碼 或者序數編碼,需根據特徵型別進行決策)。
對於連續性屬性,根據特徵需求可進行資料規約、填補空缺值、光滑噪聲、離群點識別等操作進行預處理。
常見特徵缺失值處理思路
1、忽略元組:缺失值超過一半,一般場景下直接整個不用。
2、人工填寫缺失值:費時,缺失很多值的時候可能不好使。
3、使用一個全域性常量填充:簡單,但並非十分可靠。
4、使用屬性的中心度量(均值或者中位數)填充缺失值:對於中心非對稱的資料,可以使用中位數進行填充。
5、使用與給定元組同一類的所有樣本的屬性均值或者中位數:如 同一類的使用同一資料收入進行替換。
6、使用最可能的值填充缺失值:可以使用迴歸、貝葉斯方法基於推理工具或者決策樹歸納決定。透過使用資料集中其他顧客的屬性,可以構造一顆決策樹,來預測缺失值。
有缺失值不一定代表有錯誤,在有可能一開始就存在留白的情況。
多個特徵
特徵數量比較多時,需要篩選最有用的特徵進行降維或者特徵挑選,常見處理思路如下。
特徵降維:PCA
透過搜尋k個最能代表資料的n維正交向量,k<=n,原始數投影到一個小得多的空間上,導致維歸約。與屬性子集選擇,透過保留原屬性集的一個子集來減少屬性集的大小不同,PCA透過建立一個替換的,比較小的變數集來組合屬性的基本要素。
PCA常常能揭示先前未察覺的聯絡,允許揭示不尋常的結果。
PCA處理流程如下:
(1)對輸入資料規範化,每一個資料都落入相同的區間。該步驟助於確保具有較大定義域的屬性不會支配具有較小定義域的屬性。
(2)PCA計算k個標準正交向量,作為規範化輸入資料的基。這些是單位向量,每一個都垂直於其它向量。這些向量稱為主成分,輸入資料是主成分的線性組合。
(3)對於主成分按照重要性強度降序排列。本質上充當新資料的新座標系,提供關於方差的重要資訊,對座標軸進行排序,使得第一個座標軸顯示資料的最大方差,第二個顯示資料的第二大方差。該資訊有助於識別資料中的組群或者模式。
(4)由於主成分分析是有順序排列,可以去掉較弱的成分來規約資料。
可以用於有序或者無序的屬性,並且可以處理係數與傾斜的資料。多於二維的多維資料可以透過將問題規約為二維問題來處理,也可以做多元迴歸和聚類分析的輸入,能更好的處理稀疏資料。
特徵挑選
特徵維度太多時,重點考慮自變數與因變數的關聯。
常見的處理思路有如下幾個點:
相關性分析:皮爾遜係數、卡方分析,最直接判定哪些特徵與目標因變數有關係
資訊增益
使用學習器進行篩選:用學習器自動學習特徵,如使用Xgboost、隨機森林 判斷特徵重要屬性進行特徵篩選。
xgboost和隨機森林是兩種常用的機器習演算法,它們都可以用於特徵選擇和特徵重要性評估。它們在特徵重要性評估方面有一些區別。
對於xgboost演算法,特徵重要性是透過計算特徵在所有決策樹中被使用的次數或被用於分裂的平均增益來評估的。具體來說,xgboost會統計每個特徵在所有決策樹中被選擇為分裂節點的次數,然後將這些次數進行歸一化處理,得到特徵重要性的評分。這個評分可以用來判斷特徵的重要性,評分越高表示特徵越重要。(Gain)
而對於隨機森林演算法,特徵重要性是透過計算特徵在隨機森林中被用於分裂時所帶來的不純度減少量來評估的。具體來說,隨機森林會統計每個特徵在所有決策樹中被選擇為分裂節點時所帶來的不純度減少量,並將這些減少量進行平均或加權平均,得到特徵重要性的評分。同樣,評分越高表示特徵越重要。
在使用這兩個演算法時,可以根據特徵重要性的評分來判定特徵的重要性。一種常見的方法是選擇評分較高的特徵作為重要特徵,可以根據評分的閾值進行篩選。另外,還可以根據特徵重要性的排序來選擇前幾個或者一定比例的特徵作為重要特徵。
標準化:適用於需要消除不同特徵之間量綱差異的情況,使得各個特徵具有相同的尺度。常用於基於距離的演算法(如KNN、聚類)和梯度下降最佳化演算法(如線性迴歸、邏輯迴歸)。
歸一化:適用於需要將資料對映到固定範圍內的情況,保留原始資料的分佈資訊。常用於神經網路等對輸入資料敏感的模型。
根據特徵選擇的形式又可以將特徵選擇方法分為3種:
Filter:過濾法,按照發散性或者相關性對各個特徵進行評分,設定閾值或者待選擇閾值的個數,選擇特徵。 Wrapper:包裝法,根據目標函式(通常是預測效果評分),每次選擇若干特徵,或者排除若干特徵。 Embedded:嵌入法,先使用某些機器學習的演算法和模型進行訓練,得到各個特徵的權值係數,根據係數從大到小選擇特徵。類似於Filter方法,但是是透過訓練來確定特徵的優劣。
總結:現實特徵處理流程
①確定特徵使用方案:判斷資料集裡可用的部分,結合對資料質量的判斷,初步篩選可用特徵。
②對特徵進行單項處理:根據具體的特徵型別確定特徵處理的方案,進行特徵清洗與特徵轉換。