1. 程式人生 > >機器學習-淺談特徵選擇

機器學習-淺談特徵選擇

很多時候我們需要做特徵選擇,一方面是因為我們希望模型能夠使用好的特徵擬合數據,另一方面多餘的特徵會導致模型複雜度高,降低模型的泛化能力。最常見的例子就是,文字分類,我們不可能把所有的詞都作為特徵,而是希望選一些“好的”詞作為特徵進入到模型。

下面我們簡單的談一談常用的幾種特徵選擇方法。

1、Frequency

如果在文字中,那麼就是詞頻了。去掉停用詞之後,選擇top frequency的詞作為特徵,顯然是最簡單的做法。這個方法的好處就是,因為frequency高,樣本中的該列特徵就不會稀疏,也許詞與詞之間組合起來就能形成區分力。

有一個簡單的改進,拿文字分類來說,我們可以在每個類下面選擇一些高頻的詞,然後把每個類的高頻詞並起來作為特徵。就像圖片中所描述的那樣,不同類別的高頻詞是不一樣的,這樣的詞作為特徵,區分能力不就有所提高了嗎?

但是簡單的使用Frequency有個問題,因為高頻,也就導致詞區分能力不強。比如說“很好”“不好”這樣的詞可能詞頻就很高,但是對於類別的區分就不是很強。但是總歸有一些tricky的方法能改進,比如說只取詞頻排在中間的詞,或者我只取高頻的實體名詞。但是都有點“拍腦袋”,不夠“智慧”。

2、TF/IDF

相比很多同學在資訊檢索中一定聽過TF/IDF,通常來說,我們需要計算query和doc的相似度,那麼就需要好的方法計算特徵詞的權重(當然你也可以簡單的使用01表示特徵詞是否出現)。比如說我們希望對於文件中的高頻詞,我們給予更高的權重,這就是TF的作用了。

但是,有的詞在很多文件中都出現,我們希望對這樣的詞的權重進行衰減;而對某些具有區分度的詞,我們希望有更好的權重,那麼這類詞能更好的反映文件的特性。這就是IDF的作用了,IDF認為,在少數文件中出現的詞,區分能力更強。

於是常用的TF/IDF權重表達公式就是:(tf/n)/log(df+1),其中tf表示詞在該篇文件中頻率,n表示該篇文件詞總數,df表示該詞在文件集的文件頻率。

TF/IDF的動機是好的,但是是否“完美”,這個有待商榷。比如說某詞在同一類別下df就是很高,相反這樣的詞比一些低df的詞權重更低,這顯然不是好事。

3、Infromation Gain

上面提到的兩個方法都是非監督的,沒有用到樣本的label資訊。Information Gain是說選擇一個特徵,對於當前這個資料集分類的效果有多大的提升。資訊增益的本質計算的是,使用該特徵,使得資料集不確定性減少的多少,換言之就是該特徵帶來了多少的資訊量。

如果說一個特徵有01兩種取值,那麼IG的計算如下:

IG = Entropy - (p(f=0)Entropy(f=0) + p(f=1)Entropy(f=1))

公式的含義其實很簡單,資料集的資訊熵減去使用該特徵之後的資訊熵,顯然這就是使用該特徵獲取到的資訊增益。

其實這個方法就是我們熟知的決策樹分類器中,選擇特徵作為節點的方法。

4、Mutual Information

互資訊,描述的是兩個變數之間的依賴程度,互資訊越大,關聯性越強。計算公式很簡潔:

mi(a, b) = p(a, b) / (p(a) * p(b)) = p(a|b) / p(a) = p(b|a) / p(b)

其描述的就是某個變數在另一個變量出現的情況下的條件概率,佔該變量出現情況的比例。這個比例越大,顯然這兩個變數越相關。

如果其中一個變數是分類的結果,那麼其表示的就是一個特徵和分類結果的相關程度。但是該方法有個弊端就是,傾向於選出低頻的變數,因為越是低頻的特徵,分子和分母接近的可能性越大,所以導致這個方法選出的特徵比較低頻。

5、Pearson Coefficient

也就是我們常說的相關性係數,計算方法如下:

總體相關係數:


基於樣本對協方差和標準差進行估計,得到計算方法:

