1. 程式人生 > >機器學習特徵選擇之卡方檢驗與互資訊

機器學習特徵選擇之卡方檢驗與互資訊

by wangben  @ beijing

特徵選擇的主要目的有兩點:

1.      減少特徵數量提高訓練速度,這點對於一些複雜模型來說尤其重要

2.      減少noisefeature以提高模型在測試集上的準確性。一些噪音特徵會導致模型出現錯誤的泛化(generalization),從而在測試集中表現較差。另外從模型複雜度的角度來看,特徵越多模型的複雜度越高,也就越容易發生overfitting。

互資訊(Mutual information)和卡方檢驗(chisquare)是兩種比較常用的特徵選擇方法:

互資訊

互資訊是用來評價一個事件的出現對於另一個事件的出現所貢獻的資訊量,具體的計算公式為:


其中U、C代表兩個事件,e的取值可以為0或者1,1代表出現這個事件,0代表不出現。

把上述公式拆解為統計形式為:


其中N11是表示全部資料中兩個事件同時出現的概率,N表示全部事件出現的次數,而N0.則表示N01+N00。


實際做單特徵選擇的時候,我們把某個特徵是否出現和分類是否正確這兩個事件放在一起計算。把得分較高的特徵進行保留。

需要注意的是計算時會遇到四種情況也就是,10,11,01,00,對於其中的某一種情況,當計算得到的值是0時,代表了兩者沒有關聯,當計算出的值是正值時,表示兩者共同出現的概率比較高,當值為負時,表示兩者是負相關。例如:00情況是負值是,表示兩者互相排斥,出現A時,B出現的概率就比較小,這個時候往往01情況和10情況的值為正(check)


卡方檢驗

在統計學中,卡方檢驗用來評價是兩個事件是否獨立,也就是P(AB) = P(A)*P(B) 


其中E代表當兩者獨立時期望的數量,例如E11代表兩個事件獨立時,共同出現的期望值。

具體的計算公式為:


相關資料例項:



查詢卡方分佈在自由度為1時的顯著性閾值:


284遠遠超過了10.83,所以二者並不獨立,存在相關性。

卡方檢驗和互資訊的區別

卡方檢驗對於出現次數較少的特徵更容易給出高分。例如某一個特徵就出現過一次在分類正確的資料中,則該特徵會得到相對高的分數,而互資訊則給分較低。其主要原因還是由於互資訊在外部乘上了一個該型別出現的概率值,從而打壓了出現較少特徵的分數。

實驗結果:

如果export只出現一次,且poultry為1

則在MI中的r11中log裡面結果是774106/27652,但是外部的P11非常小隻有1/N

在卡方檢驗中,E11的值為N*1/N*(27652/774106), 也就是27652/774106

(1 -27652/774106)^2/27652/774106

沒有再計算N11的比例,相對來說值會大一些

剛開始時,卡方檢驗會選擇一些小眾特徵,覆蓋率不好,噪音較大,所以效果不如互資訊方法,但是從100開始會選擇到一些較好的特徵,整體效果有所上升。

 

這兩種方法都屬於貪心方法,沒有考慮到已選擇特徵和待選特徵之間的相關性,並不能得到最優的情況。但是速度方面會非常快。

其他需要考慮的地方:是否特徵選擇的時候,計算概率,通過統計的方法對於一些小眾特徵偏差較大,通過增加先驗概率的方法進行平滑可以優化結果。


相關推薦

機器學習特徵選擇檢驗資訊

by wangben  @ beijing 特徵選擇的主要目的有兩點: 1.      減少特徵數量提高訓練速度,這點對於一些複雜模型來說尤其重要 2.      減少noisefeature以提高模型在測試集上的準確性。一些噪音特徵會導致模型出現錯誤的泛化(genera

特徵選擇統計 Chi-Square

%%%   dataset中的最後一列為分類類別,k為要選擇的特徵個數 function result=chiAttributeEva(dataset,k) % character_order character_order=[]; % the count of class

機器學習特徵選擇方法

有一句話這麼說,特徵決定上限,模型逼近上限。特徵選擇對後面的模型訓練很重要,選擇合適重要的特徵,對問題求解尤為重要,下面介紹一些常見的特徵選擇方法。 通常來說,從兩個方面考慮來選擇特徵: 特徵是否發散:如果一個特徵不發散,例如方差接近於0,也就是說樣本在這個特徵上基本上沒有差異,這個

機器學習-特徵選擇

一,介紹 常見的特徵選擇方法有三類:過濾式、包裹式、嵌入式。 (1)過濾式 過濾式中最著名的方法為Relief。其思想是:現在同類中找到樣本最相近的兩點,稱為“猜中近鄰”;再從異類樣本中尋找最近的兩點,稱為“猜錯近鄰”,然後用於計算某個屬性的相關統計量:      

機器學習特徵工程特徵抽取

1.資料集 資料集是特徵抽取的源資料。常用資料集的結構組成:特徵值+目標值。 資料中對於特徵的處理 pandas:一個數據讀取非常方便以及基本的處理格式的工具。 sklearn:對於特徵的處理提供了強大的介面。 2.資料的特徵工程 2

機器學習特徵工程特徵預處理

特徵預處理是什麼? 通過特定的統計方法(數學方法)講資料轉換成演算法要求的資料。 數值型資料: 歸一化 標準化 缺失值 類別型資料:one-hot編碼 時間型別:時間的切分 特徵選擇的意義 在對資料進行異常值、缺失值、資料轉換等處理後,我們

機器學習---特徵選擇

特徵工程是機器學習中不可或缺的一部分,在機器學習領域中佔有非常重要的地位。特徵工程,是指用一系列工程化的方式從原始資料中篩選出更好的資料特徵,以提升模型的訓練效果。業內有一句廣為流傳的話是:資料和特徵決定了機器學習的上限,而模型和演算法是在逼近這個上限而已。由此可見,好的資料

機器學習——特徵工程子集搜尋評價

一、前言 1、特徵:描述目標物件的屬性 2、特徵型別     a) 相關特徵:對於當前學習任務有用的屬性,即與目標物件非常相關的特徵     b) 無關特徵:對於當前學習任務無用的屬性,即與目標物件無關的特徵     c) 冗餘特徵:其包含的資訊可通過其它特徵推演 3、特徵

