深度學習在特徵選擇方面如何應用?

時間 2021-06-10 00:37:29

1樓:akon

基本的搜尋策略按照特徵子集的形成過程可分為以下3種: 全域性最優、隨機搜尋和啟發式搜尋. 乙個具體的搜尋演算法會採用兩種或多種基本搜尋策略, 例如遺傳演算法是一種隨機搜尋演算法, 同時也是一種啟發式搜尋演算法.

完全搜尋分為窮舉搜尋(Exhaustive)與非窮舉搜尋(Non-Exhaustive)兩類。

(1) 廣度優先搜尋( Breadth First Search )

演算法描述:廣度優先遍歷特徵子空間。

演算法評價:列舉了所有的特徵組合,屬於窮舉搜尋,時間複雜度是O(2n),實用性不高。

(2) 分支限界搜尋( Branch and Bound )

演算法描述:在窮舉搜尋的基礎上加入分支限界。例如:若斷定某些分支不可能搜尋出比當前找到的最優解更優的解,則可以剪掉這些分支。

(3) 定向搜尋 (Beam Search )

演算法描述:首先選擇N個得分最高的特徵作為特徵子集,將其加入乙個限制最大長度的優先佇列,每次從佇列中取出得分最高的子集,然後窮舉向該子集加入1個特徵後產生的所有特徵集,將這些特徵集加入佇列。

(4) 最優優先搜尋 ( Best First Search )

演算法描述:與定向搜尋類似,唯一的不同點是不限制優先佇列的長度。

迄今為止, 唯一得到最優結果的搜尋方法是分支定界法. 這種演算法能保證在事先確定優化特徵子集中特徵數目的情況下, 找到相對於所設計的可分性判據而言的最優子集. 它的搜尋空間是 O(2的N次方) (其中 N 為特徵的維數).

存在的問題: 很難確定優化特徵子集的數目; 滿足單調性的可分性判據難以設計; 處理高維多類問題時, 演算法的時間複雜度較高. 因此, 雖然全域性最優搜尋策略能得到最優解, 但因為諸多因素

限制, 無法被廣泛應用.

(1)序列前向選擇( SFS , Sequential Forward Selection )

演算法描述:特徵子集X從空集開始,每次選擇乙個特徵x加入特徵子集X,使得特徵函式J( X)最優。簡單說就是,每次都選擇乙個使得評價函式的取值達到最優的特徵加入,其實就是一種簡單的貪心演算法。

演算法評價:缺點是只能加入特徵而不能去除特徵。例如:

特徵A完全依賴於特徵B與C,可以認為如果加入了特徵B與C則A就是多餘的。假設序列前向選擇演算法首先將A加入特徵集,然後又將B與C加入,那麼特徵子集中就包含了多餘的特徵A。

(2)序列後向選擇( SBS , Sequential Backward Selection )

演算法描述:從特徵全集O開始,每次從特徵集O中剔除乙個特徵x,使得剔除特徵x後評價函式值達到最優。

演算法評價:序列後向選擇與序列前向選擇正好相反,它的缺點是特徵只能去除不能加入。

另外,SFS與SBS都屬於貪心演算法,容易陷入區域性最優值。

(3) 雙向搜尋( BDS , Bidirectional Search )

演算法描述:使用序列前向選擇(SFS)從空集開始,同時使用序列後向選擇(SBS)從全集開始搜尋,當兩者搜尋到乙個相同的特徵子集C時停止搜尋。

雙向搜尋的出發點是 。如下圖所示,O點代表搜尋起點,A點代表搜尋目標。灰色的圓代表單向搜尋可能的搜尋範圍,綠色的2個圓表示某次雙向搜尋的搜尋範圍,容易證明綠色的面積必定要比灰色的要小。

(4) 增L去R選擇演算法 ( LRS , Plus-L Minus-R Selection )

該演算法有兩種形式:

<1> 演算法從空集開始,每輪先加入L個特徵,然後從中去除R個特徵,使得評價函式值最優。( L > R )

<2> 演算法從全集開始,每輪先去除R個特徵,然後加入L個特徵,使得評價函式值最優。( L < R )

演算法評價:增L去R選擇演算法結合了序列前向選擇與序列後向選擇思想, L與R的選擇是演算法的關鍵。

(5) 序列浮動選擇( Sequential Floating Selection )

演算法描述:序列浮動選擇由增L去R選擇演算法發展而來,該演算法與增L去R選擇演算法的不同之處在於:序列浮動選擇的L與R不是固定的,而是「浮動」的,也就是會變化的。

序列浮動選擇根據搜尋方向的不同,有以下兩種變種。

<1>序列浮動前向選擇( SFFS , Sequential Floating Forward Selection )

演算法描述:從空集開始,每輪在未選擇的特徵中選擇乙個子集x,使加入子集x後評價函式達到最優,然後在已選擇的特徵中選擇子集z,使剔除子集z後評價函式達到最優。

