1. 程式人生 > >特徵提取演算法簡單學習筆記

特徵提取演算法簡單學習筆記

特徵提取:利用已有的特徵計算出一個抽象程度更高的特徵集,也指計算得到某個特徵的演算法

特徵選擇:嘗試從初始的特徵集T中選擇對文字描述效果最好的特徵子集T’(重點是“選擇”)

我的理解:

特徵提取:需要進行特徵變換,改變向量空間

特徵選擇:選擇,保留原始特徵意義

--------------------------------------------------------------------------------------

複製一段:

線性特徵提取

PCA

LDAICA-獨立成分分析思想:ICA是將原始資料降維並提取出相互獨立的屬性;尋找一個線性變換z=Wx,使得z的各個分量間的獨立性最大,I(z)=Eln(p(z)/p(z1)..p(zd))
注:PCA&ICAICA是找出構成訊號的相互獨立部分(不需要正交),對應高階統計量分析。ICA理論認為用來觀測的混合資料陣X是由獨立元S經過A線性加權獲得。ICA理論的目標就是通過X求得一個分離矩陣W,使得W作用在X上所獲得的訊號Y是獨立源S的最優逼近,該關係可以通過下式表示:Y = WX = WAS , A = inv(W)ICA相比與PCA更能刻畫變數的隨機統計特性,且能抑制高斯噪聲。
非線性特徵提取Kernel PCAKernel FDA  Manifold Learning 流形學習

以上來源 http://blog.csdn.net/lanbing510/article/details/40488787

並不完全是我想要的,好像哪裡不太對。。

-----------------------------------------------------------------------------------------------

找篇論文:(CV的一篇)

幾種特徵提取演算法效能的評估(魏英姿,劉源,不知道是哪年)http://www.docin.com/p-1230784467.html

1. 特徵提取演算法:

1.1 FAST(Features from Accelerated Segment Test)(從加快的segment測試中得到feature。。=.=)

1.2 SIFT(Scale Invariant Feature Transfrom)(比例不變特徵轉換。。=.=)(描述見後續。。圖片特徵提取部分)

1.3 PCA-SIFT

1.4 SURF( the Speed-up Robust Feature Detector)(加速魯棒特徵檢測er。。=.=)(描述見後續。。圖片特徵提取部分)

1.5 ORB(Oriented Brief)(有方向的摘要。。=.=)

2. 隨機抽樣一致性演算法(Random  Sample Consensus, RANSAC)

---------------------------------------------------------------------------------------------

網上覆制一截,作為上述補充。。 來源:http://blog.csdn.net/zhangzhengyi03539/article/details/49945011

MDS(Muli-demision scaling) 
MDS也是一種無監督的特徵對映方法。MDS建立一個原始高維輸入空間樣本到低維特徵空間樣本的一一對映,建立的原則是在輸入空間距離近的樣本在低維特徵空間的距離也要近。

Isomap 
Isomap基於MDS。Isomap通過計算最段路徑利用MDS進行降維。在利用Isomap的時候可以有兩種方法確定原始輸入空間樣本之間知否有路徑:一是設定閥值,兩樣本之間距離小於閥值的就認為是有邊;另一種是設定鄰居節點個數k,認為每個節點都與與它最近的k個樣本之間存在邊。

LLE 
LLE是區域性化模型,通過對節點的臨域建立OLS迴歸模型,然後根據OLS的權重構建特徵空間樣本。

SVD 
-----------------------------------------------------------------------------------------

網上又找一段。。來源:http://blog.csdn.net/rosenor1/article/details/52372788

先說一句題外的:

特徵是什麼樣的。。

這篇文章裡面說到了這句話:

分類變數通常用獨熱編碼(One-of-K or One-Hot Encoding),通過二進位制數來表示每個解釋變數的特徵。

想起來以前有一次面試的時候說到human detection,面試的人問我HoG特徵是什麼樣的,當時覺得有一種無法言說的感覺,面試官後來解釋了一下,覺得他說的也跟沒說沒差。。然後找到了這篇HoG特徵簡單梳理http://blog.csdn.net/coming_is_winter/article/details/72850511


複製正經的:

文字特徵提取--詞庫模型(Bag-of-words model)

一批文件的集合稱為文集(corpus)

檔案的單詞構成詞彙表(vocabulary)

構成特徵向量的元素數量稱為維度(dimension)

一個詞典(dictionary)來表示詞彙表與特徵向量索引的對應關係

