机器学习-特征中的相关性及相关系数、卡方检验、互信息
?
? ? ? ?在機器學習中,對于特征選擇的方法分為三類:過濾式(Filter),包裹式(Wrapper),和嵌入式(Embedding)。過濾式方法是先按照某種規則對數據集進行特征選擇,然后再訓練學習器,特征選擇過程與后續學習器無關,這相當于先用特征選擇過程對初始特征進行“過濾”,再用過濾后的特征來訓練模型。相關系數法、卡方檢驗法和互信息法是進行特征選擇時常用的幾種過濾式方法。
變量關系
協方差
線性相關系數
互信息
卡方檢驗和卡方分布
變量關系
先從變量之間的關系來說明,變量之間的關系可分為兩類:
(1)存在完全確定的關系——稱為函數關系,即類似于Y=2X+3;
(2)不存在完全確定的關系——雖然變量間有著十分密切的關系,但是不能由一個或多各變量值精確地求出另一個變量的值,那么這種關系稱為相關關系,存在相關關系的變量稱為相關變量。相關變量的關系也可分為兩種:
(1)兩個及以上變量間相互影響——平行關系;
(2)一個變量變化受另一個變量的影響——依存關系;
它們對應的分析方法:
相關分析是研究呈平行關系的相關變量之間的關系
回歸分析是研究呈依存關系的相關變量之間的關系
在這里我們主要研究變量與變量之間的相關分析,如下圖,比如要買房的人越多,房價就越高,兩者的關系稱為正相關;從出生率和城鎮化率我們可以看出是負相關。
類似上圖中的這種相關性可以通過協方差和相關系數來具體表示和計算。
?
協方差
在概率論中,兩個隨機變量 X 與 Y 之間相互關系,大致有下列3種情況:??
當 X, Y 的聯合分布像左圖那樣時,大致上有: X 越大 Y 也越大, X 越小 Y 也越小,這種情況,我們稱為“正相關”。
當X, Y 的聯合分布像中間圖那樣時,大致上有:X 越大Y 反而越小,X 越小 Y 反而越大,這種情況,我們稱為“負相關”。
當X, Y 的聯合分布像右圖那樣時,既不是X 越大Y 也越大,也不是 X 越大 Y 反而越小,這種情況我們稱為“不相關”。
同樣將這3種相關情況,用一個簡單的數字表達出來呢?,令 EX、EY 分別是 X 和 Y 的期望值。什么是期望呢?在這里我們可以把它看成是平均值,即 EX 是變量 X 的平均值,EY 是變量 Y 的平均值
在圖中的區域(1)中,有 X>EX ,Y-EY>0 ,所以(X-EX)(Y-EY)>0;
在圖中的區域(2)中,有 X<EX ,Y-EY>0 ,所以(X-EX)(Y-EY)<0;
在圖中的區域(3)中,有 X<EX ,Y-EY<0 ,所以(X-EX)(Y-EY)>0;
在圖中的區域(4)中,有 X>EX ,Y-EY<0 ,所以(X-EX)(Y-EY)<0。
當X 與Y 正相關時,分布大部分在區域(1)和(3)中,小部分在區域(2)和(4)中,所以平均來說,有E(X-EX)(Y-EY)>0 。
當 X與 Y負相關時,分布大部分在區域(2)和(4)中,小部分在區域(1)和(3)中,所以平均來說,有(X-EX)(Y-EY)<0。
當 X與 Y不相關時,在區域(1)和(3)中的分布,與在區域(2)和(4)中的分布一樣多,平均來說,有(X-EX)(Y-EY)=0。
所以,我們可以定義一個表示X, Y 相互關系的數字特征,也就是協方差,即:
值得一提的是,E?代表求期望值,也可以用平均值來計算協方差:
當 cov(X, Y)>0時,表明X與Y 正相關;
當 cov(X, Y)<0時,表明X與Y負相關;
當 cov(X, Y)=0時,表明X與Y不相關。
協方差表示的是兩個變量的總體的誤差,這與只表示一個變量誤差的方差不同。 如果兩個變量的變化趨勢一致,也就是說如果其中一個大于自身的期望值,另外一個也大于自身的期望值,那么兩個變量之間的協方差就是正值。 如果兩個變量的變化趨勢相反,即其中一個大于自身的期望值,另外一個卻小于自身的期望值,那么兩個變量之間的協方差就是負值。這就是協方差的意義。
?
線性相關系數
? ? ? ?我們已經知道了什么是協方差以及協方差公式是怎么來的,如果知道兩個變量 X 與 Y 的協方差與零的關系,我們就能推斷出 X 與 Y 是正相關、負相關還是不相關。那么有一個問題:協方差數值大小是否代表了相關程度呢?也就是說如果協方差為 100 是否一定比協方差為 10 的正相關性強呢?
假如X1、Y1 和 X2、Y2 分別聯合分布圖,如下所示:
顯然,從圖中可以看出,X1、Y1 和 X2、Y2 都呈正相關,而且 X1 與 Y1 正相關的程度明顯比 X2 與 Y2 更大一些。接下來,我們計算兩幅圖的協方差看看是不是這樣。
Cov(X1,Y1) = 37.5526
Cov(X2,Y2) = 3730.26
從兩個協方差的值中,我們可以看出X2 與 Y2 的協方差竟然比 X1 與 Y1 的協方差還大100 倍。看來并不是協方差越大,正相關程度越高。這到底是為什么呢?其實,出現這種情況的原因是兩種情況數值變化的幅值不同(或者量綱不同)。計算協方差的時候我們并沒有把不同變量幅值差異性考慮進來,在比較協方差的時候也就沒有一個統一的量綱標準。所以,為了消除這一影響,為了準確得到變量之間的相似程度,我們需要把協方差除以各自變量的標準差。這樣就得到了相關系數的表達式:
即為:
為什么除以各自變量的標準差就能消除幅值影響呢?這是因為標準差本身反映了變量的幅值變化程度,除以標準差正好能起到抵消的作用,讓協方差標準化。這樣,相關系數的范圍就被歸一化到 [-1,1] 之間了。下面,我們就來分別計算上面這個例子中 X1、Y1 和 X2、Y2 的相關系數。
ρ(X1,Y1) = 0.9939
ρ(X2,Y2) = 0.9180
而線性相關分析,就是用線性相關系數來衡量兩變量的相關關系和密切程度,線性相關系數一般通過皮爾遜相關系數(Pearson correlation coefficient)來解釋相關性的強弱,公式即為:
皮爾森相關系數(Pearson correlation coefficient)也稱皮爾森積矩相關系數(Pearson product-moment correlation coefficient) ,是一種線性相關系數,皮爾森相關系數是用來反映兩個變量線性相關程度的統計量。考察兩個變量的相關關系,首先得看清楚兩個變量都是什么類型的,統計分析中常見的變量類型有連續型數值變量,無序分類變量、有序分類變量:
連續型數值變量:如銷售額、氣溫、工資收入、考試成績;
無序分類變量:如性別男和女,血型種類;
有序分類變量:如學歷水平小學、初中、高中、大學、研究生;
適用范圍
當兩個變量的標準差都不為零時,相關系數才有定義,皮爾遜相關系數適用于:
(1)兩個變量之間是線性關系,都是連續數據。
(2)兩個變量的總體是正態分布,或接近正態的單峰分布。
(3)兩個變量的觀測值是成對的,每對觀測值之間相互獨立。
相關系數用r表示,其中n為樣本量,分別為兩個變量的觀測值和均值,r描述的是兩個變量間線性相關強弱的程度,r的絕對值越大表明相關性越強,系數的正負號代表正相關還是負相關。如果是0,代表沒有相關。數值越接近1,相關性越強。
公式如下:
如下面每幅圖上方的相關系數Cor(X1, X2)是計算出來的皮爾遜r值,從圖中可以看出不同程度的相關性。
上圖中,前三個具有高相關系數,我們可以選擇把X1或者X2扔掉,因為他們似乎傳遞了相似的信息。
然而在最后一種情況,我們應該把兩個特征都保留。
基于相關性的特征選擇方法的一個最大的缺點就是,它只檢測出線性關系(可以用一條直線擬合的關系),下圖形象的展示出了相關性的缺陷:
這里的相關系數只是用來衡量兩個變量線性相關程度的指標。也就是說,你必須先確認這兩個變量是線性相關的,然后這個相關系數才能告訴你他倆相關程度如何,反之不成立。比如你先算出相關系數=0.9,就下結論說兩個變量線性相關是不對的,甚至說兩個變量相關(有某種更復雜的關系)也是不對的,如下圖所示:
如圖(右上)所示,非線性相關也會導致線性相關系數很大,并且如果兩個變量的相關系數很大(0.816),那能不能說兩者相關呢? 答案還是不能,為什么? 因為如圖(右下)所示,很可能是一個離群點(outlier)導致了相關系數變得很大。另外,如果算出來相關系數=0,下結論說兩個變量不是線性相關是ok的,但說他們完全不相關就得小心了,很有可能不對,如下圖所示:
上圖的相關系數計算結果為0,但你能說冰激凌的銷量和溫度不相關嗎??所以, Pearson Correlation Coefficient?= 0只能說不是線性相關,但說不定會有更復雜的相關關系(非線性相關)。如果兩個變量本身就是線性的關系,那么皮爾遜相關系數沒問題,絕對值大的就是相關性強,小的就是相關性弱。但在你不知道這兩個變量是什么關系的情況下,即使算出皮爾遜相關系數,發現很大,也不能說明那兩個變量線性相關,甚至不能說他們相關,你一定要畫出圖來看才行,這就是為什么我們說眼見為實和數據可視化的重要性。
?
互信息
? ? ? ?對于非線性關系,互信息就顯得比較重要了,在進行特征選擇時,我們不該把焦點放在數據關系的類型(線性關系)上,而是要考慮在已經給定另一個特征的情況下一個特征可以提供多少信息量。互信息會通過計算兩個特征所共有的信息,把上述推理工程形式化表達出來。與相關性不同,它依賴的不是數據序列,而是數據的分布。
互信息的一個較好的性質在于,跟相關性不同,它并不只關注線性關系。如下圖所示:
? ? ? ?互信息的概念來自于信息熵,相信大家在很多機器學習,數據挖掘的數據都有看到,互信息廣泛使用在特征選擇、機器學習數模型中。在概率論和信息論中,互信息是兩個隨機變量的互信息(Mutual Information,簡稱MI)或轉移信息是變量間相互依賴性的量度。通俗的來講:互信息是一個隨機變量包含另外一個隨機變量的信息量,或者說如果已知一個變量,另外一個變量減少的信息量。顧名思義,互信息就是兩件事為彼此提供的信息。當我知道了事件 A 之后,事件 B 的確定性增加多少,也就是讓事件 B 減少多少的信息量。當中我們說一件事的信息量(或熵)就是你想知道這件事的發生需要多少信息。那么為什么相關的兩件事會導致信息量的變化呢?舉一個非常直觀的例子,我們在做一個游戲,拋兩枚硬幣,然后猜兩枚硬幣分別是字還是花。每個人都會默認兩枚硬幣拋出字或花的概率相同,是1/2。猜出最終結果,我們需要的信息量是:
? ? ? ? 也就是如果你先問我第一枚硬幣是字嗎,我回答是或不是,然后你再問我第二枚硬幣是字嗎,我再回答一次,你就知道了兩枚硬幣的結果,信息量為二比特。那假如現在我告訴你第二枚硬幣是我特制的,兩面都是字呢?明顯拋一次硬幣得到的結果的信息量發生了一些變化,之前你需要問我兩個問題,而現在只需要問一個就可以了,因為你已經知道第二枚硬幣的結果一定是字。
? ? ? ?由此就可以看出,當一個事件為另一個事件減少越多不確定性,這兩個事件的相關性就越強。如果是兩個獨立事件,它們之間的相關性就是 0(后面也可以用公式驗證),完全不相關。 例如知道第三枚硬幣拋出字的概率并不會對你猜結果的兩枚硬幣的信息量造成任何影響。
? ? ? ? 用概率去解釋也是一樣的,我們知道熵也可以代表事件的隨機程度,事件發生概率越小,所攜帶的信息量就越大。而兩個事件 A,B,有 p(A|B)≥p(A),當 A,B 獨立時有 p(A|B)=p(A)。由此也可以看出兩件事的相關性。
到了這兒,其實我們已經把互信息定義好了。
如果是連續隨機變量就把求和替換為積分
另一種定義方法是:
其中上圖中的 H(X),H(Y) 表示事件X,Y的信息,
H(X|Y)被稱為條件熵:表示在知道事件X的情況下,此時再知道事件Y可以提供給我們的信息,
I(X;Y)被稱為互信息:表示事件X和Y共同提供的信息;也可以理解為知道事件X可以對事件Y提供多少信息,反之亦然;
H(X;Y)被稱為聯合熵:表示事件X和Y之后可以提供給我們的信息,其中
注意到這組關系和并集、差集和交集的關系類似,用維恩圖表示:
于是,在互信息定義的基礎上使用琴生不等式,我們可以證明?I(X;Y) 是非負的,因此H(X)>=H(X|Y),這里我們給出 I(X;Y) = H(Y) - H(Y|X) 的詳細推導:
在機器學習中,理想情況下,當互信息最大,可以認為從數據集中擬合出來的隨機變量的概率分布與真實分布相同。
需要注意的是,互信息也是只能處理離散的特征。如果連續的情況,需要先離散化,計算每一對特征之間的歸一互信息量。對于具有較高互信息量的特征對,我們會把其中一個特征扔掉。在進行回歸的時候,我們可以把互信息量非常低的特征扔掉。對于較小的特征集合這種方式的效果或許還可以。但是,在某種程度上,這個過程會非常緩慢,計算量會以平方級別增長,因為我們要計算的是每對特征之間的互信息量。
?
卡方檢驗和卡方分布
卡方檢驗是一種用途很廣的計數資料的假設檢驗方法。它屬于非參數檢驗的范疇,主要是比較兩個及兩個以上樣本率( 構成比)以及兩個分類變量的關聯性分析。其根本思想就是在于比較理論頻數和實際頻數的吻合程度或擬合優度問題。它在分類資料統計推斷中的應用,包括:兩個率或兩個構成比比較的卡方檢驗;多個率或多個構成比比較的卡方檢驗以及分類資料的相關分析等。
以運營為例:
- 卡方檢驗可以檢驗男性或者女性對線上買生鮮食品有沒有區別;
- 不同城市級別的消費者對買SUV車有沒有什么區別;
如果有顯著區別的話,我們會考慮把這些變量放到模型或者分析里去。
?
例1:四格卡方檢驗
以下為一個典型的四格卡方檢驗,我們想知道喝牛奶對感冒發病率有沒有影響,通過簡單的統計我們得出喝牛奶組和不喝牛奶組的感冒率為30.94%和25.00%,兩者的差別可能是抽樣誤差導致,也有可能是牛奶對感冒率真的有影響。
為了確定真實原因,我們先假設喝牛奶對感冒發病率是沒有影響的,即喝牛奶和感冒時獨立無關的,所以我們可以得出感冒的發病率實際是(43+28)/(43+28+96+84)= 28.29%
基于這個假設,假設的結果為:
計算出來后,假設的結果即下表:
原來實際的結果為:
如果喝牛奶和感冒真的是獨立無關的,那么四格表里的理論值和實際值差別應該會很小。
差別的大小可以使用卡方檢驗來表示,卡方檢驗的計算公式為:
其中,A為實際值,T為理論值。X^2用于衡量實際值與理論值的差異程度(也就是卡方檢驗的核心思想),包含了以下兩個信息:
(1)實際值與理論值偏差的絕對大小(由于平方的存在,差異是被放大的)
(2)差異程度與理論值的相對大小
X^2分布有兩個主要用途為用于檢驗擬合優度,也就是可以檢驗一組數據與指定曲線的擬合程度,或檢驗某組觀察值是否符合某種分布,檢驗兩個變量的獨立性,通過這個方法檢查兩個變量之間是否存在某種關聯
回到上面的例子,實際計算的結果為:
上一步我們得到了卡方的值,但是如何通過卡方的值來判斷喝牛奶和感冒是否真的是獨立無關的?也就是說,怎么知道無關性假設是否可靠?答案是,通過查詢卡方分布的臨界值表。我們需要查詢卡紙分布的臨界值,將計算的值與臨界值比較。
查詢臨界值就需要知道自由度,如何計算自由度?只要一種可能的話,自由度是0,有兩種可能,自由度是1。如果拋不是一個硬幣,而是一顆臺球,上面數字只有一種可能,此時自由度是0。一個藥片,吃下去的有三種結果:病治愈,病惡化,病不變,如果吃下去只有治愈這個可能,自由度是0,如果有三種可能,自由度是2。對于本例的表格而言,行和列的自由度都有自己的自由度,分別是行數和列數減一。又考慮到行數和列數的乘積是表中數值的總數,因此全表對應的自由度是行和列自由度的乘積。本例的自由度由此計算出來是1。
注:卡方檢驗的自由度:
1)如果是獨立性檢驗,那么自由度就等于(a-1)*(b-1),a b表示這兩個檢驗條件的對應的分類數。
比如《問卷與量表數據分析》課程里面的性別和是否購買之間的獨立性檢驗,自由度就等于(2-1)*(2-1)=1。這里可以理解為有兩個約束條件,即性別和是否購買這兩個變量,這兩個變量約束的方向都是自己那一方面的,所以要在自己的類別數目后面減去1,而不是總的類別數減去總的約束條件數目。
2)適合性檢驗,類別數減去1。此處相當于約束條件只有一個
自由度V=(行數-1)*(列數-1);
對四格表,自由度V = 1,查詢可得 臨界值為3.84
對V = 1,喝牛奶和感冒95%概率不相關的卡方分布的臨界概率是:3.84,顯然1.077<3.84,沒有達到卡方分布的臨界值,所以喝牛奶和感冒是獨立不相關的。
?
例2 投硬幣
根據投硬幣觀察到的正面,反面次數,判斷這個硬幣是均衡的還是不均衡。
現在有一個正常的硬幣,我給你投50次,最好的情況肯定是25個正面,25個反面,如果我不知道這個硬幣是不是均衡的,我想用正面,反面的頻次來判斷,我投了50次,其中28個正面,22個反面。我怎么用卡方檢驗來證明這個硬幣是均衡的還是不均衡的呢?
我們拿到這3個信息,去查表,因為0.72小于查表得到的3.841,所以我們得出這個硬幣是均衡的結論。
?
例3 投篩子
有一個篩子,我不知道它是不是均衡的,于是我打算投36次看一下。
按照投硬幣的方式,我先要畫出一個表格,然后計算出3個數值,
帶著這3個值,我們去查表,于是我們得出這個現象不能判定他是個均衡的篩子。
?
例4 業務場景
電商中消費者的性別和購買生鮮,我們要觀察性別和在線上買不買生鮮食品有沒有關系,現實生活中,女性通常去菜市場買菜的比較多,那么在線上是不是也這樣。
我們得出觀察到數據,并且形成表格后,我們需要計算理論的數據,在上面的例子我們發現,我們發現有66%的人不在線上買生鮮(599除以907),34%的人會在線上買。 那如果,男的有733個人,女的有174個人,根據這些比例,我們可以得出的理論值是什么呢?
?
根據理論和實際值,我們可以算出卡方值,自由度,并且結合我們定義的置信度,查表得到性別和線上買生鮮是顯著相關的。
所以我們如果下次看到一個女性來訪問我們的網站,多投放一些廣告,說不定會轉化哦。
?
本文主要介紹了線性相關系數、卡方檢驗、互信息三個概念。
1. 線性相關系數,基于兩個變量在線性的基礎上,主要用來衡量兩個變量的線性相關的程度,其它類型的相關性pearson相 關 系 數就無法衡量了。
2. 卡方檢驗基于兩個樣本會遵守特定的理論分配,用來檢驗兩個樣本or變量是否獨立。計算也相對比較簡單。能做大小比較,但是如果判斷自變量與因變量是否相關,需要查卡方臨界表。
3. 互信息基于信息熵理論,可以作為變量間相互依賴性的量度,涉及log計算,計算稍微復雜些。后面兩個方法都只能計算離散特征,如果是連續特征,需要先將特征離散化之后再進行計算。
4. 特征選擇時:卡方檢驗,偏向于選擇出現次數較少的特征。因為是期望-觀測值的平方再除以期望,互信息不會出現這個情況。因為互信息有乘以p(x,y)p(x,y)。從大多數實驗來看,卡方跟互信息效果差不多,看具體的數據集而定。
?
?
?
參考鏈接:https://zhuanlan.zhihu.com/p/94074441
參考鏈接:https://www.jianshu.com/p/26004ad8872e
參考鏈接:https://www.zhihu.com/question/304499706/answer/544609335
參考鏈接:https://my.oschina.net/peterlie/blog/546761/print
參考鏈接:https://zhuanlan.zhihu.com/p/36441826
參考鏈接:https://blog.csdn.net/LiuXF93/article/details/88956643
參考鏈接:https://www.matongxue.com/madocs/568.html
參考鏈接:https://www.zhihu.com/question/20852004
參考鏈接:https://blog.csdn.net/shingle_/article/details/51725054
參考鏈接:https://www.jianshu.com/p/807b2c2bfd9b
?
總結
以上是生活随笔為你收集整理的机器学习-特征中的相关性及相关系数、卡方检验、互信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模型开发-GBDT决策树模型开发代码
- 下一篇: 机器学习-特征工程中的特征选择