1. 程式人生 > >特徵工程(筆記)

特徵工程(筆記)

常用的兩種資料型別:

1、結構化資料。結構化資料型別可以看作關係型資料庫的一張表,每一列都有清晰的定義,包含數值型、類別型兩種基本型別,每一行資料代表一個樣本資訊

2、非機構化資料。非結構化資料主要包括文字、影象、音訊、視訊資料,其包含的資訊無法用一個簡單的數值表示,也沒有清晰的類別定義,並且每條資料的大小各不相同

一、特徵歸一化

為了消除資料特徵之間的量綱影響,我們需要對特徵進行歸一化處理,使的不同指標之間具有可比性,否則分析出來的結果會傾向於數值差別比較大的特徵

對數值型別的特徵做歸一化可以將所有的特徵都統一到一個大致相同的數值區間內,最常用的兩種方法主要有

1)線性函式歸一化:使結果對映到[0,1]範圍內

2)零均值歸一化:將原始資料對映到均值為0,標準差為1的分佈上

為什麼需要對數值型特徵做歸一化?

通過梯度下降更快更容易找到最優解

實際應用中,通過梯度下降法求解的模型通常是需要歸一化的,包括線性迴歸、邏輯迴歸、支援向量機、神經網路等模型;

但是決策樹模型並不適用,決策樹在進行節點分裂時主要依據資料集D關於特徵x的資訊增益比,而資訊增益比跟特徵是否經過歸一化是無關的,因為歸一化並不會改變樣本在特徵x上的資訊增益

二、類別型特徵

類別型特徵主要是針對標籤(是否),性別(男女)等只有在有限選項內取值的特徵。類別型特徵原始輸入通常是字串形式,除了決策樹等少數模型能直接處理字串形式的輸入,對於邏輯迴歸、支援向量機等模型

來說,類別型特徵必須經過處理轉換成數值型特徵才能正常執行

在對資料進行預處理時,應該怎樣處理類別型特徵?

  1. 序號編碼:通常用於處理類別之間具有大小關係的資料。例如成績,可以分為高中低檔
  2. 獨熱編碼:通常用於處理類別間不具有大小關係的特徵。例如A、B、C、D可以把A變成一個稀疏向量:A(1,0,0,0)
  3. 二進位制編碼:先用序號編碼給每個類別賦予一個類別ID,然後將類別ID對應的二進位制編碼作為結果

例子:

資料      類別ID      二進位制編碼      獨熱編碼

A              1            0   0   1            1  0  0  0

B              2            0   1   0            0  1  0  0

C              3            0   1   1            0  0  1  0

D              4            1   0   0            0  0  0  1

三、高維組合特徵的處理

什麼是組合特徵?如何處理高維組合特徵?

為了提高複雜關係的擬合能力,在特徵工程中經常會把一階離散特徵兩兩組合,構成高階組合特徵,通過矩陣分解可以處理高維組合特徵

四、組合特徵

如果簡單地兩兩組合,依然容易存在引數過多、過擬合等問題,而且不是所有的特徵組合都是有意義的,因此應該需要找到對哪些特徵進行組合

怎樣有效地找到有效組合特徵?

基於決策樹的特徵組合尋找方法,每一條從根節點到葉節點的路徑都可以看成一種特徵組合的方式

如何有效的構造決策樹?

可以採用梯度提升決策樹,該方法的思想是每次都在之前構建的決策樹的殘差上構建下一顆決策樹

五、文字表示模型

文字是一類非常重要的非結構化資料,如何表示文字資料一直是機器學習領域的一個重要的研究方向

主要有:詞袋模型(Bag of Words)  TF-IDF(Term Frequency-Inverse Document Frequency)  主題模型(Topic model)  詞嵌入模型(Word Embedding)

主要的文字表示模型以及優缺點?

詞袋模型和N-gram模型

      最基本的文字表示模型是詞袋模型。將每篇文章看成一個子詞,並忽略每個詞出現的順序。具體來說,就是將整段文字以詞為單位切分開,然後每篇文章可以表示成一個長向量,向量中的每一維表示一個單詞,而該維對應的權重則反映了這個詞在原文章中的重要程度。

