「資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。」
通俗的說,就是盡可能的從原始資料中獲取更多資訊,從而使得**模型達到最佳。
簡而言之,特徵工程是乙個把原始資料變成特徵的過程,這些特徵可以很好的描述資料,並且利用它們建立的模型在未知資料上表現效能可以達到最優。
實驗結果取決於獲取的資料、使用的特徵以及選擇的模型,甚至問題的形式和評估精度的客觀方法也扮演了一部分。我們需要的是能夠很好地描述資料內部結構的好特徵。
(1) 特徵越好,靈活性越強
只要特徵選得好,即使是一般的模型(或演算法)也能獲得很好的效能,因為大多數模型(或演算法)在好的資料特徵下表現的效能都還不錯。好特徵的靈活性在於它允許你選擇不複雜的模型,同時執行速度也更快,也更容易理解和維護。
(2) 特徵越好,構建的模型越簡單
有了好的特徵,即便你的引數不是最優的,你的模型效能也能仍然會表現的很nice,所以你就不需要花太多的時間去尋找最有引數,這大大的降低了模型的複雜度,使模型趨於簡單。
(3) 特徵越好,模型的效能越出色
特徵工程的最終目的就是提公升模型的效能。
特徵構建指的是從原始資料中人工的構建新的特徵。這需要我們花大量的時間去研究真實的資料樣本,思考問題的潛在形式和資料結構,同時能夠更好地應用到**模型中。人工的建立特徵。
特徵構建需要很強的洞察力和分析能力,要求我們能夠從原始資料中找出一些具有物理意義的特徵。假設原始資料是**資料,一般你可以使用混合屬性或者組合屬性來建立新的特徵,或是分解或切分原有的特徵來建立新的特徵。
特徵提取的物件是原始資料,目的是自動地構建新的特徵,將原始特徵轉換為一組具有明顯物理意義(gabor、幾何特徵[角點、不變數]、紋理[lbp hog])或者統計意義或核的特徵。比如通過變換特徵取值來減少原始資料中某個特徵的取值個數等。對於**資料,你可以在你設計的特徵矩陣上使用主要成分分析(principal component analysis,pca)來進行特徵提取從而建立新的特徵。對於影象資料,可能還包括了線或邊緣檢測。 常用的方法有:
資料特徵中,有的特徵攜帶的資訊量豐富,有的(或許很少)則屬於無關資料(irrelevant data),我們可以通過特徵項和類別項之間的相關性(特徵重要性)來衡量。
在實際應用中,常用的方法就是使用一些評價指標單獨地計算出單個特徵跟類別變數之間的關係。如,pearson相關係數,gini-index(基尼指數),ig(資訊增益)等,下面舉pearson指數為例,它的計算方式如下:pearson相關係數,gini-index(基尼指數),ig(資訊增益)等,下面舉pearson指數為例,它的計算方式如下: r2
xy=(
con(
x,y)
var(
x)va
r(y)
−−−−−−−−−−√
)rxy2=(con(x,y)var(x)var(y))
其中,x屬於x,x表乙個特徵的多個觀測值,y表示這個特徵觀測值對應的類別列表。pearson指數取值0到1之間。
通過上述公式計算各特徵與類別之間的相關性,並對這些相關性由高到低排名,然後選擇排名高的子集作為特徵(比如前10%),用這些特徵進行訓練,驗證效果。此外,你還可以畫出不同子集的乙個精度圖,根據繪製的圖形來找出效能最好的一組特徵。
通過例子,總結出特徵選擇的目的,就是從特徵集合中挑選一組最具統計意義的特徵子集,從而達到降維的效果。做特徵選擇的原因是,因為這些特徵對於目標類別的作用並不是相等的,一些無關的資料需要刪掉。
做特徵選擇的方法有多種,上面提到的選特徵子集的方法屬於filter(刷選器)方法,它主要側重於單個特徵跟目標變數的相關性。優點是計算時間上較高效,對於過擬合問題也具有較高的魯棒性。缺點就是傾向於選擇冗餘的特徵,因為他們不考慮特徵之間的相關性,有可能某乙個特徵的分類能力很差,但是它和某些其它特徵組合起來會得到不錯的效果。
綜上所述,特徵選擇過程一般包括產生過程,評價函式,停止準則,驗證過程,這4個部分。如下圖所示:
特徵工程具體是在哪個步驟做呢?具體的機器學習過程是這樣的乙個過程:
我們發現,特徵工程和資料轉換其實是等價的。事實上,特徵工程是乙個迭代過程,我們需要不斷的設計特徵、選擇特徵、建立模型、評估模型,然後才能得到最終的model。下面是特徵工程的乙個迭代過程:
特徵工程是乙個超集,它包括特徵提取、特徵構建和特徵選擇這三個子模組。在實踐當中,每乙個子模組都非常重要,忽略不得。根據答主的經驗,他將這三個子模組的重要性進行了乙個排名,即:特徵構建》特徵提取》特徵選擇。事實上,真的是這樣,如果特徵構建做的不好,那麼它會直接影響特徵提取,進而影響了特徵選擇,最終影響模型的效能。
參考:機器學習之特徵工程
機器學習 特徵工程
老師有多年的網際網路從業經驗,所以講解的過程中結合了很多任務業界的應用,更加的深入淺出。資料採集 資料採集前需要明確採集哪些資料,一般的思路為 哪些資料對最後的結果 有幫助?資料我們能夠採集到嗎?線上實時計算的時候獲取是否快捷?舉例1 我現在要 使用者對商品的下單情況,或者我要給使用者做商品推薦,那...
機器學習特徵工程
作用 對字典資料進行特徵值化 dictvectorizer語法 例項化了乙個物件 data dict fit transform x print dict get feature names print data return none if name main dictvec 結果 分析 使用di...
機器學習 特徵工程
在之前學習機器學習技術中,很少關注特徵工程 feature engineering 然而,單純學習機器學習的演算法流程,可能仍然不會使用這些演算法,尤其是應用到實際問題的時候,常常不知道怎麼提取特徵來建模。特徵是機器學習系統的原材料,對最終模型的影響是毋庸置疑的。特徵工程的重要意義 資料特徵會直接影...