百面機器學習筆記 特徵工程

2021-09-19 13:55:29 字數 3779 閱讀 1027

特徵工程筆記

為了消除資料特徵之間的量綱影響,我們需要對特徵進行歸一化處理,使得不同指標之間具有可比性。特徵歸一化(normalization)使各指標處於同一數值量級,以便進行分析。

(1)線性函式歸一化(min-max scaling)。它對原始資料進行線性變換,使結果對映到[0, 1]的範圍,實現對原始資料的等比縮放。歸一化公式如下

(2)零均值歸一化(z-score normalization)。它會將原始資料映

射到均值為0、標準差為1的分布上。具體來說,假設原始特徵的均值為μ、標準差為σ,那麼歸一化公式定義為

資料歸一化並不是萬能的。在實際應用中,通過梯度下降法求解的模型通常是需要歸一化的,包括線性回歸、邏輯回歸、支援向量機、神經網路等模型。

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

類別型特徵(categorical feature)主要是指性別(男、女)、血型(a、b、ab、o)等只在有限選項內取值的特徵。類別型特徵原始輸入通常是字串形式,除了決策樹等少數模型能直接處理字串形式的輸入,對於邏輯回歸、支援向量機等模型來說,類別型特徵必須經過處理轉換成數值型特徵才能正確工作。

序號編碼(ordinal encoding)、獨熱編碼(one-hot encoding)、二進位制編碼(binary encoding)

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

tf(term frequency):詞頻

idf(inverse document frequency):逆文件頻率

將tf和idf相乘就會得到tf-idf的演算法:

tf(t)=(該詞語在文件出現的次數)/(文件中詞語的總數)

idf(t)= log_e(文件總數/出現該詞語的文件總數)

直觀的解釋是,如果乙個單詞在非常多的文章裡面都出現,那麼它可能是乙個比較通用的詞彙,對於區分某篇文章特殊語義的貢獻較小,因此對權重做一定懲罰。

將文章進行單詞級別的劃分有時候並不是一種好的做法,比如英文中的natural language processing(自然語言處理)一詞,如果將natural,language,processing這3個詞拆分開來,所表達的含義與三個詞連續出現時大相徑庭。

通常,可以將連續出現的n個詞(n≤n)組成的片語(ngram)也作為乙個單獨的特徵放到向量表示中去,構成n-gram模型。另外,同乙個詞可能有多種詞性變化,卻具有相似的含義。在實際應用中,一般會對單詞進行詞幹抽取(word stemming)處理,即將不同詞性的單詞統一成為同一詞幹的形式。

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

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

由於詞嵌入將每個詞對映成乙個k維的向量,如果一篇文件有n個詞,就可以用乙個n×k維的矩陣來表示這篇文件,但是這樣的表示過於底層。在實際應用中,如果僅僅把這個矩陣作為原文本的表示特徵輸入到機器學習模型中,通常很難得到令人滿意的結果。因此,還需要在此基礎之上加工出更高層的特徵。

在傳統的淺層機器學習模型中,乙個好的特徵工程往往可以帶來演算法效果的顯著提公升。而深度學習模型正好為我們提供了一種自動地進行特徵工程的方式,模型中的每個隱層都可以認為對應著不同抽象層次的特徵。

從這個角度來講,深度學習模型能夠打敗淺層模型也就順理成章了。卷積神經網路和迴圈神經網路的結構在文字表示中取得了很好的效果,主要是由於它們能夠更好地對文字進行建模,抽取出一些高層的語義特徵。與全連線的網路結構相比,卷積神經網路和迴圈神經網路一方面很好地抓住了文字的特性,另一方面又減少了網路中待學習的引數,提高了訓練速度,並且降低了過擬合的風險。

谷歌2023年提出的word2vec是目前最常用的詞嵌入模型之一。word2vec實際是一種淺層的神經網路模型,它有兩種網路結構,分別是cbow(continues bag of words)和skip-gram。

