一天1个机器学习知识点(五)
陸陸續續整理機器學習的知識點,資料大多數來自網上,不做盈利目的,如果侵權請告知即刪!如果文章中有錯誤的地方還請各位同學指正,一起學習,一起進步!
每天都在更新中,記得收藏,每天進步一點點!!
一天1個機器學習知識點(一)
一天1個機器學習知識點(二)
一天1個機器學習知識點(三)
一天1個機器學習知識點(四)這部分主要更新集成學習的內容(RF,adaboost,GBDT,XGBoost等)
穿越---->深度學習知識點!!
目錄
- 1.特征工程
- 1.1.什么是特征工程?
- 1.2.為什么要對數值類型的特征做歸一化?方法有哪些?
- 1.3.特征編碼
- 1.3.1方法:
- 1.3.2.編碼該如何區分和使用
- 1.4.什么是組合特征?
- 1.5.如何處理高維組合特征?
- 1.6.怎么有效地找到組合特征?
- 1.7.特征工程分哪幾步?
- 1.8.原始數據通常存在哪些問題如何解決?(數據預處理的問題)
- 1.9.特征選擇和特征提取區別
- 1.10.特征選擇
- 1.11.特征提取
- 2.PCA
- 2.1.PCA的原理
- 2.2.PCA的步驟
- 2.3.PCA的優缺點
- 2.4.一些大廠真題
- 3.線性判別分析LDA
- 3.1原理
- 3.2步驟
- 3.3LDA和PCA區別
- 4.LPP
1.特征工程
1.1.什么是特征工程?
答:本質上來說,呈現給算法的數據應該能擁有基本數據的相關結構或屬性。當你做特征工程時,其實是將數據屬性轉換為數據特征的過程,屬性代表了數據的所有維度,在數據建模時,如果對原始數據的所有屬性進行學習,并不能很好的找到數據的潛在趨勢,而通過特征工程對你的數據進行預處理的話,你的算法模型能夠減少受到噪聲的干擾,這樣能夠更好的找出趨勢。事實上,好的特征甚至能夠幫你實現使用簡單的模型達到很好的效果。
1.2.為什么要對數值類型的特征做歸一化?方法有哪些?
答:為了消除數據特征之間量綱影響,需要對特征進行歸一化處理,使得不同指標之間具有可比性。主要有以下兩種方法:
1)線性函數歸一化(Min-Max Scaling):將數據映射到[0,1]的范圍,實現數據的等比縮放。
2)零均值歸一化(Z-score normalization):將原始數據映射到均值為0,標準差為1的分布上。
**注:**通常通過梯度下降法求解的模型需要歸一化,包括線性回歸,邏輯回歸,SVM,神經網絡等。單對于決策樹模型并不適用,因為信息增益跟基尼指數跟特征是否經過歸一化是無關的。
1.3.特征編碼
參考
除了決策樹等少量模型能直接處理字符串形式的輸入,對于LR,SVM等模型來說,類別特征必須經過處理轉化成數值特征才能正常工作。
1.3.1方法:
1)獨熱編碼
優點:解決了分類器不好處理分類數據的問題,在一定程度上也起到了擴充特征的作用。它的值只有0和1,不同的類型存儲在垂直的空間。
缺點:當類別的數量很多時,特征空間會變得非常大,容易造成維度災難。
2)序號編碼
優點:解決了分類編碼的問題,可以自由定義量化數字。但其實也是缺點,因為數值本身沒有任何含義,只是排序。如大中小編碼為123,也可以編碼為321,即數值沒有意義。
缺點:可解釋性比較差。比如有[dog,cat,dog,mouse,cat],我們把其轉換為[1,2,1,3,2],這里就產生了一個奇怪的現象:dog和mouse的平均值是cat。因此,Label encoding編碼其實并沒有很寬的應用場景
3)二進制編碼
1.3.2.編碼該如何區分和使用
1.特征數據類型:
-
對于定類類型的數據,建議使用one-hot encoding。定類類型就是純分類,不排序,沒有邏輯關系。比如性別分男和女,男女不存在任何邏輯關系,我們不能說男就比女好,或者相反。再者,中國各省市分類也可以用獨熱編碼,同樣各省不存在邏輯關系,這時候使用one-hot encoding會合適些。但注意,一般會舍去一個變量,比如男的對立面肯定是女,那么女就是重復信息,所以保留其中一個變量即可。
-
對于定序類型的數據,建議使用label encoding。定序類型也是分類,但有排序邏輯關系,等級上高于定類。比如,學歷分小學,初中,高中,本科,研究生,各個類別之間存在一定的邏輯,顯然研究生學歷是最高的,小學最低。這時候使用Label encoding會顯得更合適,因為自定義的數字順序可以不破壞原有邏輯,并與這個邏輯相對應。
2.所使用的模型:
對數值大小敏感的模型必須使用one-hot encoding。典型的例子就是LR和SVM。二者的損失函數對數值大小是敏感的,并且變量間的數值大小是有比較意義的。而Label encoding的數字編碼沒有數值大小的含義,只是一種排序,因此對于這些模型都使用one-hot encoding。
對數值大小不敏感的模型(如樹模型)不建議使用one-hot encoding。一般這類模型為樹模型。如果分類類別特別多,那么one-hot encoding會分裂出很多特征變量。這時候,如果我們限制了樹模型的深度而不能向下分裂的話,一些特征變量可能就因為模型無法繼續分裂而被舍棄損失掉了。因此,此種情況下可以考慮使用Label encoding。
1.4.什么是組合特征?
為了提高復雜關系的擬合能力,在特征工程中經常會把一階離散特征兩兩組合,構成高級特征。
例如,特征a有m個取值,特別b 有n個取值,將二者組合就有m*n個組成情況。這時需要學習的參數個數就是 m×n 個
1.5.如何處理高維組合特征?
面試問題:當每個特征都有千萬級別,就無法學習 m×n 規模的參數了
解決方案:可以將每個特征分別用 k 維的低維向量表示,需要學習的參數變為 m×k+n×k 個,等價于矩陣分解
1.6.怎么有效地找到組合特征?
參考
可以用基于決策樹的方法,首先根據樣本的數據和特征構造出一顆決策樹。然后從根節點都葉節點的每一條路徑,都可以當作一種組合方式。
1.7.特征工程分哪幾步?
答:①數據預處理;②特征選擇;③特征提取。
1.8.原始數據通常存在哪些問題如何解決?(數據預處理的問題)
答:①缺失值:刪除缺失的樣本,或者補值,根據統計學原理,連續數據取平均,離散數據取眾數;
②異常值:
? 怎么檢測異常值(參考):
?基于高斯分布的異常值檢測:3σ原則也是屬于高斯分布判斷方法的一種,在這里異常值被定義為,其值與平均值的偏差超過三倍標準差的值,在正態分布的假設下,區域u+3σ包含了99.7%的數據,如果某個值距離分布的均值超過了3σ,那么這個值就可以被簡單的標記為一個異常點:P(|x?μ|>3σ)≤0.003
? 四分位數
? 更多的還有基于各類統計量來檢測多元離群點,例如x^2檢驗、t檢驗等。
? 基于主成分分析的矩陣分解方法,這種方法經過主成分分析分解,再進行重構,通過異常值在主成分分量上的偏差更大來判斷是否異常。
? 基于距離,利用聚類思想,對數據進行聚類,排除距離中心最遠的N個點,一般的方法有,kmeans、knn、DBSCAN等。
怎么處理異常值:
? ③數據重復:去重,保證樣本唯一性;
? ④信息冗余:成績,很多但是只關心及格沒,直接二值化,大于60分及格為1不及格為0;
? ⑤定性特征不能直接使用,啞編碼或者one-hot編碼,one-hot編碼:有多少取值就多少狀態,小學中學大學碩士博士10000,但是啞編碼就是1000,讓0000表示博士。
? ⑥數據不平衡的問題
1.9.特征選擇和特征提取區別
都是降維的方法。特征選擇:不改變變量的含義,僅僅只是做出篩選,留下對目標影響較大的變量;特征提取:通過映射(變換)的方法,將高維的特征向量變換為低維特征向量。
1.10.特征選擇
通常來說,從兩個方面考慮來選擇特征:
- 特征是否發散:如果一個特征不發散,例如方差接近于0,也就是說樣本在這個特征上基本上沒有差異,這個特征對于樣本的區分并沒有什么用。
- 特征與目標的相關性:這點比較顯見,與目標相關性高的特征,應當優選選擇。除方差法外,本文介紹的其他方法均從相關性考慮。
根據特征選擇的形式又可以將特征選擇方法分為3種:
- Filter:過濾法,按照發散性或者相關性對各個特征進行評分,設定閾值或者待選擇閾值的個數,選擇特征。如方差選擇法,先要計算各個特征的方差,然后根據閾值,選擇方差大于閾值的特征。
- Wrapper:包裝法,根據目標函數,每次選擇若干特征,或者排除若干特征。遞歸消除特征法使用一個基模型來進行多輪訓練,每輪訓練后,消除若干權值系數的特征,再基于新的特征集進行下一輪訓練。
- Embedded:嵌入法,將機器學習模型的訓練過程與特征選擇相結合,在訓練模型的過程中自動進行了不同特征的重要性排序,比如樹模型中GBDT作為基模型進行特征選擇。
1.11.特征提取
在特征向量所處的高維空間中,包含很多的冗余和噪聲,希望通過降維的方法來尋找數據的內部特征,從而提升特征的表達能力,降低訓練復雜度。常見的降維方法有主成分分析法(PCA)和線性判別分析(LDA),線性判別分析本身也是一個分類模型。PCA和LDA有很多的相似點,其本質是要將原始的樣本映射到維度更低的樣本空間中,但是PCA和LDA的映射目標不一樣:PCA是為了讓映射后的樣本具有最大的發散性;而LDA是為了讓映射后的樣本有最好的分類性能。所以說PCA是一種無監督的降維方法,而LDA是一種有監督的降維方法。
2.PCA
如果數據之中的某些維度之間存在較強的線性相關關系,那么樣本在這兩個維度上提供的信息就會有一定的重復,所以我們希望數據各個維度之間是不相關的 (也就是正交的)。此外,出于降低處理數據的計算量或去除噪聲等目的,我們也希望能夠將數據集中一些不那么重要 (方差小) 的維度剔除掉。
2.1.PCA的原理
PCA的作用是找出特征里最主要的方面,用特征里最主要的方面來代替原始特征。PCA本質上是將方差最大的方向作為主要特征,并且在不同正交方向上沒有相關性。而方差最大的那個維度是主成分。
x投影后的方差就是樣本協方差矩陣的特征值。所以要找的最大方差就是協方差矩陣的最大特征值,最佳的投影方向就是最大特征值對應的特征向量。PCA屬于一種線性,非監督,全局的降維方法。
2.2.PCA的步驟
2.3.PCA的優缺點
PCA算法的主要優點有:
-
僅僅需要以方差衡量信息量,不受數據集以外的因素影響。
-
各主成分之間正交,可消除原始數據成分間的相互影響的因素。
-
計算方法簡單,主要運算是特征值分解,易于實現。
PCA算法的主要缺點有:
- 主成分各個特征維度的含義具有一定的模糊性,不如原始樣本特征的解釋性強。
- 方差小的非主成分也可能含有對樣本差異的重要信息,因降維丟棄可能對后續數據處理有影響。
2.4.一些大廠真題
3.線性判別分析LDA
LDA的思想可以用一句話來概括,就是“投影后類內方差最小,類間方差最大”。我們要將數據在低維度上進行投影,投影后希望每一種類別數據的投影點盡可能地接近,而不同類別的數據的類別中心之間的距離盡可能地大。LDA是一種監督學習的降維技術,也就是說它的數據集的每個樣本是有類別輸出的。這點和PCA不同,PCA是不考慮樣本類別輸出的無監督降維技術。
3.1原理
百面機器學習
3.2步驟
百面機器學習P88
3.3LDA和PCA區別
百面機器學習P88
4.LPP
最近看到一個降維的方法LPP,等有時間在學習整理一下
總結
以上是生活随笔為你收集整理的一天1个机器学习知识点(五)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 判断机器学习算法或深度学习算法优势常考虑
- 下一篇: 优化算法:粒子群算法,遗传算法,差分进化