機器學習 特徵工程概述

2021-08-28 17:22:23 字數 3112 閱讀 1348

「資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。」

通俗的說,就是盡可能的從原始資料中獲取更多資訊,從而使得**模型達到最佳。

簡而言之,特徵工程是乙個把原始資料變成特徵的過程,這些特徵可以很好的描述資料,並且利用它們建立的模型在未知資料上表現效能可以達到最優。

實驗結果取決於獲取的資料、使用的特徵以及選擇的模型,甚至問題的形式和評估精度的客觀方法也扮演了一部分。我們需要的是能夠很好地描述資料內部結構的好特徵。

(1) 特徵越好,靈活性越強

只要特徵選得好,即使是一般的模型(或演算法)也能獲得很好的效能,因為大多數模型(或演算法)在好的資料特徵下表現的效能都還不錯。好特徵的靈活性在於它允許你選擇不複雜的模型,同時執行速度也更快,也更容易理解和維護。

(2) 特徵越好,構建的模型越簡單

有了好的特徵,即便你的引數不是最優的,你的模型效能也能仍然會表現的很nice,所以你就不需要花太多的時間去尋找最有引數,這大大的降低了模型的複雜度,使模型趨於簡單。

(3) 特徵越好,模型的效能越出色

特徵工程的最終目的就是提公升模型的效能。

特徵構建指的是從原始資料中人工的構建新的特徵。這需要我們花大量的時間去研究真實的資料樣本,思考問題的潛在形式和資料結構,同時能夠更好地應用到**模型中。人工的建立特徵。

特徵構建需要很強的洞察力和分析能力,要求我們能夠從原始資料中找出一些具有物理意義的特徵。假設原始資料是**資料,一般你可以使用混合屬性或者組合屬性來建立新的特徵,或是分解或切分原有的特徵來建立新的特徵。

特徵提取的物件是原始資料,目的是自動地構建新的特徵,將原始特徵轉換為一組具有明顯物理意義(gabor、幾何特徵[角點、不變數]、紋理[lbp hog])或者統計意義或核的特徵。比如通過變換特徵取值來減少原始資料中某個特徵的取值個數等。對於**資料,你可以在你設計的特徵矩陣上使用主要成分分析(principal component analysis,pca)來進行特徵提取從而建立新的特徵。對於影象資料,可能還包括了線或邊緣檢測。 常用的方法有:

資料特徵中,有的特徵攜帶的資訊量豐富,有的(或許很少)則屬於無關資料(irrelevant data),我們可以通過特徵項和類別項之間的相關性(特徵重要性)來衡量。

在實際應用中,常用的方法就是使用一些評價指標單獨地計算出單個特徵跟類別變數之間的關係。如,pearson相關係數,gini-index(基尼指數),ig(資訊增益)等,下面舉pearson指數為例,它的計算方式如下:pearson相關係數,gini-index(基尼指數),ig(資訊增益)等,下面舉pearson指數為例,它的計算方式如下:

r2xy=(con(x,y)var(x)var(y)−−−−−−−−−−√)rxy2=(con(x,y)var(x)var(y))

其中,x屬於x,x表乙個特徵的多個觀測值,y表示這個特徵觀測值對應的類別列表。pearson指數取值0到1之間。

通過上述公式計算各特徵與類別之間的相關性,並對這些相關性由高到低排名,然後選擇排名高的子集作為特徵(比如前10%),用這些特徵進行訓練,驗證效果。此外,你還可以畫出不同子集的乙個精度圖,根據繪製的圖形來找出效能最好的一組特徵。

通過例子,總結出特徵選擇的目的,就是從特徵集合中挑選一組最具統計意義的特徵子集,從而達到降維的效果。做特徵選擇的原因是,因為這些特徵對於目標類別的作用並不是相等的,一些無關的資料需要刪掉。