<2>序列浮動後向選擇( SFBS , Sequential Floating Backward Selection )

演算法描述:與SFFS類似,不同之處在於SFBS是從全集開始,每輪先剔除特徵,然後加入特徵。

演算法評價:序列浮動選擇結合了序列前向選擇、序列後向選擇、增L去R選擇的特點,並彌補了它們的缺點。

(6) 決策樹( Decision Tree Method , DTM)

演算法描述:在訓練樣本集上執行C4.5或其他決策樹生成演算法,待決策樹充分生長後,再在樹上執行剪枝演算法。

則最終決策樹各分支處的特徵就是選出來的特徵子集了。決策樹方法一般使用資訊增益作為評價函式。

一般認為採用浮動廣義後向選擇方法 (FGSBS) 是較為有利於實際應用的一種特徵選擇搜尋策略, 它既考慮到特徵之間的統計相關性, 又用浮動方法保證演算法執行的快速穩定性. 存在的問題是: 啟發式搜尋策略雖然效率高, 但是它以犧牲全域性最優為代價.

(1) 隨機產生序列選擇演算法(RGSS, Random Generation plus Sequential Selection)

演算法描述:隨機產生乙個特徵子集,然後在該子集上執行SFS與SBS演算法。

演算法評價:可作為SFS與SBS的補充,用於跳出區域性最優值。

(2) 模擬退火演算法( SA, Simulated Annealing )

模擬退火演算法可參考 大白話解析模擬退火演算法。

演算法評價:模擬退火一定程度克服了序列搜尋演算法容易陷入區域性最優值的缺點,但是若最優解的區域太小(如所謂的「Golf球洞」地形),則模擬退火難以求解。

(3) 遺傳演算法( GA, Genetic Algorithms )

遺傳演算法可參考 遺傳演算法入門 。

演算法描述:首先隨機產生一批特徵子集,並用評價函式給這些特徵子集評分,然後通過交叉、突變等操作繁殖出下一代的特徵子集,並且評分越高的特徵子集被選中參加繁殖的概率越高。這樣經過N代的繁殖和優勝劣汰後,種群中就可能產生了評價函式值最高的特徵子集。

在計算過程中把特徵選擇問題與模擬退火演算法、禁忌搜尋演算法、遺傳演算法等, 或者僅僅是乙個隨機重取樣過程結合起來, 以概率推理和取樣過程作為演算法的基礎, 基於對分類估計的有效性, 在演算法執行中對每個特徵賦予一定的權重; 然後根據使用者所定義的或自適應的閾值來對特徵重要性進行評價. 當特徵所對應的權重超出了這個閾值, 它便被選中作為重要的特徵來訓練分類器. Relief系列演算法即是一種典型的根據權重選擇特徵的隨機搜尋方法, 它能有效地去掉無關特徵, 但不能去除冗餘, 而且只能用於兩類分類

存在的問題: 具有較高的不確定性, 只有當總循

環次數較大時, 才可能找到較好的結果. 在隨機搜尋策略中, 可能需對一些引數進行設定, 引數選擇的合適與否對最終結果的好壞起著很大的作用. 因此, 引數選擇是乙個關鍵步驟.

每種搜尋策略都有各自的優缺點, 在實際應用過程中, 可以根據具體環境和準則函式來尋找乙個最佳的平衡點. 例如, 如果特徵數較少, 可採用全域性最優搜尋策略; 若不要求全域性最優, 但要求計算速度快, 則可採用啟發式策略; 若需要高效能的子集, 而不介意計算時間, 則可採用隨機搜尋策略.

Mask矩陣在深度學習中有哪些應用場景?

答乙個挖墳的 mask 是可以用來執行條件控制的,類似於數位電路裡的 mux,從兩個結果裡選乙個。對於 RNN 模型,乙個 batch 內不同樣本長度可能不同,因此經常需要 padding。假如想得到 RNN 在每條樣本的最後乙個有效時間步的狀態怎麼做?1 一種辦法是 pre padding,就是把...

特徵工程在深度學習演算法設計中的地位是什麼?

dragonfly 我認為特徵工程在其中有兩種體現。一種體現在模型結構的設計,很多模型結構就是為了建模某些特徵,像DIN CAN等 另一種體現在模型的輸入,受限於模型表達能力,有些特徵可能難以建模,這時候我們還是手工產出特徵輸入模型。深度學習時代提效三板斧 加特徵 擴資料 改結構。在很多成熟的業務場...

深度學習在工業工程領域有哪些典型的應用?

不立危牆Amon 主要是機器視覺 缺陷檢測吧?有2d 有3d的。3d壁壘略高。3d手機 汽車精密製造 高鐵製造 飛機葉片製造等。深度學習目前創業公司很多,小程式 智慧型寫作 金 融服務 醫療影像 測序診斷 食品質檢 機器視覺 工業檢測等等,都接觸過一些。純演算法公司能落地的不多,總是測算不到正向現金...