百面機器學習總結--第一章特徵工程

Emily Du發表於2020-10-24

Q1:為什麼需要對數值型別的特徵做歸一化
A:對數值型別的特徵做歸一化可以將所有特徵都統一到一個大致相同的數值區間內。常用的方法有

  1. 線形函式歸一化(Min-Max Scaling)。它對原始資料進行線形變換,使結果對映到[0,1]的範圍,實現對原始資料的等比縮放。
    X n o r m = X − X m a x X m a x − X m i n X_{norm}=\frac{X-X{max}}{X_{max}-X_{min}} Xnorm=XmaxXminXXmax
  2. 零均值歸一化
    z = x − u σ z=\frac{x-u}{\sigma} z=σxu

為什麼要歸一化?
隨機梯度下降的時候,不同變數的更新速度不一樣,需要較多的迭代才能找到最優解。歸一化後,優化目標時,變數的更新速度變得更為一致,容易更快地通過梯度下降找到最優解。

Q2: 有哪些文字表示模型?它們各有什麼優缺點?
A:

  • 詞袋模型和N-gram模型

詞袋模型就是一袋子詞,忽略每個詞出現的順序。將整段文字以詞為單位切分開,然後每篇文章可以表示成一個長向量,向量中的每一維代表一個單詞,而該維對應的權重反映了詞在原文章中的重要程度。
用TF-IDF來計算權重,公式為:
T F − I D F ( t , d ) = T F ( t , d ) ∗ I D F ( t ) TF-IDF(t,d) = TF(t,d) *IDF(t) TFIDF(t,d)=TF(t,d)IDF(t)
其中TF(t,d)為單詞t在文件d中出現的頻率,IDF(t)是逆文件頻率,用來衡量單詞t對錶達語義所起的重要性,表示為

I D F ( t ) = log ⁡ ( 文 檔 總 數 包 含 單 詞 的 文 章 總 數 + 1 ) IDF(t)=\log(\frac{文件總數}{包含單詞的文章總數+1}) IDF(t)=log(+1)

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

通常,可以將連續出現的n個詞(n<=N)組成的片語(N-gram)也作為一個單獨的特徵放到向量表示中去,構成N-gram模型。

  • 主題模型
  • 詞嵌入與深度學習模型

詞嵌入是一類將詞向量化的模型的同統稱,核心思想是將每個詞都對映成低維空間(通常K=50~300維)上的一個稠密向量。K維空間的每一維也可以看作一個隱含的主題,只不過不像主題模型中的主題那樣直觀。
一篇文件N個詞,就可以用一個N*K維的矩陣來表示這篇文件,但是這樣的表示過於底層。

深度學習自動進行特徵工程的方式,模型中的每個隱層都可以認為對應著不同抽象層次的特徵。

Q3: Word2Vec是如何工作的?它和LDA有什麼區別與聯絡?
A:CBOW是根據上下文出現的詞來預測當前詞的生成概率,而Skip-gram是根據當前詞來預測上下文中各詞的生成概率。
CBOW和Skip-gram都可以表示成由輸入層,對映層和輸出層組成的神經網路。
輸入層中的每個詞由獨熱編碼方式表示,即所有詞均表示成一個N維向量,其中N為詞彙表中單詞的總數。

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

同理,輸出層向量的值可以通過因層向量(K維),以及連線隱含層和輸出層之間的K*N維權重矩陣計算得到。輸出層是N維向量,最後,輸出層向量應用softmax啟用函式,可以計算出每個單詞的生成概率。

接下來,訓練神經網路的權重,使得語料庫中所有單詞的整體生成概率最大化。但由於softmax啟用函式中存在歸一化項的緣故,推匯出來的迭代公式需要對詞彙表中的所有單詞進行遍歷,使得每次迭代過程非常緩慢。由此產生了Hierarchical Softmax和Negative Sampling 兩種改進方法。訓練得到維度為NK和KN的兩個權重矩陣之後,可以選擇其中一個作為N個詞的K維向量表示。

相關文章