機器學習特徵選擇最小冗餘最大相關性(mRMR)隨機森林(RF)

特徵選擇之最小冗餘最大相關性(mRMR) 最小冗餘最大相關性(mRMR)是一種濾波式的特徵選擇方法,由Peng et.al提出。主要用途有機器學習,影象識別等。 一種常用的特徵選擇方法是最大化特徵與分類變數之間的相關度,就是選擇與分類變數擁有最高相關度的前k個變數。但是,在特徵選擇中,

特徵選擇——檢驗(使用Python sklearn進行實現)

在看這篇文章之前,如果對卡方檢驗不熟悉,可以先參考:卡方檢驗 Python有包可以直接實現特徵選擇,也就是看自變數對因變數的相關性。今天我們先開看一下如何用卡方檢驗實現特徵選擇。 1. 首先import包和實驗資料: from sklearn.feature_selecti

機器學習中的數學(8)——檢驗原理及應用

卡方檢驗原理及應用 什麼是卡方檢驗 卡方檢驗是一種用途很廣的計數資料的假設檢驗方法。它屬於非引數檢驗的範疇,主要是比較兩個及兩個以上樣本率( 構成比)以及兩個分類變數的關聯性分析。其根本思想就是在於比較理論頻數和實際頻數的吻合程度或擬合優度問題。 無關

檢驗文字特徵選擇

關於卡方檢驗,下面這篇blog介紹的比較詳細,仔細思索之後,對一些點做如下說明,個人理解: 1. 關於假設“詞t與類別c無關”。這個假設應該變更為“詞t不是對分類有區分度的特徵”,(c是一個類別,除了c之外的所有資料組成另一個類別,類似邏輯迴歸多分類的方法)。一個詞的卡方檢驗值高,並不能說明詞一定與t強相關,

檢驗用於特徵選擇

卡方檢驗是特徵選擇中常用的演算法之一。 (1)      卡方分佈(chi-square distribution): 定義:若k個獨立的隨機變數z1,z2,…,zk,並且符合標準正太分佈N(0,1), 則這k個隨機變數的平方和 為服從自由度為k的卡方分佈,記為:x~x2(

特徵選擇-檢驗用於特徵選擇

卡方分佈 若n個相互獨立的隨機變數X1、X2、…、Xn,均服從標準正態分佈(也稱獨立同分佈於標準正態分佈),則這n個隨機變數的平方和Q=∑ni=1X2i構成一個新的隨機變數,其分佈規律稱為卡方分佈或χ2分佈(chi-square distribution),其

Python資料預處理---統計學的t檢驗檢驗以及均值,中位數等

Python資料預處理過程:利用統計學對資料進行檢驗,對連續屬性檢驗正態分佈,針對正態分佈屬性繼續使用t檢驗檢驗方差齊次性,針對非正態分佈使用Mann-Whitney檢驗。針對分類變數進行卡方檢驗(涉及三種卡方的檢驗:Pearson卡方,校準卡方,精準卡方)等。

機器學習+特徵工程vs深度學習—如何選擇

對於資料探勘和處理類的問題,使用一般的機器學習方法,需要提前做大量的特徵工程工作,而且特徵工程的好壞會在很大程度上決定最後效果的優劣(也就是常說的一句話:資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已)。 使用深度學習的話,特徵工程就沒那麼重

特徵選擇選擇法VarianceThreshold

VarianceThreshold #方差選擇法 #使用方差選擇法,先要計算各個特徵的方差,然後根據閾值,選擇方差大於閾值的特徵。使用feature_selection庫的VarianceThreshold類來選擇特徵的程式碼如下: from sklearn.f

機器學習年鑑總結偏差

偏差、方差 演算法在開發樣本集上的錯誤率為 16%,我們可以把這 16%分成兩部分: 1.演算法在訓練樣本集上的錯誤率,本例中為 15%,這通常稱作演算法的偏差 。 2.演算法在開發/測試樣本集上相對訓練樣本集上高出的錯誤率部分, 本例中,演算法那在開發樣本集上

Spark MLlib 特徵抽取、轉化和選擇 -- 特徵選取:選擇

這一部分主要介紹和特徵處理相關的演算法,大體分為以下三類: 1)特徵抽取:從原始資料中抽取特徵 2)特徵轉換:特徵的維度、特徵的轉化、特徵的修改 3)特徵選取:從大規模特徵集中選取一個子集 特徵選擇(feature Selection)指的是在特徵向量中選擇出那些優秀的

機器學習精簡教程七——用scikit-learn做特徵提取

本文轉自:http://www.shareditor.com/blogshow/?blogId=58 現實世界中多數特徵都不是連續變數,比如分類、文字、影象等,為了對非連續變數做特徵表述,需要對這些特徵做數學化表述,因此就用到了特徵提取 (特徵數字化) 分類變數的特徵提