機器學習:特徵選擇和降維實例

2021-01-15 不靠譜的貓

根據維基百科,「特徵選擇是選擇用於模型構建的相關特徵的子集的過程」,或者換句話說,選擇最重要的特徵。

在正常情況下,領域知識起著重要作用,我們可以選擇我們認為最重要的特徵。例如,在預測房價時,臥室和面積通常被認為是重要的。不幸的是,在Do not Overfit II競賽(kaggle.com/c/dont-overfit-ii/data)中,領域知識的使用是不可能的,因為我們有一個二元目標和300個連續變量,這迫使我們嘗試特徵選擇技術。

簡介

通常,我們將特徵選擇和降維組合在一起使用。雖然這兩種方法都用於減少數據集中的特徵數量,但存在很大不同。

特徵選擇只是選擇和排除給定的特徵而不改變它們。

降維是將特徵轉換為較低維度。

加載數據

導入必須的Python庫

設置默認繪圖參數

加載機器學習數據集

Train Shape: (250, 302)Test Shape: (19750, 301)

使用seaborns countplot來顯示機器學習數據集中問題的分布

基線模型

我們將使用邏輯回歸作為基線模型。我們首先將數據分為測試集和訓練集,並進行了縮放:

LR Scores: [0.80729167 0.71875 0.734375 0.80034722 0.66319444]RFC Scores: [0.66753472 0.61371528 0.69618056 0.63715278 0.65104167]

檢查是最重要的特徵

從交叉驗證分數的變化可以看出,模型存在過擬合現象。我們可以嘗試通過特徵選擇來提高這些分數。

刪除又缺失值的特徵

檢查缺失值是任何機器學習問題的第一步。然後我們可以刪除超過我們定義的閾值的列。

train.isnull().any().any()

False

數據集沒有缺失值,因此在此步驟中沒有要刪除的特徵。

刪除低方差的特徵

在sklearn的特徵選擇模塊中,我們可以找到VarianceThreshold。它刪除方差不滿足某個閾值的所有特徵。默認情況下,它刪除了方差為零的特徵,或所有樣本值相同的特徵。

(250, 302)

我們可以從上面看到,所有列中都沒有相同值的特徵,因此我們沒有要刪除的特徵。

刪除高度相關的特徵

高度相關或共線性的特徵可能導致過度擬合。當一對變量高度相關時,我們可以刪除一個變量來減少維度,而不會損失太多信息。我們應該保留哪一個呢?與目標相關性更高的那個。讓我們來探索我們的特徵之間的相關性:

這裡我們看到了與目標變量高度相關的特性。特徵33與目標相關性最高,但相關值僅為0.37,僅為弱相關。

我們還可以檢查特徵與其他特徵之間的相關性。下面我們可以看到一個相關矩陣。看起來我們所有的特徵都不是高度相關的。

相關矩陣

讓我們嘗試刪除相關值大於0.5的特徵:

Columns to drop: 0

從上面的相關矩陣可以看出,數據集中沒有高度相關的特徵。最高的相關性僅為0.37。

單變量特徵選擇

單變量特徵選擇是基於單變量統計檢驗選擇最優特徵。我們可以使用sklearn的SelectKBest來選擇一些要保留的特徵。這種方法使用統計測試來選擇與目標相關性最高的特徵。這裡我們將保留前100個特徵。

交叉驗證分數比上面的基線有所提高,但是我們仍然可以看到分數的變化,這表明過度擬合。

遞歸特性消除

遞歸特徵選擇通過消除最不重要的特徵來實現。它進行遞歸,直到達到指定數量的特徵為止。遞歸消除可以用於通過coef_或feature_importances_為特徵分配權重的任何模型。在這裡,我們將使用隨機森林選擇100個最好的特徵:

LR Scores: [0.99826389 0.99652778 0.984375 1. 0.99652778]RFC Scores: [0.63368056 0.72569444 0.66666667 0.77430556 0.59895833]

使用SelectFromModel選擇特徵

與遞歸特徵選擇一樣,sklearn的SelectFromModel與任何具有coef_或featureimportances屬性的估計器一起使用。它刪除低於設置閾值的特徵。

LR Scores: [0.984375 0.99479167 0.97222222 0.99305556 0.99305556]RFC Scores: [0.70659722 0.80729167 0.76475694 0.84461806 0.77170139]

PCA

主成分分析(PCA)是一種降維技術,它將數據投影到較低的維度空間。PCA在許多情況下都是有用的,但在多重共線性或預測函數需要解釋的情況下,就不需要優先考慮了。

這裡我們將使用PCA,保持90%的方差:

(250, 139)

LR Scores: [0.80902778 0.703125 0.734375 0.80555556 0.66145833]RFC Scores: [0.60503472 0.703125 0.69878472 0.56597222 0.72916667]

