在之前學習機器學習技術中,很少關注特徵工程(feature engineering),然而,單純學習機器學習的演算法流程,可能仍然不會使用這些演算法,尤其是應用到實際問題的時候,常常不知道怎麼提取特徵來建模。
特徵是機器學習系統的原材料,對最終模型的影響是毋庸置疑的。
特徵工程的重要意義
資料特徵會直接影響你使用的**模型和實現的**結果。準備和選擇的特徵越好,則實現的結果越好。
影響**結果好壞的因素:模型的選擇、可用的資料、特徵的提取。
優質的特徵往往描述了資料的固有結構。
大多數模型都可以通過資料中良好的結構很好的學習,即使不是最優的模型,優質的特徵也可以得到不錯的效果。優質特徵的靈活性可以讓你使用簡單的模型運算的更快,更容易理解,更容易維護。
優質的特徵可以在使用不是最優的模型引數的情況下得到不錯的**結果,這樣你就不必費力去選擇最適合的模型和最優的引數了。
特徵工程定義
特徵工程是將原始資料轉化為特徵,更好表示**模型處理的實際問題,提公升對於未知資料的準確性。它是用目標問題所在的特定領域知識或者自動化的方法來生成、提取、刪減或者組合變化得到特徵。
下面的圖給出了特徵工程的概貌:
特徵工程的子問題
1. 機器學習中的特徵(feature)
在機器學習和模式識別中,特徵是在觀測現象中的一種獨立、可測量的屬性。選擇資訊量大的、有差別性的、獨立的特徵是模式識別、分類和回歸問題的關鍵一步。
最初的原始特徵資料集可能太大,或者資訊冗餘,因此在機器學習的應用中,乙個初始步驟就是選擇特徵的子集,或構建一套新的特徵集,減少功能來促進演算法的學習,提高泛化能力和可解釋性。
在**資料中,觀測資料或例項(對應**的一行)由不同的變數或者屬性(**的一列)構成,這裡屬性其實就是特徵。但是與屬性一詞不同的是,特徵是對於分析和解決問題有用、有意義的屬性。
在機器視覺中,一幅影象是乙個觀測,但是特徵可能是圖中的一條線;在自然語言處理中,乙個文字是乙個觀測,但是其中的段落或者詞頻可能才是一種特徵;在語音識別中,一段語音是乙個觀測,但是乙個詞或者音素才是一種特徵。
2. 特徵的重要性(feature importance)
你可以客觀的評價特徵的實用性。判別特徵的重要性是對特徵進行選擇的預先指標,特徵根據重要性被分配分數,然後根據分數不同進行排序,其中高分的特徵被選擇出來放入訓練資料集。
如果與因變數(**的事物)高度相關,則這個特徵可能很重要,其中相關係數和獨立變數方法是常用的方法。
在構建模型的過程中,一些複雜的**模型會在演算法內部進行特徵重要性的評價和選擇,如多元自適應回歸樣條法(multivariate adaptive regression splines, mars)、隨機森林(random forest)、梯度提公升機(gradient boosted machines)。這些模型在模型準備階段會進行變數重要性的確定。
特徵選擇是自動地選擇出對於問題最重要的那些特徵子集的過程。
特徵選擇演算法可以使用評分的方法來進行排序;還有些方法通過反覆試驗來搜尋出特徵子集,自動地建立並評估模型以得到客觀的、**效果最好的特徵子集;還有一些方法,將特徵選擇作為模型的附加功能,像逐步回歸法(stepwise regression)
就是乙個在模型構建過程中自動進行特徵選擇的演算法。
5. 特徵構建(feature construction)
特徵重要性和選擇是告訴使用者特徵的客觀特性,但這些工作之後,需要你人工進行特徵的構建。
特徵構建需要花費大量的時間對實際樣本資料進行處理,思考資料的結構,和如何將特徵資料輸入給**演算法。
對於**資料,特徵構建意味著將特徵進行混合或組合以得到新的特徵,或通過對特徵進行分解或切分來構造新的特徵;對於文字資料,特徵夠自己按意味著設計出針對特定問題的文字指標;對於影象資料,這意味著自動過濾,得到相關的結構。
6. 特徵學習(feature learning)
特徵學習是在原始資料中自動識別和使用特徵。
現代深度學習方法在特徵學習領域有很多成功案例,比如自編碼器和受限玻爾茲曼機。它們以無監督或半監督的方式實現自動的學習抽象的特徵表示(壓縮形式),其結果用於支撐像語音識別、影象分類、物體識別和其他領域的先進成果。
抽象的特徵表達可以自動得到,但是你無法理解和利用這些學習得到的結果,只有黑盒的方式才可以使用這些特徵。你不可能輕易懂得如何創造和那些效果很好的特徵相似或相異的特徵。這個技能是很難的,但同時它也是很有魅力的,很重要的。
特徵工程的流程
機器學習中資料的轉換過程:
選擇資料:收集整合資料,將資料規劃化為乙個資料集
預處理資料:對資料進行清洗、格式化、取樣
轉換資料:特徵工程所在
對資料建模:構建模型、評估模型、調整模型
特徵工程的迭代過程:
機器學習 特徵工程
老師有多年的網際網路從業經驗,所以講解的過程中結合了很多任務業界的應用,更加的深入淺出。資料採集 資料採集前需要明確採集哪些資料,一般的思路為 哪些資料對最後的結果 有幫助?資料我們能夠採集到嗎?線上實時計算的時候獲取是否快捷?舉例1 我現在要 使用者對商品的下單情況,或者我要給使用者做商品推薦,那...
機器學習 特徵工程
資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。通俗的說,就是盡可能的從原始資料中獲取更多資訊,從而使得 模型達到最佳。簡而言之,特徵工程是乙個把原始資料變成特徵的過程,這些特徵可以很好的描述資料,並且利用它們建立的模型在未知資料上表現效能可以達到最優。實驗結果取決於獲取的資料 ...
機器學習特徵工程
作用 對字典資料進行特徵值化 dictvectorizer語法 例項化了乙個物件 data dict fit transform x print dict get feature names print data return none if name main dictvec 結果 分析 使用di...