前言
如果你能找到這里糜俗,真是我的幸運~這里是藍白絳的學習筆記,本集合主要針對《百面機器學習——算法工程師帶你去面試》這本書苦蒿。主要記錄我認為重要的知識點印机,希望對大家有幫助。
第一章 特征工程
引導語
一句業(yè)界經(jīng)典的話:“Garbage in, garbage out”。對于機器學習問題,數(shù)據(jù)和特征決定了結(jié)果的上限,而模型障本、算法的選擇和優(yōu)化則是在逐步接近這個上限。
特征工程從本質(zhì)上來講响鹃,是一個表示和展現(xiàn)數(shù)據(jù)的過程驾霜。在實際工作中,特征工程旨在去除原始數(shù)據(jù)中的雜質(zhì)和冗余买置,設(shè)計更高效的特征以刻畫求解的問題與預(yù)測模型之間的關(guān)系粪糙。
本章主要討論兩種常用數(shù)據(jù)類型,結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)忿项。
- 結(jié)構(gòu)化數(shù)據(jù)蓉冈〕俏瑁可以看作關(guān)系型數(shù)據(jù)庫的一張表,每一列都有清晰的定義寞酿,包含數(shù)值型家夺、類別型兩種基本類型;每行表示一個樣本的信息伐弹。
- 非結(jié)構(gòu)化數(shù)據(jù)拉馋。主要包括文本、圖像惨好、音頻煌茴、視頻數(shù)據(jù),其包含的信息無法用一個簡單的數(shù)值表示日川,也沒有清晰的類別定義蔓腐。并且每條數(shù)據(jù)的大小各不相同。
注:主要從數(shù)值表示龄句、類別定義來區(qū)分合住。
1、特征歸一化
- 目的:消除數(shù)據(jù)特征之間的量綱影響撒璧,使得不同指標之間具有可比性。
- 常用方法有線性函數(shù)歸一化和零均值歸一化:
- 線性函數(shù)歸一化(Min-Max Scaling笨使,最大最小值歸一化)卿樱,將數(shù)據(jù)映射到
的范圍內(nèi)。
- 零均值歸一化(Z-Score Normalization)硫椰,將數(shù)據(jù)映射到均值為0繁调、標準差為1的分布上。
- 如果模型用梯度下降來進行求解靶草,數(shù)據(jù)歸一化主要對收斂速度產(chǎn)生影響蹄胰。將各個特征映射到同一個區(qū)間內(nèi),可以使得各個特征的更新速度變得更一致奕翔,容易更快地通過梯度下降找到最優(yōu)解裕寨。
- 通過梯度下降求解的模型通常需要歸一化,包括線性回歸派继、邏輯回歸宾袜、支持向量機、神經(jīng)網(wǎng)絡(luò)等驾窟。但對于決策樹并不適用庆猫。例如C4.5節(jié)點分裂主要依據(jù)信息增益比,而歸一化并不會改變信息增益比绅络。
注:經(jīng)過實踐月培,確實是這樣嘁字,有可能歸一化之后反而使決策樹性能下降。
2杉畜、類別型特征
- 類別型特征指在有限選項內(nèi)取值的特征纪蜒。通常為字符串形式。決策樹等少數(shù)模型能直接處理字符串形式的輸入寻行,邏輯回歸霍掺、SVM等類別型特征必須處理成數(shù)值型特征才能正確工作。
- 處理類別型特征的方法:
- 序號編碼拌蜘,如成績可以轉(zhuǎn)化為高杆烁、中、低三檔简卧,分別用3兔魂、2、1表示举娩,轉(zhuǎn)換后依然保留了大小關(guān)系析校。
-
one-hot編碼,通常用于處理類別間不具有大小關(guān)系的特征铜涉,如各種血型智玻,A型編碼為(1,0,0,0),B型編碼為(0,1,0,0)芙代。
one-hot編碼需要注意:當類別取值較多時吊奢,用one-hot就會非常稀疏,可以用稀疏向量形式輸入來節(jié)省空間纹烹,目前大部分算法都接受這種輸入形式页滚。但是高維one-hot編碼會有幾個問題:1.knn中高維空間下很難有效衡量兩點的距離。2.邏輯回歸中參數(shù)數(shù)量會隨維度增高而增多铺呵,容易引起過擬合裹驰。通常只有部分維度對分類、預(yù)測有幫助片挂,因此可以配合特征選擇來降維幻林。
注:也就是說需要酌情篩掉。 - 二進制編碼音念,和one-hot的思想差不多滋将,它允許多位為1。本質(zhì)是利用二進制對ID進行hash映射症昏,比one-hot節(jié)省空間随闽。
- 還有其他編碼方式:Helmert Contrast、Sum Contrast肝谭、Polynomial Contrast掘宪、Backward Difference Contrast蛾扇。
3、高維組合特征的處理
- 目的:提高復(fù)雜關(guān)系的擬合能力魏滚。
- 組合特征是指把一階離散特征兩兩組合镀首,構(gòu)成高階組合特征。
注:注意是離散特征鼠次。
例如將語言(中文更哄、英文);劇集類型(電影腥寇、電視劇)兩個一階離散特征組合為二階特征成翩,則有中文電影、中文電視劇赦役、英文電影麻敌、英文電視劇四種類型。
假設(shè)數(shù)據(jù)的特征向量為掂摔,則有
如上面的問題术羔,則
的維度為2*2=4。
- 當引入ID類型的特征時乙漓,通常需要降維级历。如推薦問題,通常有如下的組合特征:
是否點擊 | uid=1,item id=1 | uid=2,item id=1 | uid=2,item id=1 | ... | uid=m,item id=n |
---|---|---|---|---|---|
0 | 1 | 0 | ... | 0 | 0 |
1 | 0 | 1 | ... | 0 | 0 |
... | ... | ... | ... | ... | ... |
如上表叭披,則要學習的參數(shù)規(guī)模為鱼喉,參數(shù)規(guī)模太大,一種行之有效的方法是經(jīng)用戶和物品分別用
維的低維向量表示(k遠小于m和n)趋观,則參數(shù)的規(guī)模變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=m%5Ctimes%20k%2Bn%5Ctimes%20k" alt="m\times k+n\times k" mathimg="1">。實際是矩陣分解锋边。
4皱坛、組合特征
簡單地將特征兩兩組合容易存在參數(shù)過多、過擬合等問題豆巨。本節(jié)提供了一種基于決策樹的組合特征尋找方法剩辟。
例如一個點擊預(yù)測問題:輸入特征有年齡、性別往扔、用戶類型(試用期/付費)贩猎、物品類型(護膚/食品)。我們構(gòu)造一個決策樹如下:
從根節(jié)點到葉節(jié)點的每條路徑都可以看成一種特征組合的方式萍膛。根據(jù)上面建立的決策樹吭服,我們有4條路徑。則可以得到以下樣本的編碼方式蝗罗。
是否點擊 | 年齡 | 性別 | 用戶類型 | 物品類型 | 編碼 |
---|---|---|---|---|---|
是 | 28 | 女 | 免費 | 護膚 | (1,1,0,0) |
否 | 36 | 男 | 付費 | 食品 | (0,0,1,1) |
如第一條樣本艇棕,滿足圖上的下面的兩條路徑蝌戒,則可編碼為(1,1,0,0)。
注:感覺這種方式確實是組合特征降維的比較好的方式沼琉,但是問題是首先要建立一顆樹北苟。
5、文本表示模型
- 詞袋模型和N-gram模型
-
詞袋模型是最基礎(chǔ)的文本表示模型打瘪。是將文章以詞為單位切分開友鼻,忽略詞的出現(xiàn)順序,將文章表示成一個長向量闺骚,每一維代表一個單詞彩扔,該維的權(quán)重表示重要程度。常用TF-IDF來計算權(quán)重葛碧。(注意逆文檔頻率是要取
對數(shù)的)
-
N-gram是指有些詞組不能拆開借杰,那么由這
個詞組成的詞組(N-gram)也作為一個單獨的特征放到向量表示中,構(gòu)成N-gram模型进泼。
注:總的來說就是蔗衡,TF-IDF是詞袋模型中的一種計算權(quán)重的方法,N-gram是一種為了解決詞組不可分的一種方法乳绕,也屬于詞袋模型绞惦,最后依然要用詞袋模型來表示。
- 主題模型
詞袋模型和N-gram模型無法識別兩個不同的詞或詞組具有相同的主題洋措,主題模型可以將具有相同主題的詞或詞組映射到同一維度上济蝉,映射到的這一維度表示某個主題。主題模型是一種特殊的概率圖模型菠发,后面第六章第五節(jié)會講王滤。 - 詞嵌入
詞嵌入是一類將詞向量化的模型的統(tǒng)稱,核心思想是將每個詞都映射到低維空間(=50~300)上的一個稠密向量滓鸠。
維空間的每一維也可以看作一個隱含的主題雁乡,但沒有主題模型那樣直觀。
6糜俗、Word2Vec
- Word2Vec是2013年提出的踱稍,是目前最常用的詞嵌入模型之一。它實際是一種淺層的神經(jīng)網(wǎng)絡(luò)模型悠抹,有兩種網(wǎng)絡(luò)結(jié)構(gòu):CBOW(Continues Bag of Words)和Skip-gram珠月。
COBW根據(jù)上下文出現(xiàn)的詞語來預(yù)測當前詞的生成概率,Skip-gram根據(jù)當前詞來預(yù)測上下文中各詞的生成概率楔敌。結(jié)構(gòu)如下圖:
1-6 Word2Vec的兩種網(wǎng)絡(luò)結(jié)構(gòu).jpg
圖中即當前詞啤挎,
、
卵凑、
侵浸、
即上下文中出現(xiàn)的詞旺韭,所謂的滑動窗口大小就是上下文取詞個數(shù),為2掏觉。
- CBOW的訓練方式:模型有輸入層区端、映射層、輸出層澳腹。
- 輸入層是one-hot編碼的上下文詞织盼,如果詞匯表中單詞總數(shù)為
,則輸入層的詞表示即為
維one-hot向量酱塔。
- 映射層(隱含層)有
個隱含單元沥邻,即我們要得到的
維詞嵌入向量,這里就是
個隱含單元羊娃。映射層的值由輸入層的
維向量和
維權(quán)重矩陣計算得到唐全。
注:CBOW模型需要將輸入詞計算的隱含單元值求和,比Skip-gram多這一部分蕊玷。 - 輸出層向量的值由隱含層的
維向量和
維向量計算得到邮利,輸出也是
維向量。但是這里的輸出向量并不能保證所有維度加起來為1(one-hot編碼加起來就為1)垃帅,要通過Softmax激活函數(shù)進行歸一化延届。
- 訓練的目標是使得語料庫中所有單詞的整體生成概率最大化∶吵希可以用反向傳播方庭,沿梯度更優(yōu)的方向更新權(quán)重,但是由于Softmax存在歸一化項酱固,推導出來的迭代公式需要對詞匯表中所有單詞進行遍歷(畢竟是
維詞向量)械念,所以每次迭代過程非常緩慢。有Hierarchical Softmax和Negative Sampling兩種改進方法运悲。
- 得到訓練出來的各詞對應(yīng)的向量:訓練得到的維度為
和
的矩陣龄减,可以選擇任意一個作為
個詞的
維詞向量。
- Word2Vec和LDA的區(qū)別和聯(lián)系:
- LDA利用文檔中單詞的共現(xiàn)關(guān)系來對單詞按主題聚類扇苞,可以理解為將“文檔-單詞”矩陣分解為“文檔-主題”和“主題-單詞”兩個概率分布。但Word2Vec更多融入了上下文共現(xiàn)的特征寄纵,是對“上下文-單詞”矩陣進行學習鳖敷。
- 主題模型通過一定的結(jié)構(gòu)調(diào)整可以基于“上下文-單詞”單詞矩陣進行主題推理,詞嵌入方法也可以根據(jù)“文檔-單詞”矩陣學習出詞的隱含向量表示程拭。
- 最大的區(qū)別是模型本身定踱。主題模型是一種基于概率圖模型的生成式模型,其似然函數(shù)可以寫成若干條件概率連乘的形式恃鞋,其中包括需要推測的隱含變量(即主題)崖媚。詞嵌入一般表達為神經(jīng)網(wǎng)絡(luò)的形式亦歉,似然函數(shù)定義在網(wǎng)絡(luò)的輸出之上,需要通過學習網(wǎng)絡(luò)的權(quán)重得到單詞的稠密向量表示畅哑。
7肴楷、圖像數(shù)據(jù)不足時的處理方法
- 一個模型能提供的信息一般來源于兩個方面:一是訓練數(shù)據(jù)中蘊含的信息;二是模型的形成過程中(包括構(gòu)造荠呐、學習赛蔫、推理等)人提供的先驗信息。
- 訓練不足時則要提供更多先驗信息泥张。先驗信息作用在模型上呵恢,如讓模型采用特定的內(nèi)在結(jié)構(gòu)、條件假設(shè)或添加一些約束條件媚创。先驗信息也可以作用在數(shù)據(jù)集上渗钉,如根據(jù)特定的先驗假設(shè)調(diào)整、變換和擴展數(shù)據(jù)集钞钙,讓其展現(xiàn)出更多更有用的信息鳄橘。
- 圖像分類任務(wù)中,訓練數(shù)據(jù)不足的問題主要表現(xiàn)在過擬合方面歇竟,處理方法可以分為兩類:
- 基于模型的方法:主要是采用降低過擬合風險的措施挥唠,包括簡化模型(將非線性模型簡化為線性模型)、添加約束項以縮小假設(shè)空間(L1/L2正則項)焕议、集成學習宝磨、Dropout超參數(shù)等。
- 基于數(shù)據(jù)的方法:主要通過數(shù)據(jù)擴充(Data Augmentation盅安,數(shù)據(jù)增強)唤锉,對原始數(shù)據(jù)進行適當變換以達到擴充數(shù)據(jù)集的效果。
具體到圖像分類别瞭,有四種變換方法:(1)隨機旋轉(zhuǎn)窿祥、平移、縮放蝙寨、裁減晒衩、填充、左右翻轉(zhuǎn)等墙歪,對應(yīng)不同角度的觀察結(jié)果听系。(2)對像素添加噪聲擾動,如椒鹽噪聲虹菲、高斯白噪聲等靠胜。(3)顏色變換。(4)改變亮度、清晰度浪漠、對比度陕习、銳度等。
- 除了在圖像空間進行變換址愿,還可以對圖像進行特征提取该镣,然后在圖像的特征空間內(nèi)進行變換,利用一些通用的數(shù)據(jù)擴充或上采樣技術(shù)如SMOTE等進行擴充必盖。這些都是一些啟發(fā)式的變換方法拌牲,還可以通過GAN等生成模型合成新樣本,還可以借助其他模型或數(shù)據(jù)來進行遷移學習歌粥。
小結(jié)
本章干貨還是很多的塌忽,表述非常清晰,非常易懂失驶。之前沒有弄懂的東西土居,比如Word2Vec的訓練過程,讓我終于了解了結(jié)構(gòu)和訓練方法嬉探。但是特征工程還有非常多的技巧擦耀,特征選擇也還有更多的方法,還要多學習其他方法涩堤。
結(jié)尾
如果您發(fā)現(xiàn)我的文章有任何錯誤眷蜓,或?qū)ξ业奈恼掠惺裁春玫慕ㄗh,請聯(lián)系我胎围!如果您喜歡我的文章吁系,請點喜歡~*我是藍白絳,感謝你的閱讀白魂!