從給定的特徵集合中選擇出相關特徵子集的過程,稱為「特徵選擇」。特徵選擇是從特徵集t=中選擇乙個真子集t』=,滿足(s≪s』)。其中,s為原始特徵集的大小,s^』為選擇後的特徵集大小。選擇的準則是經特徵選擇後能有效提高文字準確率。選擇沒有改變原始特徵空間的性質,只是從原始特徵空間中選擇了一部分重要的特徵,組成乙個新的低維空間。文字特徵選擇能夠有效降低文字表示的維度。
(1)能夠解決屬性過多帶來的維數災難問題;
(2)去除不相關特徵能夠顯著降低學習問題的難度。
(1)確保不丟失重要特徵;
(2)特徵選擇中的「無關特徵」是指與當前學習任務無關。同一給定資料集,若學習任務不同,相關特徵很可能不同。
(3)若某個冗餘特徵恰好對應了完成學習任務所需的「中間概念」(如已知底面長和寬,要求立方體體積,此時「底面積」這個特徵是冗餘的),則該冗餘特徵是有益的。
特徵選擇的可行方法是先產生乙個「候選子集」,評價出它的好壞,然後基於評價結果產生下乙個候選子集,再對其進行評價等等。這裡涉及到兩個關鍵環節:如何根據評價結果獲取下乙個候選特徵子集?如何評價候選特徵子集的好壞?
(1)子集搜尋(subset search):給定特徵集合,我們可將每個特徵看作乙個候選子集,對這d個候選單特徵子集進行評價,假定最優,則將作為第一輪的候選集;然後,在上一輪的選定集中加入乙個特徵,構成包含兩個特徵的候選子集,假定在d-1個候選兩特徵子集中最優,且優於,則將作為本輪的候選集;以此類推,假定在第k+1輪時,最優的候選(k+1)特徵不如上一輪的選定集,則停止生成候選子集,並將上一輪選定的k特徵集合作為特徵選擇結果。
(2)子集評價(subset evaluation):給定資料集d,假定d中第i類樣本所佔的比例為p_i (i=1,2,…,|y|).假定樣本屬性為離散型,對屬性子集a,假定根據其取值將d分成了v個子集,每個子集中的樣本在a上的取值相同,於是可以計算出屬性子集a的資訊增益為:
gain(a)=ent(d)- ∑_(v=1)^v▒〖|d^v |/|d| ent(d^v)〗
(其中資訊熵定義為:ent(d)=- ∑_(k=1)^|y|▒〖p_k log_2〖p_k 〗 〗)
資訊增益gain(a)越大,意味著特徵子集a包含的有助於分類的資訊越多。
常見的特徵選擇方法主要有:特徵頻度、文字頻度、資訊增益法、卡方檢驗法、互資訊法、特徵熵、特徵權等。
特徵頻度指訓練集中特徵t_k出現的次數。這是最簡單的特徵選擇方法。直觀上,特徵在文字集中出現次數越多,對文字分類的貢獻越大。由於原始特徵集中絕大部分是低頻特徵,因此,設定tf閾值對過濾低頻特徵非常有效,可以獲得很大的降維度。就高頻特徵而言,特徵的統計分布決定了文字分類的準確率。即當該高頻特徵均勻地分布在所有文字中時,對分類的作用將是有限的。因此,tf主要用在文字標引時直接刪除某些低頻特徵。
文字頻度是訓練集中含有詞條t_k的文字數在總文字數中出現的概率。其理論假設為稀有詞條或者對分類作用不大,或者是雜訊,可以被刪除。文字頻度較特徵頻度的統計粒度更粗一些,在實際運用中有一定的效果。但是如果某一稀有詞條主要在某類文字中出現的情況下,可能會把該類的顯著特徵錯誤地過濾掉。通過實驗表明,用tf和df的組合進行特徵選擇可以得到更好的降維效果。
在文字分類中,特徵t_k的資訊增益如下所示:
其中,進行特徵選擇時,選擇資訊增益大的特徵。
機器學習之文字特徵抽取
import pandas as pd import numpy as np from sklearn.feature extraction.text import countvectorizer defwork 連線mysql con pymysql.connect host 127.0.0.1 ...
機器學習之文字特徵抽取
from sklearn.feature extraction.text import countvectorizer import jieba li 想變成天上忽明忽暗的雲朵 想吃掉世上最美味的一切 一想到你呀,我這張臉,就泛起微笑 愛你,就像愛生命 當我跨過沉淪的一切,你是我的旗幟 利用jieb...
文字之特徵選擇
從給定的特徵集合中選擇出相關特徵子集的過程,稱為 特徵選擇 特徵選擇是從特徵集t 中選擇乙個真子集t 滿足 s s 其中,s為原始特徵集的大小,s 為選擇後的特徵集大小。選擇的準則是經特徵選擇後能有效提高文字準確率。選擇沒有改變原始特徵空間的性質,只是從原始特徵空間中選擇了一部分重要的特徵,組成乙個...