做特徵選擇的方法有多種,上面提到的選特徵子集的方法屬於filter(刷選器)方法,它主要側重於單個特徵跟目標變數的相關性。優點是計算時間上較高效,對於過擬合問題也具有較高的魯棒性。缺點就是傾向於選擇冗餘的特徵,因為他們不考慮特徵之間的相關性,有可能某乙個特徵的分類能力很差,但是它和某些其它特徵組合起來會得到不錯的效果。

綜上所述,特徵選擇過程一般包括產生過程,評價函式,停止準則,驗證過程,這4個部分。如下圖所示:

特徵工程具體是在哪個步驟做呢?具體的機器學習過程是這樣的乙個過程:

下面舉個例子來簡單了解下特徵工程的處理。

首先是來說下特徵提取,假設你的資料裡現在有乙個顏色類別的屬性,比如是「item_color」,它的取值有三個,分別是:red,blue,unknown。從特徵提取的角度來看,你可以將其轉化成乙個二值特徵「has_color」,取值為1或0。其中1表示有顏色,0表示沒顏色。你還可以將其轉換成三個二值屬性:is_red, is_blue and is_unknown。這樣構建特徵之後,你就可以使用簡單的線性模型進行訓練了。

另外再舉乙個例子,假設你有乙個日期時間 (i.e. 2014-09-20t20:45:40z),這個該如何轉換呢?

對於這種時間的資料,我們可以根據需求提取出多種屬性。比如,如果你想知道某一天的時間段跟其它屬性的關係,你可以建立乙個數字特徵「hour_of_day」來幫你建立乙個回歸模型,或者你可以建立乙個序數特徵,「part_of_day」,取值「morning,midday,afternoon,night」來關聯你的資料。

此外,你還可以按星期或季度來構建屬性,等等等等……

關於特徵構建,主要是盡可能的從原始資料中構建特徵,而特徵選擇,經過上面的分析,想必大家也知道了,其實就是達到乙個降維的效果。

只要分析能力和實踐能力夠強,那麼特徵構建和特徵提取對你而言就會顯得相對比較簡單,所以抓緊時間好好實踐吧!

下面來簡單的做個總結,首先來說說這幾個術語:

特徵構建:是原始資料中人工的構建新的特徵。

特徵提取:自動地構建新的特徵,將原始特徵轉換為一組具有明顯物理意義或者統計意義或核的特徵。

特徵選擇:從特徵集合中挑選一組最具統計意義的特徵子集,從而達到降維的效果

特徵工程是乙個超集,它包括特徵提取、特徵構建和特徵選擇這三個子模組。在實踐當中,每乙個子模組都非常重要,忽略不得。根據答主的經驗,他將這三個子模組的重要性進行了乙個排名,即:特徵構建》特徵提取》特徵選擇。

事實上,真的是這樣,如果特徵構建做的不好,那麼它會直接影響特徵提取,進而影響了特徵選擇,最終影響模型的效能。

參考:機器學習之特徵工程

01 機器學習概述 特徵工程 機器學習演算法

機器學習是從資料中自動分析獲得規律 模型 並利用規律對未知資料進行 注 離散型是區間內不可分,連續型是區間內可分 結構 特徵值 目標值 特徵工程是將原始資料轉換為更好地代表 模型的潛在問題的特徵的過程,從而提高了對未知資料的模型準確性。直接影響模型的 結果。語法 dictvectorizer spa...

機器學習 特徵工程

老師有多年的網際網路從業經驗,所以講解的過程中結合了很多任務業界的應用,更加的深入淺出。資料採集 資料採集前需要明確採集哪些資料,一般的思路為 哪些資料對最後的結果 有幫助?資料我們能夠採集到嗎?線上實時計算的時候獲取是否快捷?舉例1 我現在要 使用者對商品的下單情況,或者我要給使用者做商品推薦,那...

機器學習 特徵工程

資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。通俗的說,就是盡可能的從原始資料中獲取更多資訊,從而使得 模型達到最佳。簡而言之,特徵工程是乙個把原始資料變成特徵的過程,這些特徵可以很好的描述資料,並且利用它們建立的模型在未知資料上表現效能可以達到最優。實驗結果取決於獲取的資料 ...