原文鏈接:https://blog.csdn.net/weixin_38664232/article/details/89948373
1、模型產生過擬合的原因及解決方案
什么是過擬合:
模型在訓練集上效果較好,在測試集上表現較差。
產生過擬合原因:
- 參數太多,模型復雜度高
- 樣本中噪音數據較大,模型學習到了噪音中的特征
- 對於決策樹模型。對決策樹的生長沒有合理的限制和修建
- 對於神經網絡模型。權值學習迭代次數足夠多(overtraining),擬合了訓練數據中的噪聲和訓練樣例中沒有代表性的特征。
解決方案:
- 降低模型復雜度
- 增大訓練集,訓練集增加之后就能學習到更多具有代表性的特征
- 增加正則項,減少參數,進一步降低模型復雜度
- 對於神經網絡,采用dropout
- 對於決策樹,采用earlystopping,模型對訓練數據集迭代收斂之前停止,防止過擬合
- 采用ensemble。集成學習可以有效的減輕過擬合。bagging通過平均多個模型的結果,來降低模型的方差。boosting不僅可以減小偏差,還可以減小方差。
2、Logistic回歸的損失函數,為什么要用sigmoid函數?sigmoid函數有何優缺點?
目標函數:
sigmoid優缺點:
logistic是基於Bernoulli分布的假設,也就是y|x~Bernoulli分布,而Bernoulli分布的指數族的形式就是1/(1+exp(-z))。
優點:
- 數據壓縮能力,將數據規約在[0,1]之間
- 導數計算方便
缺點:
- 存在梯度消失問題,當x稍大的情況就接近於一條水平線
- zigzag問題,非0中心化,在神經網絡算法等情況下,造成反向傳播時權重的全正全負的情況。
3、Logistic回歸為什么用交叉熵而不用歐式距離做損失函數?
歐式距離不是凸函數;交叉熵是凸函數;凸函數問題求解方便。
4、Logistic回歸是生成模型還是判別模型?
判別模型,直接輸出類后驗概率p(y|x),沒有對類條件概率p(x|y)或聯合概率p(x,y)建模。
5、為什么L1正則會把feature壓縮到0而L2正則做不到?
- L1正則只要不是特殊情況下與正方形的邊相切,一定是與某個定點優先相交,那么必然存在橫縱坐標中的一個系數為0,起到對變量篩選的作用。
- L2正則在圓的限制下,點可以是圓上的任意一點,對嶺回歸來說,是起不到壓縮變量作用的。
6、分類模型如何選擇?如何判別效果?如何計算auc?描述一個集成分類模型?
整體上:
數據量越大,神經網絡越好;維度越多,bagging算法越優越;訓練數量不多不少的情況下,SVM效果最好。
常用判斷:
accuracy,recall,ROC,auc,ks,f1值
auc的計算方法:roc曲線下的面積,FP(假陽率)、TP(真陽率)
一個集成分類模型:randomforest
- rf是由若干cart樹構成的,每棵樹盡情生長不剪枝,最后采用加權投票或者取均值的方式確定輸出值
- 每棵樹的數據采用bagging方式隨機抽取特征及樣本數目(決策樹生長和隨機性,這是RF的兩個特性),每棵樹之間的數據可能重復。
- 一般先以sqrt(feature_number)作為每次輸入的特征數,采取grid_search的方法觀察tree的數量(0-500),oob的變化(out-of-bag,袋外誤差,每次抽取到的數據進行訓練,沒有被抽到的數據作為校驗樣本,校驗樣本的誤差就是oob)
- 根據實際要求的精度后期可以進行調整:每次輸入的特征個數、每棵樹的最大深度、每個節點的分裂方式 (信息增益率/Gini指數)
7、信息增益、信息增益率、Gini指數
Gini指數:
8、LightGBM細節技術
1.直方圖優化(Histogram算法)
先把連續的浮點特征值離散化成k個整數,同時構造一個寬度為k的直方圖。遍歷數據時,根據離散化后的值作為索引在直方圖中累積統計量,當遍歷一次數據后,直方圖累積了需要的統計量,然后根據直方圖的離散值,遍歷尋找最優分割點。
2.帶深度限制的Leaf-wise的葉子生長策略
Level-wise過一次數據可以同時分裂同一層的葉子,容易進行多線程優化,也好控制模型復雜度,不容易過擬合。但實際上Level-wise是一種低效算法,因為它不加區分的對待同一層葉子,帶來了很多沒必要的開銷,因為實際上很多葉子的分裂增益較低,沒有必要進行搜索和分裂。
Leaf-wise則是一種更為高效的策略:每次從當前所有葉子中,找到分裂增益最大的一個葉子,然后分裂,如此循環。因此同Level-wise相比,在分裂次數相同的情況下,Leaf-wise可以降低更多的誤差,得到更好的精度。
Leaf-wise的缺點:
可能會生長出較深的決策樹,產生過擬合。因此LightGBM在Leaf-wise之上增加了一個最大深度限制,在保證高效率的同時防止過擬合。
3.直方圖做差
直方圖做差可以達到兩倍的加速,可以觀察到一個葉子節點上的直方圖,可以由它的父節點直方圖減去它兄弟節點的直方圖來得到。根據這一點,可以構造出數據量較小的葉子節點上的直方圖,然后用直方圖做差得到數據量較大的葉子節點上的直方圖,從而達到加速的效果。
4.存儲記憶優化
當我們使用數據的bin描述特征的時候帶來的變化:首先它不是像與排序算法那樣去存儲每一個排序后數據的序列;一般bin會控制在一個比較小的范圍,所以我們可以用更小的內存來存儲。
5.支持類別型特征
傳統的機器學習一般不能直接輸入類別特征,需要先轉化為多維的0-1特征,這樣無論在空間上海市時間上效率都不高。LightGBM通過更改決策樹算法的決策規則,直接原生支持類別特征,不需要轉化,提高了近8倍的速度。
如圖所示:
6.支持並行學習
搜索計算每個葉子的分裂增益時,可以並行計算;但是基學習器之間是串行計算。
9、XGBoost原理
10、one-hot為什么會導致維度爆炸?
用法示例:
-
enc=OneHotEncoder()
-
enc_fe=enc.fit_transform(df['feature']).toArray()
-
result=pd.concat([df,enc_fe],axis=1)
獨熱碼,在英文文獻中稱作one-hot,又稱獨熱編碼,一位有效編碼,直觀來說有多少個狀態就有多少比特,而且只有一個比特為1,其他都為0的一種碼制。特征取值較多的時候,映射到歐式空間表現為維度特別高。某一維中只有一位為1,其他位都是0.
使用獨熱編碼,將離散特征的取值擴展到了歐式空間,離散特征的某個取值就對應歐式空間的某個點。將離散特征使用one-hot編碼,會讓特征之間的距離計算更加合理。
11、為什么隨機森林能降低方差?
隨機森林的預測輸出值是多棵決策樹的均值,如果有n個獨立同分布的隨機變量xi,它們的方差都為sigma^2,則它們的均值為:
,取多個模型輸出結果的均值的方差降低為原來的n分之一。
12、GBDT的核心思想?
用加法模擬,更准確的說,是多棵決策樹來擬合一個目標函數。每一棵決策樹擬合的是之前迭代得到的模型的殘差。求解時,對目標函數使用一階泰勒展開,用梯度下降法訓練決策樹。
13、XGBoost的核心思想?
在GBDT的基礎上,目標函數增加了正則化項,並且在求解時做了二階泰勒展開。
14、PCA(主成分分析)優化的目標是什么?
最小化重構誤差/最大化投影后的方差