一種等價的表達方式為:

從最後一個式子可以看到,Pearson係數,其實計算的是標準化的樣本的內積。如果r=1,那麼表示兩個變數線性正相關;如果為-1則是表示線性負相關。

對於文字分類來說,如果兩個變數分別表示類別和詞,那麼當兩者的相關性係數為正是,很大程度上說明該詞和該類別是正相關的,該詞能較好的確定是該類別;如果兩者的相關性係數為負,則從某種程度上說明該詞能判別不是該類。通常來說我們會選擇和類top 相關係數的詞作為特徵。

相關推薦

機器學習特徵選擇

很多時候我們需要做特徵選擇,一方面是因為我們希望模型能夠使用好的特徵擬合數據,另一方面多餘的特徵會導致模型複雜度高,降低模型的泛化能力。最常見的例子就是,文字分類,我們不可能把所有的詞都作為特徵,而是希望選一些“好的”詞作為特徵進入到模型。 下面我們簡單的談一談常

機器學習4---神經網路

1. 神經元模型     神經網路是一個多學科交叉的領域,比較常見的定義是:“”神經網路是由具有適應性的簡單單元組成的廣泛並行互連的網路,它的組織能模擬生物神經系統對真實世界物體做出的互動反應“”。 神經網路中最基本的成分是神經元模型,典型的為m-p神經元模型,從生物

機器學習筆記(十一)特徵選擇和稀疏學習

建議檢視原貼  轉載只是為了方便複習,查詢 11.特徵選擇和稀疏學習 11.1子集搜尋與評價 物件都有很多屬性來描述,屬性也稱為特徵(feature),用於刻畫物件的某一個特性。對一個學習任務而言,有些屬性是關鍵有用的,而有些屬性則可能不必要納入訓練資料。對當前學習任務

機器學習之過濾式特徵選擇

機器學習之過濾式特徵選擇 # -*- coding: utf-8 -*- """ Created on Sat Dec 8 16:58:09 2018 @author: muli """ from sklearn.feature_selection import

Java學習筆記——數據結構與Java集合框架(第一篇、List)

技術分享 emp 鏈表 adc 下標 -c nod nal integer 橫看成嶺側成峰,遠近高低各不同。不識廬山真面目,只緣身在此山中。               ——蘇軾 這一塊兒學的是雲裏霧裏,咱們先從簡單的入手。逐漸的撥開迷霧見太陽。本次先做List集合的三

機器學習:模型評估和選擇

val 上一個 bootstrap 自助法 break all 誤差 rec 數據集 2.1 經驗誤差與擬合 精度(accuracy)和錯誤率(error rate):精度=1-錯誤率 訓練誤差(training error)或經驗誤差(empirical error) 泛

養成良好的學習習慣-學習方法(2)

成功最有效的方法是想有經驗的人學習成功最有效的方法是想有經驗的人學習!借鑒成功的人的態度和習慣。你可以讓你在任何想達到的目標表提高成功率!1、學習不專心。上課期間少幹別的。上課保持最大化的輸入,討論自己把知識最大化的輸出。課下把知識最大化會化的輸出。2、分組學習,找1-2個同伴,共同學習。今天上午學一個點,共

養成良好的學習習慣-學習方法(1)