將文件詞塊化(tokenize)。文件詞塊化是把句子分割成詞塊(token)或有意義的字母序列的過程。詞塊大多是單詞,但是他們也可能是一些短語,如標點符號和詞綴。

  詞彙表裡面有10個單詞,但a不在詞彙表裡面,是因為a的長度不符合CountVectorizer類的要求。

  對比文件的特徵向量,會發現前兩個文件相比第三個文件更相似。如果用歐氏距離(Euclidean distance)計算它們的特徵向量會比其與第三個文件距離更接近。兩向量的歐氏距離就是兩個向量歐氏範數(Euclidean norm)或L2範數差的絕對值:

  

  向量的歐氏範數是其元素平方和的平方根:

  

  有許多零元素的高維特徵向量成為稀疏向量(sparse vectors)

  第一個問題就是高維向量需要佔用更大記憶體。NumPy提供了一些資料型別只顯示稀疏向量的非零元素,可以有效處理這個問題。

  第二個問題就是著名的維度災難(curse of dimensionality,Hughes effect),維度越多就要求更大的訓練集資料保證模型能夠充分學習。如果訓練樣本不夠,那麼演算法就可以擬合過度導致歸納失敗。下面,我們介紹一些降維的方法

停用詞過濾

  特徵向量降維的一個基本方法是單詞全部轉換成小寫。這是因為單詞的大小寫一般不會影響意思。詞庫模型並不在乎單詞的位置和語法。

  另一種方法是去掉文集常用詞。這裡詞稱為停用詞(Stop-word),像a,an,the等。

詞根還原與詞形還原

  停用詞去掉之後,可能還會剩下許多詞,還有一種常用的方法就是詞根還原(stemming )詞形還原(lemmatization)

  詞根還原與詞形還原就是為了將單詞從不同的時態、派生形式還原。

  詞形還原:生成單詞的形態學的詞根

就是用來處理可以表現單詞意思的詞元(lemma)或形態學的詞根(morphological root)的過程。詞元是單詞在詞典中查詢該詞的基本形式。

通常需要詞法資料的支援,比如WordNet單詞詞類(part of speech)

詞根還原:把附加的詞綴都去掉,構成一個詞塊,可能不是一個正常的單詞。

通常需要用規則產生詞幹(stem)並操作詞塊,不需要詞法資源,也不在乎單詞的意思。

帶TF-IDF權重的擴充套件詞庫。。作為統計學上的方法對於短文字的應用不是太好

  一個文件中某個詞多次出現,相比只出現過一次的單詞更能體現反映文件的意思。

這個統計量是可以提前算好的,使用時直接查表即可,不會存在效率問題。

  這種單詞頻率構成的特徵向量為文件的意思提供了更多的資訊,但是在對比不同的文件時,需要考慮文件的長度

  很多單詞可能在兩個文件的頻率一樣,但是兩個文件的長度差別很大,一個文件比另一個文件長很多倍。scikit-learn的TfdfTransformer類可以解決這個問題,通過對詞頻(term frequency)特徵向量歸一化來實現不同文件向量的可比性。預設情況下,TfdfTransformer類用L2範數對特徵向量歸一化:

  

  f(t,d)是第d個文件(document)t個單詞(term)的頻率,∥x∥是頻率向量的L2範數。

       對數詞頻調整方法(logarithmically scaled term frequencies),把詞頻調整到一個更小的範圍

       TfdfTransformer類計算對數詞頻調整時,需要將引數sublinear_tf設定為True。

       詞頻放大法(augmented term frequencies),適用於消除較長文件的差異

  

  maxf(w,d):w∈d是文件d中的最大詞頻。scikit-learn沒有現成可用的詞頻放大公式,不過通過CountVectorizer可以輕鬆實現。

  歸一化,對數調整詞頻和詞頻放大三支方法都消除文件不同大小對詞頻的影響。

但是,另一個問題仍然存在,那就是特徵向量裡高頻詞的權重更大,即使這些詞在文集內其他文件裡面也經常出現。這些單詞並沒有突出代表單個文件的意思。逆向檔案頻率(inverse document frequency,IDF)就是用來度量文集中單詞頻率的。

  

  其中,N是文集中文件數量,d∈D:t∈d表示包含單詞tt的文件數量。單詞的TF-IDF值就是其頻率與逆向檔案頻率的乘積。

  通過TF-IDF加權之後,我們會發現在文集中較常見的詞被調整了。