(250, 93)

LR Scores: [0.72048611 0.60069444 0.68402778 0.71006944 0.61284722]RFC Scores: [0.61545139 0.71440972 0.57465278 0.59722222 0.640625 ]

0.9059027777777778

結論

特徵選擇是任何機器學習過程的重要組成部分。在本文中,我們探索了幾種有助於提高模型性能的特徵選擇和降維方法。

相關焦點

  • 機器學習之sklearn中的降維算法
    所以今天,我會用最簡單的方式為大家呈現降維算法的原理,但這註定意味著大家無法看到這個算法的全貌,在機器學習中逃避數學是邪道,所以更多原理大家自己去閱讀。在降維過程中,我們會減少特徵的數量,這意味著刪除數據,數據量變少則表示模型可以獲取的信息會變少,模型的表現可能會因此受影響。
  • 分享一個Python中機器學習的特徵選擇工具
    特徵選擇,即在數據集中查找和選擇最有用的特徵的過程,是機器學習的關鍵步驟。不必要的特徵會降低訓練速度、模型的可解釋性,最重要的是會降低測試集的泛化性能。  我對臨時的特徵選擇方法感到很失望,但是在解決機器學習問題時又反覆用到了這些方法,所以就創建了一個關於特徵選擇的Python類,該類可以在GitHub上找到。
  • 教程| 初學者如何選擇合適的機器學習算法(附速查表)
    有很多因素會影響這一問題的答案,比如:數據的大小、質量及性質可用計算時間任務的急迫性數據的使用用途在沒有測試過不同算法之前,即使是經驗豐富的數據科學家和機器學習算法開發者也都不能分辨出哪種算法性能最好。我們並不提倡一步到位,但是我們確實希望根據一些明確的因素為算法的選擇提供一些參考意見。
  • 機器學習數據降維方法:PCA主成分分析
    PCA在機器學習中很常用,是一種無參數的數據降維方法。PCA的推導PCA通過線性變換將原始數據變換為一組各維度線性無關的表示,可用於提取數據的主要特徵分量,常用於高維數據的降維。我們知道PCA是一種數據降維的方法,在降低維度的過程中,我們當然想要保留更多的特徵,PCA就是經過數學推導,保留最多特徵同時降維的方法。
  • 五分鐘了解機器學習十大算法
    本文為有志於成為數據科學家或對此感興趣的讀者們介紹最流行的機器學習算法。機器學習是該行業的一個創新且重要的領域。我們為機器學習程序選擇的算法類型,取決於我們想要實現的目標。現在,機器學習有很多算法。因此,如此多的算法,可能對於初學者來說,是相當不堪重負的。
  • 數據科學家應該知道的頂級機器學習算法
    因為它迫使您考慮輸入數據的角色和模型準備過程。另外,選擇最適合您的問題的方法以獲得最佳結果。讓我們看一下機器學習算法中的三種不同的學習風格:監督學習基本上,在此監督式機器學習中,輸入數據稱為訓練數據,並且一次具有已知標籤或結果,例如垃圾郵件/非垃圾郵件或股票價格。在此,通過訓練過程準備了模型。另外,在此需要做出預測。並在這些預測錯誤時進行糾正。
  • 流行的機器學習算法總結,幫助你開啟機器學習算法學習之旅
    這些算法的工作方式是,為它們提供第一批數據,並且隨著時間的流逝和算法的準確性的提高,額外的數據也被引入到算法中。定期將算法應用於新數據和新經驗的過程可提高機器學習的整體效率。機器學習算法對於與分類,預測建模和數據分析相關的各種任務至關重要。「機器學習方面的突破將價值十個微軟。」
  • 預測建模、監督機器學習和模式分類概覽
    機器學習和模式分類預測建模是建立一個能夠進行預測的模型的通用概念。通常情況下,這樣的模型包括一個機器學習算法,以便從訓練數據集中學習某些屬性做出這些預測。預測建模可以進一步分成兩個子集:回歸和模式分類。回歸模型基於變量和趨勢之間的關係的分析,以便做出關於連續變量的預測,如天氣預報的最高溫度的預測。
  • 機器學習中特徵選擇怎麼做?這篇文章告訴你
    然後,可以使用數據科學和機器學習技術對這些數據進行分析,以便提供分析和作出預測。儘管在大多數情況下,在開始任何統計分析之前,需要先對最初收集的數據進行預處理。如果添加的特徵比必要的特徵多,那麼我們的模型性能將下降(因為添加了噪聲)。真正的挑戰是找出哪些特徵是最佳的使用特徵(這實際上取決於我們提供的數據量和我們正在努力實現的任務的複雜性)。這就是特徵選擇技術能夠幫到我們的地方!圖 1:分類器性能和維度之間的關係▍特徵選擇有許多不同的方法可用於特徵選擇。
  • 教你如何做特徵選擇
    2、特徵選擇的確切含義將高維空間的樣本通過映射或者是變換的方式轉換到低維空間,達到降維的目的,然後通過特徵選取刪選掉冗餘和不相關的特徵來進一步降維。個人的理解是這樣的,特徵選擇不同於特徵提取,特徵和模型是分不開,選擇不同的特徵訓練出的模型是不同的。在機器學習=模型+策略+算法的框架下,特徵選擇就是模型選擇的一部分,是分不開的。這樣文章最後提到的特徵選擇和交叉驗證就好理解了,是先進行分組還是先進行特徵選擇。
  • 深度學習和機器學習的線性代數入門
    引言機器學習和深度學習建立在數學原理和概念之上,因此AI學習者需要了解基本數學原理。正確理解機器學習和深度學習的概念,掌握以下這些數學領域至關重要:機器學習和深度學習中的線性代數在機器學習中,很多情況下需要向量化處理,為此,掌握線性代數的知識至關重要。
  • 解析MATLAB R2016b和機器學習之間的聯繫以及應用
    打開APP 解析MATLAB R2016b和機器學習之間的聯繫以及應用 發表於 2019-09-17 14:24:09 MATLAB
  • 特徵選擇—對壞屬性說不
    特徵選擇是從原始數據中選擇對於預測Pipeline而言最好的特徵的過程,更正式地說,給定n個特徵,搜索其中包括k個特徵的子集來改善機器學習Pipeline的性能。特徵選擇嘗試剔除數據中的噪聲。特徵選擇的方法包括基於統計和基於模型的特徵選擇。
  • 機器學習的特徵選擇方法要如何選取?
    基於特徵的特徵選擇方法包括使用統計信息評估每個輸入變量和目標變量之間的關係,並選擇與目標變量關係最密切的那些輸入變量。儘管統計方法的選擇取決於輸入和輸出變量的數據類型,但是這些方法可以快速有效。這樣,當執行基於過濾器的特徵選擇時,對於機器學習從業者來說,為數據集選擇適當的統計量度可能是具有挑戰性的。
  • 機器學習中的「維度」是什麼?
    「維度」這個詞在機器學習裡面,應該是一個高頻詞,它經常出現在人們的視野中,比如說隨機森林是通過隨機抽取特徵來建樹,以避免高維計算;再比如說,sklearn中導入特徵矩陣,必須是至少二維;特徵選擇的目的是通過降維來降低算法的計算成本……這些語言都很正常地被我用來使用,直到有一天,一個小夥伴問了我
  • 機器學習特徵選擇常用算法
    綜述本文引用地址:http://www.eepw.com.cn/article/201807/383585.htm(1) 什麼是特徵選擇特徵選擇 ( Feature Selection )也稱特徵子集選擇( Feature Subset Selection , FSS ) ,或屬性選擇( Attribute Selection ) ,是指從全部特徵中選取一個特徵子集,使構造出來的模型更好
  • 陳陟原:數據降維與可視化| AI 研習社第 53 期猿桌會
    我們可以從不同的角度入手進行不同的分類,主要分類方法有:根據數據的特性可以劃分為線性降維和非線性降維;根據是否考慮和利用數據的監督信息可以劃分為無監督降維、有監督降維和半監督降維;根據保持數據的結構可以劃分為全局保持降維、局部保持降維和全局與局部保持一致降維等等。
  • 數據科學和機器學習面試問題集錦
    在過去的幾個月裡,我面試了許多公司涉及數據科學和機器學習的初級職位。介紹一下我自己,以讓你對我有一定了解。我還有最後幾個月就研究生畢業,我的碩士是機器學習和計算機視覺,我之前的大部分經驗是研究/學術,但在一個早期創業公司待過8個月(與機器學習無關)。這些角色包括數據科學、通用機器學習和專精自然語言處理及計算機視覺。
  • 人人都能讀懂的無監督學習:什麼是聚類和降維?
    本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。機器學習已經成為了改變時代的大事,一時間似乎人人都應該懂一點機器學習。但機器學習涉及到的數學知識和編程能力往往讓沒有相關經驗的人望而卻步。
  • 數據分析領域中最為人稱道的七種降維方法
    近來由於數據記錄和屬性規模的急劇增長,大數據處理平臺和並行數據分析算法也隨之出現。於此同時,這也推動了數據降維處理的應用。實際上,數據量有時過猶不及。有時在數據分析應用中大量的數據反而會產生更壞的性能。最新的一個例子是採用 2009 KDD Challenge 大數據集來預測客戶流失量。