為了提高機器學習算法的能力,我們需要抽取有效、穩定的特征。
傳統的特征提取是通過人工方式進行的,需要大量的人工和專家知識。一個成功的機器學習系統通常需要嘗試大量的特征,稱為特征工程(Feature Engineering).但即使這樣,人工設計的特征在很多任務上也不能滿足需要。
因此,如何讓機器自動地學習出有效的特征也成為機器學習中的一項重要研究內容,稱為特征學習 (Feature Learning),也叫表示學習(Representation Learning)。特征學習在 一定程度上也可以減少模型復雜性、縮短訓練時間、提高模型泛化能力、避免過擬合等。
一、傳統的特征學習:
人為設計準則、選取,傳統的特征學習分為兩種:特征選擇和特征抽取。
1、特征選擇(Feature Selection):
在機器學習中,特征選擇(Feature Selection)指的是從原始數據中挑選出對預測目標最有用的那部分特征,同時剔除那些冗余、噪聲較多或無關的特征。這樣做的主要目的是提高模型的性能和泛化能力,同時降低模型的復雜度和計算成本。
子集搜索 -?一種直接的特征選擇方法為子集搜索(Subset Search):
假設原始特征數為 𝐷,則共有 2^𝐷 個候選子集。特征選擇的目標是選擇一個最優的候選子集。?最暴力的做法是測試每個特征子集,看機器學習模型哪個子集上的準確率最高。
但是這種方式效率太低。常用的方法是采用貪心的策略:由空集合開始,每一輪添加該輪最優的特征,稱為前向搜索(Forward Search);或者從原始特征集合開始,每次刪除最無用的特征,稱為反向搜索(Backward Search)。
在包裝方法中,特征選擇本質上就是一個子集搜索問題,即在所有可能的特征子集中尋找一個最優子集;而過濾方法和嵌入方法則采用不同的策略,但目標都是為了確定對模型預測最有幫助的特征。
(1)特征選擇的意義
- 提高模型性能:去除無關或冗余特征,可以減少噪聲對模型的干擾,提高模型的準確性。
- 降低過擬合風險:特征數量過多可能導致模型過擬合,通過選擇最相關的特征,可以讓模型更專注于真正重要的信息。
- 減少計算成本:減少輸入特征的維度可以降低模型訓練和預測時的計算負擔。
- 增強模型解釋性:較少的特征有助于理解模型決策的依據,便于解釋和應用。
(2)特征選擇的方法
常見的特征選擇方法主要可以分為三類:過濾法(Filter Method)、包裹法(Wrapper Method) 和 嵌入法(Embedded Method)。
-
過濾法(Filter Method)
- 基本思想:獨立于模型,對每個特征與目標變量之間的相關性進行評估,然后選擇得分較高的特征。
- 常用方法:
- 相關系數:如皮爾遜相關系數,用于衡量連續變量之間的線性相關性。
- 互信息:衡量兩個變量之間的依賴關系,適用于非線性關系。
- 卡方檢驗:通常用于分類問題,評估每個特征與目標類別之間的關聯強度。
- 方差篩選:剔除方差低(變化小)的特征。
-
包裹法(Wrapper Method)
- 基本思想:將特征子集選擇問題作為搜索問題,通過在給定模型上反復訓練,選擇使模型性能最優的特征組合。
- 常用方法:
- 前向選擇(Forward Selection):從空特征集開始,逐步添加能使模型性能提升最大的特征,直到沒有顯著改進為止。
- 后向消除(Backward Elimination):從全特征集開始,逐步剔除對模型性能影響最小的特征,直到去除任何特征都會使性能下降為止。
- 遞歸特征消除(Recursive Feature Elimination, RFE):不斷訓練模型并移除最不重要的特征,直到達到預設特征數量或性能最佳。
-
嵌入法(Embedded Method)
- 基本思想:特征選擇過程嵌入到模型訓練中,同時進行參數估計和特征選擇。
- 常用方法:
- 正則化方法:例如Lasso回歸(L1正則化),在優化目標中加入正則項,使得部分不重要的特征的系數收縮到零,從而實現自動特征選擇。
- 樹模型特征重要性:例如決策樹、隨機森林等模型,通過訓練過程中評估特征對預測的貢獻,進而篩選出重要特征。
2、特征抽取
(1)我們先看看特征抽取和特征選擇的本質區別是什么 ?
特征抽取和特征選擇都是為了改善模型性能、降低數據維度、提高效率,但它們的本質區別在于:
-
特征選擇:
直接從原始特征中挑選出一部分與目標最相關的特征,其本質是一個子集選擇問題。它不改變原始特征的表達方式,只是剔除那些冗余或無關的特征,從而降低數據維度。例如,在一個有100個特征的數據集中,可能通過相關性分析或正則化方法(如Lasso)選擇出其中最重要的20個特征用于訓練模型。 -
特征抽取:
則是通過一定的變換將原始數據轉換到一個新的特征空間,在這個過程中會生成全新的特征表示。其目標是從原始高維數據中提取出最具信息量的低維表示,同時保留原始數據的主要特性。例如,使用主成分分析(PCA)可以將原始數據轉換為若干個正交的主成分,這些主成分是原始特征的線性組合,能夠解釋大部分數據的方差。
總結:
- 特征選擇是在原始特征集合中挑選出一個子集,不改變特征的表達形式;
- 特征抽取則是通過數學變換將原始數據映射到新的特征空間,從而生成新的特征表示。
兩者都旨在降低數據維度和提高模型性能,但特征抽取更側重于通過轉換找到更有效的表示,而特征選擇則關注于篩選最有用的原始特征。
(2)特征抽取:
特征抽取(Feature Extraction)是構造一個新的特征空間,并將原始特征
投影在新的空間中得到新的表示.以線性投影為例,令 𝒙 ∈ R^𝐷 為原始特征向量, 𝒙′ ∈ R^𝐾 為經過線性投影后得到的在新空間中的特征向量,有
𝒙′ = 𝑾𝒙,
其中𝑾 ∈ R^𝐾×𝐷 為映射矩陣.
特征抽取(Feature Extraction)是機器學習和數據挖掘中的一個關鍵步驟,其主要目標是從原始數據中提取出能夠有效表征數據本質信息的特征或表示,從而使得后續的模型訓練和預測更加準確和高效。它通常涉及降維、數據變換或從數據中提取潛在表示等過程。下面詳細說明特征抽取的概念及常見方法:
(3)特征抽取的概念
-
定義:
特征抽取是將原始數據轉換為一組新的、更有信息量且通常維度較低的特征的過程。這些新特征應盡可能保留原始數據中與任務(如分類、回歸等)相關的重要信息,同時剔除噪聲和冗余信息。 -
意義:
- 降維與去噪:在高維數據中,直接使用原始特征可能導致維度災難和過擬合,通過特征抽取可以減少特征數量,同時提高模型的泛化能力。
- 提高效率:降維后的數據維度較低,既降低了計算復雜度,也便于可視化和解釋。
- 增強信息表達:通過變換原始數據,往往能發現原始特征之間的內在關系,獲得更具辨識度的特征表示。
(4)常見的特征抽取方法
特征抽取的方法通常可以分為傳統統計方法和基于深度學習的方法,具體方法視數據類型而定:
1.針對數值數據和圖像數據的傳統方法
-
主成分分析(PCA, Principal Component Analysis):
通過線性變換將數據投影到一組正交基上,選擇解釋數據方差最多的若干個主成分。PCA可以降維并去除冗余信息,常用于探索數據的結構。 -
線性判別分析(LDA, Linear Discriminant Analysis):
除了降維,還試圖最大化類別之間的分離度,常用于分類任務中的特征抽取。 -
獨立成分分析(ICA, Independent Component Analysis):
用于將多變量信號分解為相互獨立的成分,適用于信號處理等領域。
2.針對文本數據的特征抽取方法
-
TF-IDF(Term Frequency-Inverse Document Frequency):
衡量一個詞在文檔中出現頻率的同時,降低在所有文檔中普遍出現的詞的權重,從而得到更具代表性的詞匯特征。 -
詞嵌入(Word Embedding):
通過將詞語映射到連續低維向量空間(如 Word2Vec、GloVe、FastText 等),捕捉詞與詞之間的語義和上下文關系,從而獲得更豐富的文本表示。
3.基于深度學習的特征抽取
-
自動編碼器(Autoencoder):
利用神經網絡將輸入數據編碼為低維表示,再解碼回原始數據。中間隱藏層的激活值通常作為數據的抽象特征表示。 -
卷積神經網絡(CNN):
尤其在圖像處理任務中,CNN 能夠自動從圖像中提取層次化特征,如邊緣、紋理、形狀等。 -
預訓練語言模型:
如BERT、GPT等,在自然語言處理任務中,通過預訓練獲得的深層次特征可以直接作為文本的特征表示。
(5)?示例說明
示例 1:文本情感分析中的特征抽取
假設我們有一組電影評論數據,任務是判斷評論是正面還是負面。原始評論文本非常高維且稀疏。
- 步驟:
- 預處理:對文本進行分詞、去除停用詞等處理。
- 特征抽取方法:
- 使用 TF-IDF 方法計算每個評論中每個詞的權重,得到一個向量表示;
- 或者利用預訓練的詞嵌入模型(如 Word2Vec 或 BERT)將每個詞轉換為低維向量,再通過求平均、池化等方式得到整個評論的向量表示。
- 結果:得到每條評論的低維向量,這些向量可以作為輸入特征用于訓練情感分類器(例如邏輯回歸或神經網絡)。
示例 2:圖像識別中的特征抽取
假設我們需要識別手寫數字。
- 步驟:
- 原始數據:圖像數據通常為像素矩陣,維度很高。
- 特征抽取方法:
- 使用傳統方法,如主成分分析(PCA)對圖像進行降維,提取主要的視覺特征;
- 或者使用卷積神經網絡(CNN)自動從圖像中提取局部特征(如邊緣、角點等),通過卷積和池化層逐步獲得更抽象的特征表示。
- 結果:得到圖像的低維特征向量或多層特征表示,作為分類器(如全連接神經網絡或 SVM)的輸入,實現手寫數字的識別。
(4) 總結
- 特征抽取的意義:將原始數據轉換為更具信息量、更低維度的表示,幫助模型更有效地學習和泛化。
- 對應的方法:根據數據類型,常用的方法有 PCA、LDA、TF-IDF、詞嵌入、自動編碼器、CNN 等。
- 應用場景:從文本情感分析到圖像識別,再到語音處理等,特征抽取在各類機器學習任務中都扮演著關鍵角色。
這種方法不僅提升了模型的性能,還能幫助我們更好地理解數據的內在結構和語義。
二、與傳統特征學習相對應的是深度學習方法
傳統的特征抽取一般是和預測模型的學習分離的。我們會先通過主成分分析或線性判別分析等方法抽取出有效的特征,然后再基于這些特征來訓練一個具體的機器學習模型。
如果我們將特征的表示學習和機器學習的預測學習有機地統一到一個模型中,建立一個端到端的學習算法,就可以有效地避免它們之間準則的不一致性. 這種表示學習方法稱為深度學習(Deep Learning,DL).深度學習方法的難點 是如何評價表示學習對最終系統輸出結果的貢獻或影響,即貢獻度分配問題。目前比較有效的模型是神經網絡,即將最后的輸出層作為預測學習,其他層作為表 示學習。
深度學習方法是一類通過多層神經網絡結構自動學習數據特征的算法和技術,其主要方法和模型包括但不限于以下幾類:
-
前饋神經網絡(Feedforward Neural Networks, FNN)
- 最基本的深度神經網絡形式,其中信息從輸入層經過隱藏層最終傳到輸出層,常用于簡單分類和回歸任務。
-
卷積神經網絡(Convolutional Neural Networks, CNN)
- 主要用于處理圖像、視頻等具有空間結構的數據。通過卷積層、池化層和全連接層自動提取局部特征和層次化特征。
- 應用領域包括圖像識別、目標檢測、圖像分割等。
-
循環神經網絡(Recurrent Neural Networks, RNN)
- 適用于序列數據(如文本、語音、時間序列等),通過循環結構處理時間上的依賴性。
- 常見變體包括長短時記憶網絡(LSTM)和門控循環單元(GRU),這些結構能夠解決標準 RNN 在長序列中梯度消失或爆炸的問題。
-
自編碼器(Autoencoders)
- 一種無監督學習方法,通過構建編碼器—解碼器結構,將高維數據壓縮到低維表示,再從低維表示重構原始數據。常用于降維、去噪和特征學習。
- 變種有稀疏自編碼器、變分自編碼器(VAE)等。
-
生成對抗網絡(Generative Adversarial Networks, GANs)
- 由一個生成器和一個判別器組成,通過兩者的對抗訓練來生成與真實數據相似的新數據。
- GAN 已在圖像生成、圖像修復、風格遷移等任務中取得顯著成果。
-
Transformer 及其變體
- 最初由 Google 提出的 Transformer 架構主要用于自然語言處理任務,基于自注意力機制處理序列數據,能夠捕捉長距離依賴性。
- 典型應用包括 BERT、GPT、T5 等預訓練語言模型,這些模型在文本生成、機器翻譯、問答系統等領域取得了很大成功。
-
圖神經網絡(Graph Neural Networks, GNNs)
- 處理圖結構數據的深度學習方法,通過節點、邊和全局屬性之間的消息傳遞機制,捕捉圖中復雜的關系結構。
- 應用于社交網絡分析、推薦系統、化學分子結構分析等領域。
-
深度強化學習(Deep Reinforcement Learning, DRL)
- 將深度學習與強化學習相結合,用于解決決策和控制問題。深度神經網絡用于近似策略或價值函數,指導智能體在環境中通過試錯學習最優策略。
- 應用包括游戲(例如 AlphaGo)、機器人控制、自動駕駛等領域。
深度學習方法覆蓋了從基礎的前饋神經網絡到專門針對圖像、文本、序列數據設計的卷積網絡、循環網絡,再到生成模型(如GAN、變分自編碼器)和圖結構模型(如GNN),以及結合決策過程的深度強化學習。它們共同的目標是利用多層結構自動從數據中提取復雜特征,解決傳統機器學習中需要手工設計特征的問題。
這些方法各有側重點和適用場景,在實際應用中,根據任務的數據類型、復雜性以及對模型解釋性的要求,可以選擇合適的深度學習模型進行訓練和部署。
本文先總結性的列出深度學習的這些方法,后面我們逐一來學習和掌握。