cbow的目標是根據上下文出現的詞語來**當前詞的生成概率;而skip-gram是根據當前詞來**上下文中各詞的生成概率。

cbow和skip-gram都可以表示成由輸入層(input)、對映層(projection)和輸出層(output)組成的神經網路。

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

在對映層(又稱隱含層)中,k個隱含單元(hidden units)的取值可以由n維輸入向量以及連線輸入和隱含單元之間的n×k維權重矩陣計算得到。在cbow中,還需要將各個輸入詞所計算出的隱含單元求和。

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

接下來的任務就是訓練神經網路的權重,使得語料庫中所有單詞的整體生成概率最大化。從輸入層到隱含層需要乙個維度為n×k的權重矩陣,從隱含層到輸出層又需要乙個維度為k×n的權重矩陣,學習權重可以用反向傳播演算法實現,每次迭代時將權重沿梯度更優的方向進行一小步更新。但是由於softmax啟用函式中存在歸一化項的緣故,推導出來的迭代公式需要對詞彙表中的所有單詞進行遍歷,使得每次迭代過程非常緩慢,由此產生了hierarchical softmax和negative sampling兩種改進方法,有興趣的讀者可以參考word2vec的原**。訓練得到維度為n×k和k×n的兩個權重矩陣之後,可以選擇其中乙個作為n個詞的k維向量表示。

首先,lda是利用文件中單詞的共現關係來對單詞按主題聚類,也可以理解為對「文件-單詞」矩陣進行分解,得到「文件-主題」和「主題-單詞」兩個概率分布。

而word2vec其實是對「上下文-單詞」矩陣進行學習,其中上下文由周圍的幾個單詞組成,由此得到的詞向量表示更多地融入了上下文共現的特徵。也就是說,如果兩個單詞所對應的word2vec向量相似度較高,那麼它們很可能經常在同樣的上下文**現。

需要說明的是,上述分析的是lda與word2vec的不同,不應該作為主題模型和詞嵌入兩類方法的主要差異。

主題模型通過一定的結構調整可以基於「上下文-單詞」矩陣進行主題推理。同樣地,詞嵌入方法也可以根據「文件-單詞」矩陣學習出詞的隱含向量表示。

主題模型和詞嵌入兩類方法最大的不同其實在於模型本身,主題模型是一種基於概率圖模型的生成式模型,其似然函式可以寫成若干條件概率連乘的形式,其中包括需要推測的隱含變數(即主題);而詞嵌入模型一般表達為神經網路的形式,似然函式定義在網路的輸出之上,需要通過學習網路的權重以得到單詞的稠密向量表示。

《百面機器學習》讀書筆記(一) 特徵工程

全部筆記的彙總貼 百面機器學習 讀書筆記彙總 特徵工程,顧名思義,是對原始資料進行一系列工程處理,將其提煉為特 徵,作為輸入供演算法和模型使用。從本質上來講,特徵工程是乙個表示和展現資料的過程。在實際工作中,特徵工程旨在去除原始資料中的雜質和冗餘,設計更高效的特徵以刻畫求解的問題與 模型之間的關係。...

百面機器學習 特徵工程總結(完善中 )

一 什麼是特徵工程 最大限度從資料中提取特徵供演算法和模型使用。二 為什麼要特徵工程 資料和特徵決定了機器學習的上界,而模型和演算法只是不斷逼近這個上界。三 怎樣做特徵工程 資料預處理 1.無量綱化 2.標準化 3.區間縮放法 歸一化 4.定量特徵二值化 5.定性特徵啞編碼 6.缺失值計算 7.資料...

《百面機器學習》第一章 特徵工程 筆記(簡)

對數值型別的特徵做歸一化,最終將特徵的取值都統一到大致相等的數值區間內。優點 可將所有特徵消除量綱。避免結果傾向於數值差別較大的特徵。常見的方法有 線性函式歸一化 零均值歸一化 適用於 邏輯回歸 svm 神經網路 不適用於 決策樹 主要指的非數值型的離散特徵,如性別 男 女 常見的處理方法 序號編碼...