1. 程式人生 > >機器學習中的特徵——特徵選擇的方法以及注意點

機器學習中的特徵——特徵選擇的方法以及注意點

關於機器學習中的特徵我有話要說

    在這次校園招聘的過程中,我學到了很多的東西,也糾正了我之前的演算法至上的思想,尤其是面試百度的過程中,讓我漸漸意識到機器學習不是唯有演算法,機器學習是一個過程,這樣的過程包括資料處理+模型訓練,而資料處理又包括了特徵提取,特徵表示。模型訓練中有訓練的策略,訓練的模型,演算法相關等等的一套流程,一個好的預測模型與特徵提取,特徵表示的方法息息相關,而演算法這是作用於特徵資料集上的一種策略。     以上是我個人的一些觀點,如有不同見解的人,也希望你們留言,大家一起探討,一起進步。今天還是要來說說我看到的一個材料“An Introduction to Feature Selection
”,主要是我對這篇文章的一個總結與我個人的一些認識。

一、特徵選擇和降維

1、相同點和不同點

    特徵選擇和降維有著些許的相似點,這兩者達到的效果是一樣的,就是試圖去減少特徵資料集中的屬性(或者稱為特徵)的數目;但是兩者所採用的方式方法卻不同:降維的方法主要是通過屬性間的關係,如組合不同的屬性得新的屬性,這樣就改變了原來的特徵空間;而特徵選擇的方法是從原始特徵資料集中選擇出子集,是一種包含的關係,沒有更改原始的特徵空間。

2、降維的主要方法

  • Principal Component Analysis
  • Singular Value Decomposition
  • Sammon's Mapping(Sammon
    對映)

二、特徵選擇的目標

    引用自吳軍《數學之美》上的一句話:一個正確的數學模型應當在形式上是簡單的。構造機器學習的模型的目的是希望能夠從原始的特徵資料集中學習出問題的結構與問題的本質,當然此時的挑選出的特徵就應該能夠對問題有更好的解釋,所以特徵選擇的目標大致如下:

  • 提高預測的準確性
  • 構造更快,消耗更低的預測模型
  • 能夠對模型有更好的理解和解釋

三、特徵選擇的方法

    主要有三種方法:

1、Filter方法

    其主要思想是:對每一維的特徵“打分”,即給每一維的特徵賦予權重,這樣的權重就代表著該維特徵的重要性,然後依據權重排序。

    主要的方法有:

  • Chi-squared test
    (卡方檢驗)
  • correlation coefficient scores(相關係數)

2、Wrapper方法

    其主要思想是:將子集的選擇看作是一個搜尋尋優問題,生成不同的組合,對組合進行評價,再與其他的組合進行比較。這樣就將子集的選擇看作是一個是一個優化問題,這裡有很多的優化演算法可以解決,尤其是一些啟發式的優化演算法,如GA,PSO,DE,ABC等,詳見“優化演算法——人工蜂群演算法(ABC)”,“優化演算法——粒子群演算法(PSO)”。

    主要方法有:recursive feature elimination algorithm(遞迴特徵消除演算法)

3、Embedded方法

    其主要思想是:在模型既定的情況下學習出對提高模型準確性最好的屬性。這句話並不是很好理解,其實是講在確定模型的過程中,挑選出那些對模型的訓練有重要意義的屬性。

總結以及注意點

    這篇文章中最後提到了一點就是用特徵選擇的一點Trap。個人的理解是這樣的,特徵選擇不同於特徵提取,特徵和模型是分不開,選擇不同的特徵訓練出的模型是不同的。在機器學習=模型+策略+演算法的框架下,特徵選擇就是模型選擇的一部分,是分不開的。這樣文章最後提到的特徵選擇和交叉驗證就好理解了,是先進行分組還是先進行特徵選擇。

    答案是當然是先進行分組,因為交叉驗證的目的是做模型選擇,既然特徵選擇是模型選擇的一部分,那麼理所應當是先進行分組。如果先進行特徵選擇,即在整個資料集中挑選擇機,這樣挑選的子集就具有隨機性。

    我們可以拿正則化來舉例,正則化是對權重約束,這樣的約束引數是在模型訓練的過程中確定的,而不是事先定好然後再進行交叉驗證的。

    以上是我學習的一點感悟,希望有更多的人一起參加討論,如有哪裡寫的不對或者有其他任何問題,也希望能夠留言。

參考文獻: