本文來自之前在Udacity上自學機器學習的系列筆記。這是第19篇,介紹了數據前處理的方法—特征選擇和特征轉換。
為什么需要特征選擇
特征選擇之所以重要,有兩個原因,一個源自我們的認知,另一個是維度災難。因為在我們的認知中,我們需要考慮數據的哪些特征是起決定性作用的。有時候我們可以找到成百上千種特征,但其中發(fā)揮作用的僅有幾個到十幾個。維度災難指出訓練所需數據量會隨著特征維度的增加而呈指數型增加,即。所以,在學習模型時,需要對特征進行篩選,選出數量不大且發(fā)揮主要作用的特征,也就是所謂的降維的方法。
特征選擇的兩種方法
為了解決特征選擇問題,我們可以使用兩種方法,一種是過濾(Filtering),另一種是封裝(Wrapping)。
過濾就是將特征輸入到一個搜索算法里面,然后通過最大化某種標準,輸出一部分的特征到學習模型中進行訓練。以前學習過的模型當中,決策樹模型可看成是過濾方法中的搜索算法,其中信息增益就是最大化的標準。通過尋求可以使得信息增益最大化的特征,我們得到學習模型所需要的特征。除了信息增益,還有其他一些標準可供選擇,例如方差、熵、非冗余或者說獨立的特征等;
封裝則是將特征輸入到搜索算法后,算法篩選出一部分的特征子集并進一步輸入到學習模型中進行訓練(搜索算法和學習模型封裝在一起),訓練結果反饋到搜索算法并對特征子集進行更新。搜索算法有爬山算法、隨機、前向和后向搜索算法等;
過濾的優(yōu)點是速度快,但是它不考慮學習模型;封裝的優(yōu)點是它考慮了模型的偏差和學習的過程,但是速度非常慢。
兩個概念:相關性和有用性
相關性(Relevant)
特征是強相關的,如果去除該特征將降低BOC(Bayes Optimal Classifer)。特征
是軟相關的,如果它不是強相關的,但存在一個子集,當
加入到該子集后將提高BOC。
?
有用性(Usefulness)
給定一個特定的模型,有用性的概念是用來衡量某個特征對該模型的效果的。
特征轉換
特征轉換是數據前處理的操作,將一組特征轉換為一組新的特征,同時盡可能多地保留原始特征的信息。新的一組特征個數通常少于原來的特征數,而且可以用原始特征的一個線性表達式表示出來。特征選擇屬于特征轉換的一個特例,經特征選擇后新的特征數變少。
為什么需要執(zhí)行特征轉換呢?這里以信息檢索為例子。信息檢索中有一類叫做Ad Hoc(即席查詢),比如說百度搜索,輸入“機器學習”這個詞,可以得到包含這個關鍵詞的文章。這個搜索過程比表面上所看起來要復雜,因為機器不能提前知道你想要輸入的關鍵詞是什么,也就不能提前做好一些準備工作來找出存儲相關文章的最佳位置(當然,目前百度已經有非常成熟的技術來根據用戶的輸入快速地返回結果給用戶)。我們再從特征角度來思考。將每個單詞作為一個特征來思考的話,會存在“同義詞”和“多義詞”的問題。因為有很多單詞可以表達同一個意思,例如“機器學習”和“數據挖掘”,雖然詞語不一樣,但有可能在討論同一個問題;或者一個單詞表達多種意思,例如“Apple”,可以是一個表達水果,也可能是一家科技公司?!巴x詞”可能帶來“去真”,而“多義詞”可能帶來“納偽”。
為了解決上面的問題,一個直觀的想法是,我們可以通過組合一些“同義詞”來解決“去真”,比如說,我們搜索“car”關鍵詞,想了解一些關于汽車相關的文章,為了避免搜索到關于Lisp語言的內容,我們可以組合一些單詞,例如“Automobile”、“Tesla”等。
主成分分析(PCA,Principal Component Analysis)
給定數據點,PCA將舊坐標系統(tǒng)通過轉化和輪換的方式獲得新坐標系統(tǒng),其中,新坐標系統(tǒng)中,坐標原點處于數據中心,軸的方向是方差最大化的方向,將
軸移動與
軸正交的方向。
主成分分析可以實現降維,即將較多的特征降低到較少的特征。
方差在統(tǒng)計學上,描述數據分布的范圍,如果數據沿著某個方向的分布越分散,表示這個方向的方差越大。數據中的最大主成分方向就是方差最大的方向。這么做的原因是可以保留原始數據最大程度的信息。

人臉識別案例:https://scikit-learn.org/stable/auto_examples/applications/plot_face_recognition.html
sklearn的PCA庫:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA
獨立成分分析(ICA,Independent Component Analysis)
前文所介紹的PCA是其中一種特征轉換的方法,它主要研究的是特征的關聯性,并通過最大化方差來得到。ICA則是最大程度地提高特征的獨立性,通過將特征空間線性轉換到一個新特征空間,且新特征空間的每個特征之間相互獨立。
盲源分離問題(Blind Source Separation),又稱雞尾酒會問題,可以用來解釋ICA。假設小明、小強、小紅在一個雞尾酒會上,他們都帶著一個麥克風,每個人的麥克風會錄下每個人說話的聲音。最終三個麥克風都錄有來自三個獨立來源的聲音的混合。盲源分離問題就是根據這三個混合聲音樣本,將每個人的聲音分離出來。
每一個麥克風采樣就是一個特征,這個特征由連續(xù)的時間步所錄下的聲音頻率組成。通過將這三個特征轉換為新的三個特征,其中每個特征都對應于每個人的聲音,從而解決聲音分離問題。
隨機成分分析(RCA,Random Component Analysis)
RCA與PCA不同的是,它將舊坐標系統(tǒng)轉換為新的坐標系統(tǒng),其中新的系統(tǒng)的坐標軸方向是隨機的。數據點投影到這個新的坐標系統(tǒng),在數學上,相當于我們隨機挑選了一個投影矩陣,然后計算
線性判別分析(LDA,Linear Discriminent Analysis)
LDA與PCA相同的是,也是基于某個線性坐標變換來將數據點投影到一個新的坐標系統(tǒng),但不同的是,LDA是監(jiān)督降維方法,即它會根據數據點的類別標簽進行投影。