1. 程式人生 > >機器學習筆記4:特徵工程

機器學習筆記4:特徵工程

一、特徵工程概述

       “資料決定了機器學習的上限,而演算法只是儘可能逼近這個上限”,這裡的資料指的就是經過特徵工程得到的資料。特徵工程指的是把原始資料轉變為模型的訓練資料的過程,它的目的就是獲取更好的訓練資料特徵,使得機器學習模型逼近這個上限。特徵工程能使得模型的效能得到提升,有時甚至在簡單的模型上也能取得不錯的效果。特徵工程在機器學習中佔有非常重要的作用,一般認為括特徵構建、特徵提取、特徵選擇三個部分。特徵構建比較麻煩,需要一定的經驗。 特徵提取與特徵選擇都是為了從原始特徵中找出最有效的特徵。它們之間的區別是特徵提取強調通過特徵轉換的方式得到一組具有明顯物理或統計意義的特徵;而特徵選擇是從特徵集合中挑選一組具有明顯物理或統計意義的特徵子集

。兩者都能幫助減少特徵的維度、資料冗餘,特徵提取有時能發現更有意義的特徵屬性,特徵選擇的過程經常能表示出每個特徵的重要性對於模型構建的重要性。本文主要嘗試總結幾個常用的特徵提取和特徵選擇的方法。

二、特徵構建

特徵構建是指從原始資料中人工的找出一些具有物理意義的特徵。需要花時間去觀察原始資料,思考問題的潛在形式和資料結構,對資料敏感性和機器學習實戰經驗能幫助特徵構建。除此之外,屬性分割結合是特徵構建時常使用的方法。結構性的表格資料,可以嘗試組合二個、三個不同的屬性構造新的特徵,如果存在時間相關屬性,可以劃出不同的時間視窗,得到同一屬性在不同時間下的特徵值,也可以把一個屬性分解或切分,例如將資料中的日期欄位按照季度和週期後者一天的上午、下午和晚上去構建特徵。總之特徵構建是個非常麻煩的問題,書裡面也很少提到具體的方法,需要對問題有比較深入的理解。

三、特徵提取

1. PCA主成分分析

         PCA的思想是通過座標軸轉換,尋找資料分佈的最優子空間,從而達到降維、去相關的目的。下面的圖是直接從《機器學習實戰》中擷取的,原始資料二維特徵,三分類問題,左圖是原始資料。進行PCA特徵轉換,第一個新座標軸選擇的是原始資料中方差最大的方向(線B),第二個新座標軸與第一個座標軸正交且具有最大方差的方向(線C),當特徵維度較多時,重複上述過程,會發現大部分的方差都包含在前幾個新的座標軸中,通過選擇保留前N個座標軸達到降維的效果,下面中上是特徵轉換的圖右,中下是降維後的圖。在數學上,是先用原始資料協方差矩陣的前N個最大特徵值對應的特徵向量構成對映矩陣,然後原始矩陣左乘對映矩陣,從而對原始資料降維。下圖右面列出了兩個隨機變臉之間協方差的計算公式、怎麼計算矩陣的協方差矩陣、矩陣的特徵值、特徵向量。特徵向量可以理解為座標準換中的新座標軸的方向,特徵值表示矩陣在對應的特徵向量上的方差,特徵值越大,方差越大,資訊量越多。

2. LDA線性判別分析

       LDA的原理是將帶上標籤的資料(點),通過投影的方法,投影到維度更低的空間,使得投影后的點,會形成按類別區分,相同類別的點,將會在投影后更接近,不同類別的點距離越遠。skearn網站上面有個例子介紹PCA與LDA的區別,分別通過PCA和LDA將4維特徵三分類的Iris資料降維為2維特徵,然後再進行分類,效果差不多,可視化出來發現有些不同,畢竟降維方式有些不同。

LDA演算法的主要步驟:

1:分別計算每個類別i的原始中心點

2.類別i投影后的中心點為:

201101081455473248.png (141×55)

3.衡量類別i投影后,類別點之間的分散程度,用方差來表示:

20110108145548391.png (216×82)

