機器學習之特徵工程
在機器學習中,資料預處理主要是一些資料的ETL——資料的抽取(Extract)、清洗(Cleaning)、轉換(Transform)、裝載(Load)工作,而特徵工程主要是這幾個方面:特徵抽象、特徵重要性評估、特徵衍生和特徵降維。
一、特徵抽象
特徵抽象是指將源資料抽象成演算法可以理解的資料;目前的機器學習演算法主要是對一些資料進行矩陣運算或者概率運算來得到結論,也就是說演算法的入參通常來講應該是一組可以表達資料某類特性的數字。
抽象的過程沒有現成的公式或者是工具,往往要根據使用者的主觀判斷來實現;特徵抽象需要具備兩方面能力,一方面是需要進行大量的相關工作來積累經驗,另一方面需要對特徵抽象的資料的業務場景足夠了解。
可以從如下看似不可能量化的資料中抽象出特徵:
(1)時間戳:該資料是資料探勘過程中最常見的資料種類;通常採集到的資料往往來自於系統日誌,這些日誌最鮮明的特點就是帶有時間戳欄位。
(2)二值類問題:如果欄位都是二值型的,就可以通過兩個數值來表示,通常可以表示成0和1。
(3)多值有序類問題:多值類的欄位資料分成兩種,一種是有序的,一種是無序的;有序資料是指資料可以按照程度來分層。
(4)多值無序類問題(資訊閹割):多值無序類的特徵抽象是最難做的,有時候只能被迫對資料的資訊熵(資訊熵是資料資訊的一種量化表示,用來表示資訊量的大小)進行一定程度的閹割或者採用One-hot編碼的方法。
(5)多值無序類問題(One-hot編碼):通過One-hot編碼方式來把文字無序的字串資料轉換成數值;One-hot編碼方式的優點是儲存了所有信息的資訊量。
(6)文字型別:半結構化資料是指資料已經儲存到了矩陣結構的資料庫中,但是實際的值是字元型別的;對於一段文字的抽象有很多方式,可以把文字先分詞,然後可以按照詞語出現的位置來提取特徵,也可以按照每個詞的詞性來提取特徵;如果是由多個文字組成的集合,還可以根據TF-IDF值來提取特徵;最簡單的特徵還是詞的長度。
(7)影象或語音資料:這是非結構化資料;對影象和語音的特徵抽取的思路大體是首先將影象或者語音轉化成矩陣結構。
二、特徵重要性評估
如果能對特徵的權重有一個正確的評判和排序,就可以通過特徵重要性排序來指導一些降維處理,同時也可以挖掘 一下業務場景中哪些屬性是比較重要的,這個資訊對接下來的模型訓練效果調優很有幫助。
特徵評判的方法有很多,一種是利用迴歸模型的引數來評判,另一種是根據資訊熵。
1.迴歸模型係數判斷法
一些線性模型的訓練結果是一個數學公式,類似於如下這樣的式子:y=a1x1+a2x2+a3x3+...
其中,a1,a2,a3就是我們模型最終得到的係數,這些係數是通過最優化的一些數學手段迭代計算得到的。
邏輯迴歸演算法的特點是可以通過模型的係數推出每個特徵的重要性,這一點在實際的應用中有很大的意義,通過這些特徵係數可以判斷每個特徵對結果的影響。
2.資訊熵判斷法
資訊熵的具體計算方法:在信源中考慮的不是某 一單個符號發生的不確定性,而是要考慮這個信源所有可能發生情況的平均不確定性;若信源符號有n種可能U1,U2,U3,U4…,每種可能對應的概率分別為P1,P2,P3,P4…,且各種符號的出現彼此獨立,信源的平均不確定性應當為單個符號不確定性−logPi的統計平均值E,即 H(U)=E[−logPi]=−∑PilogPi。
資訊增益(Information Gain):在資訊增益中,衡量標準是看特徵能夠為分類系統帶來多少資訊,帶來的資訊越多,則該特徵越重要;對一個特徵而言,系統有它和沒它時的資訊量將發生變化,而前後資訊量的差直接是這個特徵給系統帶來的資訊量。
三、特徵衍生
特徵衍生是指利用現有的特徵進行某種組合,生成新的具有含義的特徵;特徵衍生是特徵工程中很重要的一環,因為通常我們所採集到資料的特徵維度不會很大,而且直接採集到的特徵並不會完全體現出這份資料的全部資訊,需要通過已有的資料組合來發現新的意義,新生成的特徵對目標列的影響大小可以通過特徵重要性評估方法來獲得。
業務視角是指通過資料探勘工程師對資料的理解和業務場景的認識的層面來進行特徵衍生。
機器學習演算法的特點是通過高維的特徵資料來挖掘其中的最優模型,所以需要進行一定的特徵衍生,增加相應特徵量,從而挖掘更有價值的特徵來提高演算法的結果準確性。
購物頻率=使用者總購買量/(使用者最後購買時間 - 使用者第一次購物時間),點選購買率=使用者購物行為為0的次數/使用者購物行為為1的次數。
商品的特點主要可以通過3方面來刻畫,分別是產品的產品熱度、季節因素和產品的消耗頻率;產品的熱度可以看作產品的受歡迎程度,這個指標可以通過兩種方式來獲得,一種是計算這個商品的總被購買量,另一種就是首先算一下全部產品的總購買量然後求平均值,通過總購買量和平均值的對比進行打標。
特徵衍生印證了這樣的觀點:資料探勘的工作永遠不是單純依靠數學公式來解決問題,一定要結合實際的行業經驗來做。
四、特徵降維
1.基本概念
如果輸入的資料來源是一個多欄位的矩陣,特徵降維就是挖掘出其中的關鍵欄位,從而減少輸入矩陣的維度;特徵降維技術被廣泛用到解決高維度資料問題的場景下,特別是針對影象識別或者是文字分析領域。
特徵降維的主要目的:
第一,確保變數間的相互獨立性:減少特徵值之間的關聯。
第二,減少計算量。
第三,去燥:特徵降維可以把對結果沒有意義或者說意義非常小的欄位去除,減少不必要的干擾。
資料探勘領域中常用的降維方法包括以下幾種:
第一,主成分分析(Principal Component Analysis,PCA)是最常用的一種線性降維方法;它通過線性對映投影的方法,把高維的資料對映到了低維的空間中。
第二,線性判別式分析(Linear Discriminant Analysis,LDA)的基本思想是將高維的模式樣本投影到最佳鑑別向量空間,以達到抽取分類資訊和壓縮特徵空間維數的效果,投影后保證模式樣本在新的子空間有最大的類間距離和最小的類內距離,即模式在該空間中有最佳的可分離性;通過線性判別式分析處理後的資料,同類間距會非常小,不同類的間距會非常大。
第三,區域性線性嵌入(Locally Linear Embedding,LLE)是一種非線性降維演算法,特點是降維之後可以繼續保持資料的流形結構;通過LLE降維演算法之後,原來高維度上相近的資料點在低維上依舊距離相近。
2.主成分分析
它的基本思路是旋轉座標軸到方差最大的方向;它主要是通過轉換座標系的方法,把源資料的最大方差方向變為新座標系的一個座標軸,另一個軸選擇與新座標軸垂直的直線,一直重複這樣的操作,就可以減小資料的維度。
通過PCA數學公式進行特徵降維的步驟:
第一步,求協方差矩陣;協方差是表示不同維度資料間關聯的一種統計學演算法,它表示維度之間的資訊。
第二步,提取特徵值和特徵向量;特徵值越大,說明矩陣在對應的特徵向量上的方差越大,資訊量越多。