通過雜湊技巧實現特徵向量

  前面我們是用包含文集所有詞塊的詞典來完成文件詞塊與特徵向量的對映的。這麼做有兩個缺點。首先是文集需要被呼叫兩次。第一次是建立詞典,第二次是建立文件的特徵向量。另外,詞典必須儲存在記憶體裡,如果文集特別大就會很耗記憶體。通過雜湊表可以有效的解決這些問題。可以將詞塊用雜湊函式來確定它在特徵向量的索引位置,可以不建立詞典,這稱為雜湊技巧(hashing trick)。scikit-learn提供了HashingVectorizer來實現這個技巧:

  fromsklearn.feature_extraction.textimportHashingVectorizercorpus=['the','ate','bacon','cat']vectorizer=HashingVectorizer(n_features=6)print(vectorizer.transform(corpus).todense())

  [[-1. 0. 0. 0. 0. 0.] [ 0. 0. 0. 1. 0. 0.] [ 0. 0. 0. 0. -1. 0.] [ 0. 1. 0. 0. 0. 0.]]

  雜湊技巧是無固定狀態的(stateless),它把任意的資料塊對映到固定數目的位置,並且保證相同的輸入一定產生相同的輸出,不同的輸入儘可能產生不同的輸出。它可以用並行,線上,流式傳輸建立特徵向量,因為它初始化是不需要文集輸入。n_features是一個可選引數,預設值是220220,這裡設定成6是為了演示。另外,注意有些單詞頻率是負數。由於Hash碰撞可能發生,所以HashingVectorizer用有符號雜湊函式(signed hash function)。特徵值和它的詞塊的雜湊值帶同樣符號,如果cats出現過兩次,被雜湊成-3,文件特徵向量的第四個元素要減去2。如果dogs出現過兩次,被雜湊成3,文件特徵向量的第四個元素要加上2。

  用帶符號雜湊函式可以把詞塊發生雜湊碰撞的概率相互抵消掉,資訊損失比資訊損失的同時出現資訊冗餘要好。雜湊技巧的一個不足是模型的結果更難察看,由於雜湊函式不能顯示哪個詞塊對映到特徵向量的哪個位置了。

圖片特徵提取

通過畫素值提取特徵

  數字影象通常是一張光柵圖或畫素圖,將顏色對映到網格座標裡。一張圖片可以看成是一個每個元素都是顏色值的矩陣。表示影象基本特徵就是將矩陣每行連起來變成一個行向量。光學文字識別(Optical character recognition,OCR)是機器學習的經典問題。

  和TF-IDF特徵向量不同,大部分影象都不是稀疏的。這種表示法的缺點不只是特徵向量的維度災難,還有就是某個位置的學習結果在經過對影象的放縮,旋轉或變換之後可能就不對了,非常敏感,缺乏穩定性。另外,這種方法對影象的亮度也十分敏感。所以這種方法在處理照片和其他自然景色影象時不怎麼有用。現代計算機視覺應用通常手工實現特徵提取,或者用深度學習自動化解決無監督問題。

建立的特徵向量包含了影象的每個畫素,既包含了影象特徵的有用資訊,也包含了一堆噪聲。

對感興趣的點進行特徵提取

有資訊量的屬性,稱為興趣點(points of interest),是由豐富的紋理包圍,基本可以重建影象。邊緣(edges)角點(corners)是兩種常用的興趣點型別。邊是畫素快速變化的分界線(boundary),角是兩條邊的交集。

  當圖片的亮度發生統一變化時,這些興趣點依然存在。

SIFT和SURF

  尺度不變特徵轉換(Scale-Invariant Feature Transform,SIFT)是一種特徵提取方法,相比前面使用的方法,SIFT對影象的尺寸,旋轉,亮度變化更不敏感。每個SIFT特徵都是一個描述圖片上某個區域邊緣和角點的向量。和興趣點不同,SIFT還可以獲取每個興趣點和它周圍點的綜合資訊加速穩健特徵(Speeded-Up Robust Features,SURF)是另一個抽取影象興趣點的方法,其特徵向量對影象的尺寸,旋轉,亮度變化是不變的。SURF的演算法可以比SIFT更快,更有效的識別出興趣點。

資料標準化

  確保解釋變數的資料都是同一量級,均值為0的標準化資料。許多評估方法在處理標準化資料集時可以獲得更好的效果。標準化資料均值為0,單位方差(Unit Variance)。均值為0的解釋變數是關於原點對稱的,特徵向量的單位方差表示其特徵值全身統一單位,統一量級的資料。解釋變數的值可以通過正態分佈進行標準化,減去均值後除以標準差。

-------------------------------------------------------------------------------------------

查了查,還有一些,梳理在下面:

CHI開方檢驗

TFIDF可以用於任意文字集合,而CHI則需要文字有分類標籤的標記才能計算。


textrank

本身是基於pagerank 演算法而來的,詞作為頂點,可以用有向圖也可以無向圖,最開始textrank是就是作為關鍵詞抽取和相關權重計算而出生的。最初是作為關鍵詞抽取方法提出來的,後來也有人嘗試作為權重計算方法,但需要注意的是TextRank的計算複雜度很高。

-------------------------------------------------------------------------------------------------------------------------------------------

影象特徵提取與特徵選擇基本方法總結

http://blog.csdn.net/zx799959906/article/details/39369543

-------------------------------------------------------------------------------------------------------------------------------------------

這個太長了。。暫時沒空看了


----------------------------------------------------------------------------------------

and finally