4.使用下面的式子表示LDA投影到w後的損失函式,最大化J(W)就可以求出最優的w,具體解法參考部落格

201101081455487850.png (237×109)

3. ICA獨立成分分析

        PCA特徵轉換降維,提取的是不相關的部分,ICA獨立成分分析,獲得的是相互獨立的屬性。ICA演算法本質尋找一個線性變換z = Wx,使得z的各個特徵分量之間的獨立性最大。ICA相比與PCA更能刻畫變數的隨機統計特性,且能抑制噪聲。ICA演算法聽著有點繞,ICA認為觀測到資料矩陣X是可以由未知的獨立元舉證S與未知的矩陣A相乘得到。ICA希望通過矩陣X求得一個分離矩陣W,使得W作用在X上所獲得的矩陣Y能夠逼近獨立源矩陣S,最後通過獨立元矩陣S表示矩陣X,所以說ICA獨立成分分析提取出的特徵中的獨立部分。

四、特徵選擇

特徵選擇是剔除不相關或者冗餘的特徵,減少有效特徵的個數,減少模型訓練的時間,提高模型的精確度。特徵提取通過特徵轉換實現降維,特徵選擇則是依靠統計學方法或者於機器學習模型本身的特徵選擇(排序)功能實現降維。特徵選擇是個重複迭代的過程,有時可能自己認為特徵選擇做的很好,但實際中模型訓練並不太好,所以每次特徵選擇都要使用模型去驗證,最終目的是為了獲得能訓練出好的模型的資料,提升模型的效能。下面介紹幾個常用的方法

1. 運用統計學的方法,衡量單個特徵與響應變數(Lable)之間的關係。

  • 皮爾森相關係數(Pearson Correlation),衡量變數之間的線性關係,結果取值為[-1,1],-1表示完全負相關,+1表示正相關,0表示不線性相關,但是並不表示沒有其它關係。Pearson係數有一個明顯缺陷是,只衡量線性關係,如果關係是非線性的,即使連個變數具有一一對應的關係,Pearson關係也會接近0。皮爾森係數的公式為樣本共變異數除以X的標準差和Y的標準差的乘積。sklearn中可以直接計算兩個隨機變數之間的Pearson相關係數,例如下面計算X與X*X之間的相關係數約為0。

7aec54e736d12f2ead86f57f4fc2d56285356829

x = np.random.uniform(-1, 1, 100000)

print pearsonr(x, x**2)[0]

-0.00230804707612

  • 最大資訊係數(MIC)。最大資訊係數是根據互資訊得到的,下面是互資訊公式。最大資訊係數MIC不僅能像Pearson係數一樣度量變數之間的線性關係,還能度量變數之間的非線性關係。MIC雖然能度量變數之間的非線性關係,但當變數之間的關係接近線性相關的時候,Pearson相關係數仍然是不可替代的。第一、Pearson相關係數計算速度快,這在處理大規模資料的時候很重要。第二、Pearson相關係數的取值區間是[-1,1],而MIC和距離相關係數都是[0,1]。這個特點使得Pearson相關係數能夠表徵更豐富的關係,符號表示關係的正負,絕對值能夠表示強度。當然,Pearson相關性有效的前提是兩個變數的變化關係是單調的。下面列舉了MIC和Pearson係數在變臉處於不同關係下的表現情況。

4dbuAXe

 2. 基於機器學習模型的特徵選擇

        線性模型和正則化

  當特徵和響應變數之間全部都是線性關係,並且特徵之間均是比較獨立的。可以嘗試使用線性迴歸模型去做特徵選擇,因為越是重要的特徵在模型中對應的係數就會越大,而跟輸出變數越是無關的特徵對應的係數就會越接近與0。在很多實際的資料當中,往往存在多個互相關聯的特徵,這時候模型就會變得不穩定,資料中細微的變化就可能導致模型的巨大變化(模型的變化本質上是係數,或者叫引數,可以理解成W),這會讓模型的預測變得困難,這種現象也稱為多重共線性。例如,假設我們有個資料集,它的真實模型應該是Y=X1+X2,當我們觀察的時候,發現Y’=X1+X2+e,e是噪音。如果X1和X2之間存線上性關係,例如X1約等於X2,這個時候由於噪音e的存在,我們學到的模型可能就不是Y=X1+X2了,有可能是Y=2X1,或者Y=-X1+3X2。通過在模型中加入正則化項,也能起到特徵選擇的作用。L1正則化學到的是比較稀疏的模型,控制懲罰項係數alpha,會迫使那些弱的特徵所對應的係數變為0,這個特徵使得L1正則化成為一種很好的特徵選擇方法。L2正則化會使得係數的取值變得平均,對於關聯特徵,這意味則他們能夠獲得更加相近的對應係數。

        隨機森林模型

        隨機森林由多棵決策樹構成,決策樹中的每個節點,都是關於某個特徵的條件,利用不純度可以確定劃分資料集的最優特徵,對於分類問題,通常採用基尼不純度或者資訊增益,對於迴歸問題,通常採用方差或者最小二乘擬合。當訓練決策樹的時候,可以計算出每個特徵減少了多少樹的不純度。對於一個決策樹森林來說,可以算出每個特徵平均減少了多少不純度,並把它平均減少的不純度作為特徵選擇的值。

       另一種常用的特徵選擇方法就是直接度量每個特徵對模型精確率的影響。主要思路是打亂每個特徵的特徵值順序,並且度量順序變動對模型的精確率的影響。很明顯,對於不重要的變數來說,打亂順序對模型的精確率影響不會太大,但是對於重要的變數來說,打亂順序就會降低模型的精確率

要記住:1、這種方法存在偏向,對具有更多類別的變數會更有利;2、對於存在關聯的多個特徵,其中任意一個都可以作為指示器(優秀的特徵),並且一旦某個特徵被選擇之後,其他特徵的重要度就會急劇下降,因為不純度已經被選中的那個特徵降下來了,其他的特徵就很難再降低那麼多不純度了,這樣一來,只有先被選中的那個特徵重要度很高,其他的關聯特徵重要度往往較低。在理解資料時,這就會造成誤解,導致錯誤的認為先被選中的特徵是很重要的,而其餘的特徵是不重要的,但實際上這些特徵對響應變數的作用確實非常接近的(這跟Lasso是很像的)。

     特徵工程內容很多,關係特徵選,強烈建議仔細看結合Scikit-learn介紹幾種常用的特徵選擇方法,則篇乾貨的結尾有個例子比較了集中特徵方法對每個特徵的評分,非常值得學習,就我自己而言由於很少碰到線性問題,所以使用RF做特徵選擇的情況會多一些。

參考資料:

相關推薦

機器學習筆記4特徵工程

一、特徵工程概述       “資料決定了機器學習的上限,而演算法只是儘可能逼近這個上限”,這裡的資料指的就是經過特徵工程得到的資料。特徵工程指的是把原始資料轉變為模型的訓練資料的過程,它的目的就是獲取更好的訓練資料特徵,使得機器學習模型逼近這個上限。特徵工程能使得模型的效能

機器學習筆記4正則化(Regularization)

機器學習筆記4:正則化(Regularization) Andrew Ng機器學習課程學習筆記4 過擬合與欠擬合   線性擬合時,有兩種擬合效果不好的情況,分別是過擬合與欠擬合。   過擬合(overfitting),也叫高方差(variance)。主要是擬合曲線過於彎曲,雖然

機器學習筆記(4)多類邏輯迴歸-使用gluton

import matplotlib.pyplot as plt import mxnet as mx from mxnet import gluon from mxnet import ndarray as nd from mxnet import autograd def transfor

機器學習筆記--特徵工程

特徵提取後常常會有許多問題,如缺失值問題/不屬於同一綱量問題/資訊冗餘問題/資訊利用率低問題. 以下使用鳶尾花資料集進行處理. 匯入鳶尾花資料: from sklearn.datasets import load_iris iris = load_ir

ESP8266學習筆記4ESP8266的SmartConfig

rtc 訂閱號 new 例程 detail smart ted tracking 不能 今天花了將近一天的時間來研究ESP8266的SmartConfig功能,這個應該算是wifi雲產品的標配。這篇文章先把SmartConfig操作一遍,我還寫了還有一篇文章梳理了物理層