常用TF-IDF來計算權重,公式為

                    TF-IDF(t,d) = TF(t,d)*IDF(t),

其中TF(t,d) 為單詞t在文件d中出現的頻率,

IDF(t)是逆文件頻率,用來衡量單詞t對錶達語義的重要性,表示為IDF(t) = log(文章總數/包含單詞t的文章總數+1),直觀的解釋,如果一個單詞在非常多的文章裡面都出現,那麼它可能是一個比較通用的詞彙,對於區分某篇文章特殊語義的貢獻較小,因此對權重做一定的懲罰

      將文章進行單詞級別的劃分並不是一個好的做法,將片語中的單詞拆分開來和片語表達意思不相同。通常可以將一個片語中連續的n個片語成的片語(N-gram)作為一個單獨的特徵放到向量表示中去,構成N-gram模型。(此外,同一個詞可能有多種詞性變化,卻具有相似的含義)

主題模型

主題模型用於從文字庫中發現有代表性的主題(得到每個主題上面詞的分佈特徵),並且能夠計算出每篇文章的主題分佈

詞嵌入

詞嵌入是一類將詞向量化的模型的統稱,核心思想將每個詞都對映成低維度空間(k=50~300)上的一個稠密向量。k維空間的每一維也可以看作一個隱含的主題,只不過不像主題模型中的主題那樣直觀

六、Word2Vec

谷歌2013年提出的Word2Vec是目前最常用的詞嵌入模型之一。Word2Vec是一種淺層的神經網路模型,它有兩種網路結構,分別是CBOW(Continues Bag of Words)和Skip-gram

Word2Vec是如何工作的?與LDA有什麼區別和聯絡?

CBOW是根據上下文出現的詞語來預測當前詞的生成概率

Skip-gram是根據當前詞來預測上下文中各詞的生成概率

模型主要由三個部分組成:輸入層,對映層,輸出層

輸入層:輸入的每個詞由獨熱編碼方式表示,即所有詞均表示成一個N維向量,其中N為詞彙表中單詞的總數。(在向量中,每個詞都將與之對應的維度為1,其餘維度的值均為0)

對映層(隱藏層):k個隱藏單元的取值可以由N維輸入向量以及連線輸入和隱含單元之間的N*k維權重矩陣得到

輸出層:輸出值向量的值可以通過隱含層向量,以及連線隱含層和輸出層之間的k*N維權重矩陣計算得到。輸出層也是一個N維向量,每維與詞彙表中的一個單詞相對應。最後對輸出層向量應用啟用函式,可以計算出每個單詞的生成概率

Word2Vec與LDA的區別和聯絡?

首先,LDA是利用文件中單詞的共現關係來對單詞按主題聚類,也可以理解為對‘文件-單詞’矩陣進行分解,得到‘文件-主題’和‘主題-單詞’兩個概率分佈。Word2Vec是對‘上下文-單詞’矩陣進行學習,其中上下文由周圍的幾個單片語成,由此得到的詞向量表示更多地融入上下文共現的特徵

主題模型是一種基於概率圖模型的生成式模型,其似然函式可以寫成若干條件概率連乘的形式,其中包括需要推測的隱含變數

詞嵌入模型一般表達為神經網路的形式,似然函式定義在網路的輸出之上,需要通過學習網路的權重以得到單詞的稠密向量表示

七、影象資料不足時的處理方法

當訓練一個影象分類模型時,如果訓練樣本比較少,該如何處理

遷移學習、生成對抗網路、影象處理、上取樣技術、資料擴充

在影象分類任務中,訓練資料不足會帶來什麼問題?如何緩解資料量不足帶來什麼問題?

訓練不足帶來的問題主要表現在過擬合方面,即模型在訓練樣本上的效果啃呢個不錯,但在測試集效果不佳

解決辦法:

1、基於模型方法,主要是採用降低過擬合風險的措施,包括簡化模型,新增正則項,繼承學習,Dropout超引數等

2、基於資料方法,主要通過資料擴充,即根據一些先驗知識,在保持特定資訊的前提下,對原始資料進行適當變換以達到擴充資料集的效果