機器學習的特徵工程

原文地址

引言

在之前學習機器學習技術中,很少關注特徵工程(Feature Engineering),然而,單純學習機器學習的算法流程,可能仍然不會使用這些算法,尤其是應用到實際問題的時候,常常不知道怎麼提取特徵來建模。
特徵是機器學習系統的原材料,對最終模型的影響是毋庸置疑的。

特徵工程的重要意義

數據特徵會直接影響你使用的預測模型和實現的預測結果。準備和選擇的特徵越好,則實現的結果越好。
影響預測結果好壞的因素: 模型的選擇、可用的數據、特徵的提取 。
優質的特徵往往描述了數據的固有結構。
大多數模型都可以通過數據中良好的結構很好的學習,即使不是最優的模型,優質的特徵也可以得到不錯的效果。優質特徵的靈活性可以讓你使用簡單的模型運算的更快,更容易理解,更容易維護。
優質的特徵可以在使用不是最優的模型參數的情況下得到不錯的預測結果,這樣你就不必費力去選擇最適合的模型和最優的參數了。

特徵工程定義

特徵工程是將原始數據轉化爲特徵,更好表示預測模型處理的實際問題,提升對於未知數據的準確性。它是用目標問題所在的特定領域知識或者自動化的方法來生成、提取、刪減或者組合變化得到特徵。

特徵工程的子問題

  • 機器學習中的特徵(Feature)
    在機器學習和模式識別中,特徵是在觀測現象中的一種獨立、可測量的屬性。選擇信息量大的、有差別性的、獨立的特徵是模式識別、分類和迴歸問題的關鍵一步。
    最初的原始特徵數據集可能太大,或者信息冗餘,因此在機器學習的應用中,一個初始步驟就是選擇特徵的子集,或構建一套新的特徵集,減少功能來促進算法的學習,提高泛化能力和可解釋性。
    在表格數據中,觀測數據或實例(對應表格的一行)由不同的變量或者屬性(表格的一列)構成,這裏屬性其實就是特徵。但是與屬性一詞不同的是,特徵是對於分析和解決問題有用、有意義的屬性。
    在機器視覺中,一幅圖像是一個觀測,但是特徵可能是圖中的一條線;在自然語言處理中,一個文本是一個觀測,但是其中的段落或者詞頻可能纔是一種特徵;在語音識別中,一段語音是一個觀測,但是一個詞或者音素纔是一種特徵。

  • 特徵的重要性(Feature Importance)
    你可以客觀的評價特徵的實用性。判別特徵的重要性是對特徵進行選擇的預先指標,特徵根據重要性被分配分數,然後根據分數不同進行排序,其中高分的特徵被選擇出來放入訓練數據集。
    如果與因變量(預測的事物)高度相關,則這個特徵可能很重要,其中相關係數和獨立變量方法是常用的方法。
    在構建模型的過程中,一些複雜的預測模型會在算法內部進行特徵重要性的評價和選擇,如多元自適應迴歸樣條法(Multivariate Adaptive Regression Splines, MARS)、隨機森林(Random Forest)、梯度提升機(Gradient Boosted Machines)。這些模型在模型準備階段會進行變量重要性的確定。

  • 特徵提取(Feature Extraction)
    一些觀測數據如果直接建模,其原始狀態的數據太多。像圖像、音頻和文本數據,如果將其看做是表格數據,那麼其中包含了數以千計的屬性。特徵提取是自動地對原始觀測降維,使其特徵集合小到可以進行建模的過程。
    對於表格式數據,可以使用主元素分析(Principal Component Analysis)、聚類等映射方法;對於圖像數據,可以進行線(line)或邊緣(edge)的提取;根據相應的領域,圖像、視頻和音頻數據可以有很多數字信號處理的方法對其進行處理。

  • 特徵選擇(Feature Selection)
    不同的特徵對模型的準確度的影響不同,有些特徵與要解決的問題不相關,有些特徵是冗餘信息,這些特徵都應該被移除掉。
    特徵選擇是自動地選擇出對於問題最重要的那些特徵子集的過程。
    特徵選擇算法可以使用評分的方法來進行排序;還有些方法通過反覆試驗來搜索出特徵子集,自動地創建並評估模型以得到客觀的、預測效果最好的特徵子集;還有一些方法,將特徵選擇作爲模型的附加功能,像逐步迴歸法(Stepwise regression) 就是一個在模型構建過程中自動進行特徵選擇的算法。

  • 特徵構建(Feature Construction)
    特徵重要性和選擇是告訴使用者特徵的客觀特性,但這些工作之後,需要你人工進行特徵的構建。
    特徵構建需要花費大量的時間對實際樣本數據進行處理,思考數據的結構,和如何將特徵數據輸入給預測算法。
    對於表格數據,特徵構建意味着將特徵進行混合或組合以得到新的特徵,或通過對特徵進行分解或切分來構造新的特徵;對於文本數據,特徵夠自己按意味着設計出針對特定問題的文本指標;對於圖像數據,這意味着自動過濾,得到相關的結構。

  • 特徵學習(Feature Learning)
    特徵學習是在原始數據中自動識別和使用特徵。
    現代深度學習方法在特徵學習領域有很多成功案例,比如自編碼器和受限玻爾茲曼機。它們以無監督或半監督的方式實現自動的學習抽象的特徵表示(壓縮形式),其結果用於支撐像語音識別、圖像分類、物體識別和其他領域的先進成果。
    抽象的特徵表達可以自動得到,但是你無法理解和利用這些學習得到的結果,只有黑盒的方式纔可以使用這些特徵。你不可能輕易懂得如何創造和那些效果很好的特徵相似或相異的特徵。這個技能是很難的,但同時它也是很有魅力的,很重要的。

  • 特徵工程的流程

    • 機器學習中數據的轉換過程;
    • 選擇數據:收集整合數據,將數據規劃化爲一個數據集;
    • 預處理數據:對數據進行清洗、格式化、採樣;
    • 轉換數據:特徵工程所在;
    • 對數據建模:構建模型、評估模型、調整模型;
    • 特徵工程的迭代過程;
    • 對特徵進行頭腦風暴:深入分析問題,觀察數據特點,參考其他問題的有關特徵工程的方法並應用到自己問題中;
    • 特徵的設計:你可以自動提取特徵,手動構造特徵,或將兩者相結合;
    • 特徵選擇:使用不同的特徵重要性評分方法或特徵選擇方法;
    • 評估模型:利用所選擇的特徵對測試數據進行預測,評估模型準確性。
發佈了87 篇原創文章 · 獲贊 95 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章