養成 學習習慣 良好的 淺談學習方法(1) 1.老男孩教育要培訓什麽? 思想技術 知識 2.養成良好的學習習慣和聽課習慣 1)帶一支筆和本,記錄老師講解的內容 2 總結時 ,記錄關鍵的信息,抓重點 3) 聽課習慣:調動所有感官學習 眼睛看、勤動手(

幾種機器學習平臺的對比和選擇

存儲 檢查 基於 大型 容易 和平 計算機 caff 手寫識別 前言 選擇什麽樣的深度學習框架一直是開發者非常關心的一個話題,而且深度學習框架之間的「戰爭」也越來越激烈。隨著近幾年AI的火熱,越來越多的出現有關各個機器學習框架的對比文章,且隨著 Pytho

高等數學和數學分析教材推薦及其學習方法

高等數學和數學分析教材推薦及其學習方法淺談 不管哪個科目的教材選擇,一旦決定要學我總試圖找一本較好的來,次一點的我也懶得花時間精力投入在上面——這就是我的完美主義情節!當我進入大學想自學高等數學的時候,我也同樣試圖去找本較好的教材。 剛找的時候,網上很多人推薦同濟大學的那本高等數學書,說是好多學校都在用,

CSS3選擇

CSS3選擇器再CSS2.1選擇器的基礎上增加了屬性選擇器、偽類選擇器、過濾選擇器,減少了對HTML類名或ID名的依賴,避免了對HTML結構的干擾,讓編寫程式碼更加輕鬆。 1,基本選擇器 (1)標籤選擇器(型別選擇器)         &nbs

AI工程師成長之路--機器學習之模型評估與選擇

開篇簡介:本文是博主結合前輩經驗和自身的認識寫的博文,有不少博主自身理解還不太透徹,因為考慮到文章的完整性,有些部分需要引用的前輩的一些方法,望諒解。由於文章專業化內容過多,會影響閱讀體驗,在這裡建議大家難以理解的部分先不要去深究,等待需要用到的時候再去深入研究一下。本博

機器學習:模型估計於選擇(二)

交叉驗證t檢驗是在一個數據集上比較兩個演算法的效能,但有時我們需要在一組資料集上對多個演算法進行比較,可以使用基於演算法排序的Friendman檢驗。 我們假設D1_{1}1​、D2_{2}2​、D3_{3}3​、D4_{4}4​四個資料集對演算法A、B、C進行比較,首先使用留出發或交叉驗證法得到每個演算法在

機器學習:sklearn演算法引數選擇--網格搜尋

機器學習中很多演算法的引數選擇是個比較繁瑣的問題,人工調參比較費時,好在sklearn給我們提供了網格搜尋引數的方法,其實就是類似暴力破解,先設定一些引數的取值,然後通過gridsearch,去尋找這些引數中表現的最好的引數。 我們依舊使用上一節的泰坦尼克號生存者預測資料集。同樣使用隨機森林演算

學習經驗——論做學習筆記的重要性

 在學習robodk的時候覺得要抓緊時間學習這個軟體,筆記做得比較少,但是在做工作總結的時候才發現不知從何開始寫起,只能記住最近幾章的內容。 總而言之,哪怕是大概做個思維導圖,簡介一下這章講了什麼也好,一些關鍵的內容更是要記錄一下,一時多花一些時間,對後來卻是有利的。

CSS選擇器中的空格

HTML文件是一棵樹的結構,各元素以一種層次結構為基礎構成‘樹’的檢視。文件樹中的每個元素,要麼是另一個元素的父元素,要麼是另一個元素的子元素,這樣,各元素之間就形成了‘父子關係’。基於這樣的關係模型,CSS定義了後代選擇器(descendant selector)也稱為上

學習筆記-神經網路對信用評級的應用

淺識神經網路在信用評級上的應用 第一部分:常用風控分類模型 第二部分:一般企業對信用評級的要求及醫療行業信用評級的假想 一、一般企業 1.管理風險:金融機構在為中小企業提供貸款時將面臨很大的

機器學習西瓜書】七、樸素貝葉斯分類器

推薦閱讀:拉普拉斯修正 7.3樸素貝葉斯分類器 關鍵詞: 樸素貝葉斯;拉普拉斯修正 上一小節我們知道貝葉斯分類器的分類依據是這公式:P(c∣x)=P(x,c)P(x)=P(c)⋅P(c∣x)P(x) ,對於每個樣本而言,分母P(x)=∑mi=1P(

用scikit-learn掌握機器學習(三)特徵提取和預處理

從分類資料中提取特徵 from sklearn.feature_extraction import DictVectorizer onehot_encoder = DictVectorizer() #字典轉onehot用DictVectorizer() i

JVM學習之:方法呼叫以及Override/Overload的原理

提到方法呼叫,我想大多數人的第一反應就是執行一個方法唄,其實在虛擬機器的眼裡方法呼叫只是確定他要呼叫哪個方法而已,和方法的執行還是有比較大的區別的.任何一個層序的執行都離不開方法的呼叫以及方法的執行,但是在JVM學習之:虛擬機器中的執行時棧幀總結(二)提到過,在Class檔