特徵工程 筆記

2021-08-30 04:23:36 字數 3745 閱讀 2638

常用的兩種資料型別:

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

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

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

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

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

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

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

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

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

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

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

序號編碼:通常用於處理類別之間具有大小關係的資料。例如成績,可以分為高中低檔

獨熱編碼:通常用於處理類別間不具有大小關係的特徵。例如a、b、c、d可以把a變成乙個稀疏向量:a(1,0,0,0)

二進位制編碼:先用序號編碼給每個類別賦予乙個類別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維空間的每一維也可以看作乙個隱含的主題,只不過不像主題模型中的主題那樣直觀

谷歌2023年提出的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、基於資料方法,主要通過資料擴充,即根據一些先驗知識,在保持特定資訊的前提下,對原始資料進行適當變換以達到擴充資料集的效果

特徵工程筆記

雖然說特徵工程很大程度上是經驗工程,跟具體業務相關,但是我們可以根據一些思路來進行,以下是我在實踐過程中總結出來的一些思路,希望能給大家帶來一點啟發。使用資料視覺化工具對資料進行概覽 0.1 對原始資料進行概覽 常用的概覽方法 dataset.describe 檢視每種屬性的總數,平均值,標準差,2...

DS ML 特徵工程筆記

ds ml 關聯分析筆記 ds ml 分類演算法筆記之支援自動機svm模型 ds ml 分類演算法筆記之隨機森林 梯度提公升樹 xgboost模型 ds ml 分類演算法筆記之k 近鄰 kd tree模型 ds ml 降維演算法筆記之主成分分析pca模型 ds ml 分類演算法筆記之樸素貝葉斯模型 ...

機器學習 特徵工程筆記

對於某個特定任務來說,如何找到最佳資料表示,稱之為特徵工程 feature engineering 分類變數 one hot編碼與dummy variable python 實現在我另一篇部落格連線 連續變數離散化 特徵離散化 discretization 也叫分箱 bining 與上文不同的是,離...