深度學習 Deep Learning UFLDL 最新Tutorial 學習筆記 4Debugging: Gradient Checking

style inline add tom radi posit math size tutorial 1 Gradient Checking 說明前面我們已經實現了Linear Regression和Logistic Regression。關鍵在於代價函數Cost Fun

Spark學習筆記4數據讀取與保存

讀取數據 chapter byte hadoop tar .lib 文件中 api sequence Spark對很多種文件格式的讀取和保存方式都很簡單。Spark會根據文件擴展名選擇對應的處理方式。 Spark支持的一些常見文件格式如下:  1、文本文件    使用文件

機器學習筆記(3)多類邏輯回歸

display images 可能 https 都沒有 -s labels 明顯 交叉 仍然是 動手學嘗試學習系列的筆記,原文見:多類邏輯回歸 — 從0開始 。 這篇的主要目的,是從一堆服飾圖片中,通過機器學習識別出每個服飾圖片對應的分類是什麽(比如:一個看起來

hibernate框架學習筆記4主鍵生成策略、對象狀態

alt rri gen 線程安全 理論 微軟 unit conf lose 創建一個實體類: package domain; public class Customer { private Long cust_id; private Stri

struts2框架學習筆記4獲取參數

map pre spa xtend 新的 get cti port row 第一種參數獲取方式: 編寫一個前端頁面,提交表單,做示例: <form action="${pageContext.request.contextPath}/Demo1Actio

spring框架學習筆記4SpringAOP實現原理

odin 就是 sets 使用 point 攔截 ceo oca ssl AOP AOP(Aspect Oriented Programming),即面向切面編程,可以說是OOP(Object Oriented Programming,面向對象編程)的補充和完善。OOP引入

機器學習筆記十三Ensemble思想(上)

形象 alt fill data stat cli views LV 元素 從上面幾篇的決策樹開始,就能夠開始進入到集成學習(ensemble learning)了,

吳恩達機器學習筆記4-單變量線性回歸

alt 方法 bsp 目標 .com 函數 bubuko 機器學習 絕對值 今天看個5個課時的視頻,對假設函數、代價函數、以及梯度下降有了一個大概的了解。 假設函數: 代價函數: 我們的目標就是求得J的最小值 梯度下降:在一個上坡上找一個點,求得這個點周圍的絕對值最大的導數

Qt學習筆記3Qt工程的目錄結構

經過前兩篇的學習,已經可以使用Qt空專案模板建立自己的工程了。通過本篇的學習,整理一下如果使用Qt工程的目錄結構,使專案更規範和容易管理。 當前的目錄結構 如圖所示,這是前篇中建立的工程,只有main.cpp和widget.cpp、widget.h三個檔案,直接放在了一個目錄下,

Andrew Ng 機器學習筆記 16 照片OCR

OCR的大概步驟 機器學習流水線(machine learning pipeline) 滑動窗體 上限分析 照片OCR是指照片光學字元識別(photo optical ch

Andrew Ng 機器學習筆記 15 大資料集梯度下降

隨機梯度下降 隨機梯度下降原理 小批量梯度下降 小批量梯度下降vs隨機梯度下降 隨機梯度下降的收

Andrew Ng 機器學習筆記 14 異常檢測

異常檢測問題 高斯分佈 高斯分佈中,μ和σ的關係 異常檢測的具體演算法 異常檢測演算法步驟總結 異常檢測 VS 監督學習 對不服從高斯分佈的資料進行

Andrew Ng 機器學習筆記 13 降維(dimensionality reduction)

資料壓縮 二維降到一維 三維降到二維 視覺化資料 主成分分析(PCA) PCA的執行過程2D -&

Andrew Ng 機器學習筆記 12 聚類

K均值 (K-means)演算法 K-Means的規範化描述 異常情況 K均值的代價函式 隨機初始化 肘部法則 (Elbow Method)

Andrew Ng 機器學習筆記 11 支援向量機(Support Vector Machine)

構建支援向量機 1.替換邏輯迴歸函式 2.去除多餘的常數項 1/m 3.正則化項係數的處理 大間距分類器 SVM決