特徵選擇的兩種方法

2021-08-23 12:40:45 字數 2199 閱讀 3739

通過使用相關性,我們很容易看到特徵之間的線性關係。這種關係可以用一條直線擬合。

下面每幅圖上方的相關係數cor(x1, x2)是計算出來的皮爾遜r值,從圖中可以看出不同程度的相關性。 

p值越高,我們越不能信任這個相關係數

上圖中,前三個具有高相關係數,我們可以選擇把x1或者x2扔掉,因為他們似乎傳遞了相似的資訊。 

然而在最後一種情況,我們應該把兩個特徵都保留。 

基於相關性的特徵選擇方法的乙個最大的缺點就是,它只檢測出線性關係(可以用一條直線擬合的關係)。下圖形象的展示出了相關性的缺陷: 

對於非線性關係,互資訊出馬了。

ps:例如y=ax+b 這樣的  x和y就是線性相關的 那麼相關係數就是1*sign(a),但是皮爾森係數,只是用來衡量線性相關的程度的。對於非線性的相關性就無能為力了。就得看下面的互資訊了。

在進行特徵選擇時,我們不該把焦點放在資料關係的型別(線性關係)上,而是要考慮在已經給定另乙個特徵的情況下乙個特徵可以提供多少資訊量。 

互資訊會通過計算兩個特徵所共有的資訊,把上述推理工程形式化表達出來。與相關性不同,它依賴的不是資料序列,而是資料的分布

先看一下夏農(claude shannon)的資訊熵(entropy h(x) ): 

在公平硬幣情形下,我們有兩種情況:令x0代表硬幣正面,x1代表硬幣反面,p(x0) = p(x1) = 0.5,因此我們得到下式:

現在,如果這個硬幣不是公平的,旋轉後有60%的可能性會出現硬幣的正面:

*我們可以看到這種情形有較少的不確定性。不管正面出現的概率為0%還是100%,不確定性都將會遠離我們在0.5時時所得到的熵,到達極端的0值,如下圖所示:

這樣我們就可以得到乙個特徵使另乙個特徵的不確定性減少的程度。

互資訊量

歸一化的互資訊量

互資訊的乙個較好的性質在於,跟相關性不同,它並不只關注線性關係。如下圖所示: 

我們需要計算每一對特徵之間的歸一互資訊量。對於具有較高互資訊量的特徵對,我們會把其中乙個特徵扔掉。在進行回歸的時候,我們可以把互資訊量非常低的特徵扔掉。

對於較小的特徵集合這種方式的效果或許還可以。但是,在某種程度上,這個過程會非常緩慢,計算量會以平方級別增長,因為我們要計算的是每對特徵之間的互資訊量。

這個圖很能說明互資訊,資訊增益,和熵的關係。  我們知道h(x|y)表示的是在知道y的情況下x的混亂程度,而i(x,y) 是二者的交集,很容易知道交集越大就越相關。

特別說明,上面的h(x,y)表示的是h(x)和h(y)的並集

1. 內嵌於機器學習模型中的:

決策樹。——有乙個甚至於其核心的特徵選擇機制。 

2. 一些正則化方法:

對模型複雜性進行懲罰,從而使學習過程朝效果較好而且仍然「簡單」的模型發展。 

l1正則化。——把效用不大的特徵的重要性降低為0,然後把他們扔掉進行特徵選擇。

參考:

LCA兩種方法

lca least common ancestors 即最近公共祖先,是指在有根樹中,找出某兩個結點u和v最近的公共祖先。模板題 anc i j 表示第i個點的2 j的祖先的標號 整個過程就是兩個點往上跳到同一深度,再一起往上跳找到lca include include using namespac...

post get 兩種方法

a.定義乙個get函式 get url,headers none defget url,headers none return urlrequests url,headers headers 內部可以呼叫urlrequests 如果不寫headers headers會被預設為none b.定義乙個p...

popup的兩種方法

1,popup var pop function window.onload function aaa function closediv 2,div var divtop,divleft,divwidth,divheight,docheight,docwidth,objtimer,i 0 var ...