1. SVM、LR、決策樹的對比?
- LR實現簡單,訓練速度非常快,但是模型較為簡單。
- 決策樹容易過擬合,需要進行剪枝等。
- SVM既可以用于分類問題,也可以用于回歸問題,并且可以通過核函數快速的計算,
常見的損失函數
- 常見的損失誤差有五種:
- 鉸鏈損失(Hinge Loss):主要用于支持向量機(SVM) 中;
-
- 互熵損失 (Cross Entropy Loss,Softmax Loss ):用于Logistic 回歸與Softmax 分類中;
- 邏輯回歸的損失函數:假設樣本服從伯努利分布(0-1分布),然后求得滿足該分布的似然函數,接著取對數求極值等
-
- 平方損失(Square Loss):主要是最小二乘法(OLS)中;
- 平方損失函數:假設樣本的誤差項是白噪聲,在正態分布的條件下推導得到。
- 指數損失(Exponential Loss) :主要用于Adaboost 集成學習算法中;
- 其他損失(如0-1損失,絕對值損失)
優化函數角度
- soft margin(軟間隔)的SVM用的是hinge loss,
- 軟間隔:現實中很容易出現一個沒辦法把點嚴格區分的情況。那么如果我們想用svm處理這個問題,就想辦法讓svm能容忍這種錯誤,具體做法就是在目標函數添加錯誤累加項,然后加一個系數C,控制對錯誤的容忍度,并且在約束中添加錯誤容忍度的約束。如果對偶化處理得到的軟svm問題和之前的svm問題相比,各個α多了上界C(之前只要大于等于0就行了)。
- hing loss:鉸鏈損失,用來解決間距最大化的問題,如果被正確分類,損失是0,否則損失就是 1?Mi(w)。
- 帶L2正則化的LR對應的是cross entropy loss,另外adaboost對應的是exponential loss。
- LR的訓練速度要高于SVM。
- LR對異常點敏感,SVM和決策樹對異常點不太敏感,因為只關心support vector;
- LR和SVM對缺失值都很敏感,決策樹對缺失值不敏感(葉子節點投票解決)。
- LR可以預測概率,而SVM不可以,SVM依賴于數據測度,需要先做歸一化,LR一般不需要。
- SVM可以將特征映射到無窮維空間,但是LR不可以,一般小數據中SVM比LR更優一點。
2. GBDT 和隨機森林的區別?
Bagging + 決策樹(CART) = 隨機森林
Boostin + 決策樹(CART回歸樹) = GBDT
隨機森林采用的是bagging的思想,bagging又稱為bootstrap aggreagation,通過在訓練樣本集中進行有放回的采樣得到多個采樣集,基于每個采樣集訓練出一個基學習器,再將基學習器結合。
Bagging + 決策樹 = 隨機森林
隨機森林(Random Forest,簡稱RF)是Bagging的一個擴展變體。 RF在以決策樹為基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性選擇。具體來說,傳統決策樹在選擇劃分屬性時是在當前結點的屬性集合(假定有d個屬性)中選擇一個最優屬性;而在RF中,對基決策樹的每個結點,先從該結點的屬性集合中隨機選擇一個包含k個屬性的子集,然后再從這個子集中選擇一個最優屬性用于劃分。隨機選擇一個屬性用于劃分。這樣進一步增強了模型的泛化能力.
GBDT通過多輪迭代,每輪迭代產生一個弱分類器,每輪的分類器是在上一輪分類器的殘差基礎上進行訓練,每一迭代中根據錯誤更新樣本權重。
GBDT的思想可以用一個通俗的例子解釋,假如有個人30歲,我們首先用20歲去擬合,發現損失有10歲,這時我們用6歲去擬合剩下的損失,發現差距還有4歲,第三輪我們用3歲擬合剩下的差距,差距就只有一歲了。如果我們的迭代輪數還沒有完,可以繼續迭代下面,每一輪迭代,擬合的歲數誤差都會減小。
隨機森林是并行方法,GBDT是串行方法。
隨機森林和GBDT李的弱分類器通常使用的決策樹,從而對異常值,連續值,缺失值不敏感。
相對于決策樹的泛化能力更好,隨機深林引入隨機性,而GBDT學習上一輪的殘差。
隨機森林的變種
extra trees
- extra trees是RF的一個變種, 原理幾乎和RF一模一樣,僅有區別有:
- 1) 對于每個決策樹的訓練集,RF采用的是隨機采樣bootstrap來選擇采樣集作為每個決策樹的訓練集,而extra
trees一般不采用隨機采樣,即每個決策樹采用原始訓練集。 - 2) 在選定了劃分特征后,RF的決策樹會基于信息增益,基尼系數,均方差之類的原則,選擇一個最優的特征值劃分
點,這和傳統的決策樹相同。但是extra trees比較的激進,他會隨機的選擇一個特征值來劃分決策樹。 - 從第二點可以看出,由于隨機選擇了特征值的劃分點位,而不是最優點位,這樣會導致生成的決策樹的規模一般會大
于RF所生成的決策樹。也就是說,模型的方差相對于RF進一步減少,但是偏倚相對于RF進一步增大。在某些時候,extratrees的泛化能力比RF更好。
- 1) 對于每個決策樹的訓練集,RF采用的是隨機采樣bootstrap來選擇采樣集作為每個決策樹的訓練集,而extra
Totally Random Trees Embedding
- Totally Random Trees Embedding(以下簡稱 TRTE)是一種非監督學習的數據轉化方法。它將低維的數據集映射到高維,從而讓映射到高維的數據更好的運用于分類回歸模型。
- 我們知道,在支持向量機中運用了核方法來將低維的數據集映射到高維,此處TRTE提供了另外一種方法。
- (1)TRTE在數據轉化的過程也使用了類似于RF的方法,建立T個決策樹來擬合數據。
- (2)當決策樹建立完畢以后,數據集里的每個數據在T個決策樹中葉子節點的位置也定下來了。
- 比如我們有3顆決策樹,每個決策樹有5個葉子節點,某個數據特征 劃分到第一個決策樹的第2個葉子節點,第二個決策樹的第3個葉子節點,第三個決策 樹的第5個葉子節點。則x映射后的特征編碼為(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1), 有15維的高維特征。這里特征維度之間加上空格是為了強調三顆決 策樹各自的子編碼。
3. 如何判斷函數凸或非凸?什么是凸優化?
- 定義
- 幾何角度。二階導數在區間上非負,就稱為凸函數。
4. 如何解決類別不平衡問題?
- 有些情況下訓練集中的樣本分布很不平衡,例如在腫瘤檢測等問題中,正樣本的個數往往非常的少。從線性分類器的角度,在用對新樣本進行分類的時候,事實上在用預測出的y值和一個y值進行比較。幾率反映了正例可能性和反例可能性的比值,閾值0.5恰好表明分類器認為正反的可能性相同。
- 在樣本不均衡的情況下,應該是分類器的預測幾率高于觀測幾率就判斷為正例,因此應該是時預測為正例,這種策略稱為rebalancing。
但是訓練集并不一定是真實樣本總體的無偏采樣,通常有三種做法,
* 權重法。我們可以對訓練集里的每個類別加一個權重class weight。如果該類別的樣本數多,那么它的權重就低,反之則權重就高。sklearn中,絕大多數分類算法都有class weight和 sample weight可以使用
* 采樣法常用的也有兩種思路,
* 一種是對類別樣本數多的樣本做欠采樣,直到類別中的樣本數一致為止。
* 一種是對類別樣本數少的樣本做過采樣, 直到類別中的樣本數一致為止,最后再去擬合模型。
* SMOTE算法。上述兩種常用的采樣法很簡單,但是都有個問題,就是采樣后 改變了訓練集的分布,可能導致泛化能力差 。
* 基本思想是對少數類樣本進行分析并根據少數類樣本人工合成新樣本添加到數據集中。比如,該類別的候選合成集合有兩個樣本(X1,Y1),(X2,Y2) ,那么SMOTE采樣后,可以得到一個新的訓練樣本((X1+X2)/2,Y1 ).
5. 解釋對偶的概念。
- 一個優化問題可以從兩個角度進行考察,一個是原問題,一個是對偶問題。一般情況下對偶問題給出主問題最優值的下界,在強對偶性成立的情況下由對偶問題可以得到主問題的最優下界,對偶問題是凸優化問題,可以進行較好的求解,SVM中就是將primal問題轉換為dual問題進行求解,從而進一步引入核函數的思想。
6. 如何進行特征選擇?
為什么要進行特征的選擇
* 首先在現實任務中我們會遇到維數災難的問題(樣本密度非常稀疏),若能從中選擇一部分特征,那么這個問題能大大緩解。
* 維數災難:隨著維數的增加,算法的效果并沒有更好。
* (1)維數增多會導致樣本密度降低(n個樣本在邊長為w的p維空間中,樣本的密度為:n/pow(w,p)),導致結果容易過擬合。
* (2)維數增多會帶來高維空間數據稀疏化問題(在p維空間中,為了保持k的擬合覆蓋率,需要pow(1/p,x)=k樣本數),導致結果容易過擬合。
* (3)維數增多樣本遠離中心點,導致邊緣樣本密集過高,無法擬合
* 另外就是去除不相關特征會降低學習任務的難度,增加模型的泛化能力。
常見的特征選擇方式有過濾式,包裹式和嵌入式,filter,wrapper和embedding。
* Filter。 先對數據集進行特征選擇,再訓練學習器。
* 特征的方差
* 相關系數。主要用于輸出連續值的監督學習算法中
* 假設檢驗。檢驗某個特征分布和輸出值分布之間的相關性。有卡方,F,T檢驗
* 信息熵。利用決策樹的的思想。
* 在沒有什么思路的 時候,可以優先使用卡方檢驗和互信息來做特征選擇。
* Wrapper。使用一個機器學習模型來進行多輪訓練,每輪訓練后,消除若干權值系數的對應的特征,再基于新的特征集進行下一輪訓練。在sklearn中,可以使用RFE函數來選擇特征,通常計算量比較大。
* SVM-RFE算法來討論這個特征選擇的思路。這個算法以支持向量機來做RFE的機器學習模型選擇特征。它在第一輪 訓練的時候,會選擇所有的特征來訓練,得到了分類的超平面 后,如果有n個特征,那么RFE?SVM會選擇出 中分 量的平方值 最小的那個序號i對應的特征,將其排除,在第二類的時候,特征數就剩下n-1個了,我們繼續用這 n-1個特征和輸出值來訓練SVM,同樣的,去掉 最小的那個序號i對應的特征。以此類推,直到剩下的特征數滿足 我們的需求為止。
* 嵌入式。它和RFE的區別是它不是通過不停的篩掉特征來進行訓練,而是使用的都是特征全集。在sklearn中,使用SelectFromModel函數來選擇特征。例如L1正則化更易于獲得稀疏解,而L2正則化更不容易過擬合。
* 最常用的是使用L1正則化和L2正則化來選擇特征。我們講到正則化懲罰項越大,那么模型的系數就會越小。當正 則化懲罰項大到一定的程度的時候,部分特征系數會變成0,當正則化懲罰項繼續增大到一定程度時,所有的特 征系數都會趨于0. 但是我們會發現一部分特征系數會更容易先變成0,這部分系數就是可以篩掉的。也就是說, 我們選擇特征系數較大的特征。常用的L1正則化和L2正則化來選擇特征的基學習器是邏輯回歸
* 尋找高級特征
* 若干項特征加和: 我們假設你希望根據每日銷售額得到一周銷售額的特征。將最近的7天的銷售額相加得到。
* 若干項特征之差: 假設你已經擁有每周銷售額以及每月銷售額兩項特征,可以求一周前一月內的銷售額。
* 若干項特征乘積: 假設你有商品價格和商品銷量的特征,那么就可以得到銷售額的特征。
* 若干項特征除商: 假設你有每個用戶的銷售額和購買的商品件數,那么就是得到該用戶平均每件商品的銷售額
7. 為什么會產生過擬合,有哪些方法可以預防或克服過擬合?
一般在機器學習中,將學習器在訓練集上的誤差稱為訓練誤差,在測試集上的誤差稱為測試誤差,在新樣本上的誤差稱為泛化誤差。
顯然我們希望得到泛化誤差小的學習器,但是我們事先并不知道新樣本,因此實際上往往努力使測試誤差最小化。然而,當學習器將訓練樣本學的太好的時候,往往可能把訓練樣本自身的特點當做了潛在樣本具有的一般性質。這樣就會導致泛化性能下降,稱之為過擬合,相反,欠擬合一般指對訓練樣本的一般性質尚未學習好,在訓練集上仍然有較大的誤差。
欠擬合:一般來說欠擬合更容易解決一些,例如增加模型的復雜度,增加決策樹中的分支,增加神經網絡中的訓練次數等等。
過擬合:一般認為過擬合是無法徹底避免的,因為機器學習面臨的問題一般是np-hard,所以會犧牲一些泛化能力。過擬合的解決方案一般有增加樣本數量,對樣本進行降維,降低模型復雜度,利用先驗知識(L1,L2正則化),利用cross-validation,early stopping等等。
8. 什么是偏差與方差?
- 泛化誤差可以分解成偏差的平方+方差+噪聲。
- 偏差度量了學習算法的期望預測和真實結果的偏離程度,刻畫了算法的擬合能力。
- 方差度量了同樣大小的訓練集的變動所導致的學習性能的變化,刻畫了算法的抗干擾能力。
- 噪聲表達了當前任務上任何學習算法所能達到的期望泛化誤差下界,刻畫了問題本身的難度。
- 一般訓練程度越強,偏差越小,方差越大,泛化誤差一般在中間有一個最小值。
- 如果偏差較大,方差較小,此時一般稱為欠擬合,而偏差較小,方差較大稱為過擬合。
9. 神經網絡的原理,如何進行訓練?
- 一般而言認為神經網絡是由單個的神經元和不同神經元之間的連接構成,不夠的結構組成不同的神經網絡。最常見的神經網絡一般稱為多層前饋神經網絡,除了輸入和輸出層,中間隱藏層的個數被稱為神經網絡的層數。BP算法是訓練神經網絡中最著名的算法,其本質是梯度下降和鏈式法則。
10. 介紹卷積神經網絡,和 DBN 有什么區別?
- 卷積神經網絡的特點是卷積核,CNN中使用了權共享,通過不斷的上采用和卷積得到不同的特征表示,采樣層又稱為pooling層,基于局部相關性原理進行亞采樣,在減少數據量的同時保持有用的信息。DBN是深度信念網絡,每一層是一個RBM,整個網絡可以視為RBM堆疊得到,通常使用無監督逐層訓練,從第一層開始,每一層利用上一層的輸入進行訓練,等各層訓練結束之后再利用BP算法對整個網絡進行訓練。
11. 采用 EM 算法求解的模型有哪些,為什么不用牛頓法或梯度下降法?
在一些情況下,我們得到的觀察數據有未知的隱含數據,此時我們未知的有隱含數據和模型參數,因而無法直接用最大似然估計得到模型分布的參數。由于求和的項數將隨著隱變量的數目指數上升,會給梯度計算帶來麻煩。
用EM算法求解的模型一般有GMM或者協同過濾,k-means其實也屬于EM。
基本思想。既然我們無法直接求出模型分布參數,那么我們可以先猜想隱含數據(EM算法的E步),接著基于觀察數據和猜測的隱含數據一起來極大化對數似然,求解我們的模型參數(EM算法的M步)。由于我們之前的隱藏數據是猜測的。此時得到的模型參數一般還不是我們想要的結果。不過沒關系,我們基于當前得到的模型參數,繼續猜測隱含數據(EM算法的E步),然后繼續極大化對數似然,求解我們的模型參數(EM算法的M步)。以此類推,不斷的迭代下去,直到模型分布參數基本無變化,算法收斂,找到合適的模型參數。
EM算法可以保證收斂到一個穩定點,但是卻不能保證收斂到全局的極大值點,因此它是局部最優的算法,當然,如果我們的優化目標是凸的,則EM算法可以保證收斂到全局最大值,這點和梯度下降法這樣的迭代算法相同。
12. 用 EM 算法推導解釋 Kmeans。
- k-means在運行之前需要進行歸一化處理,不然可能會因為樣本在某些維度上,數據過大導致距離計算失效。
- k-means中每個樣本所屬的類就可以看成是一個隱變量,在E步中,我們固定每個類的中心,通過對每一個樣本選擇最近的類來優化目標函數,
- 在M步,重新更新每個類的中心點,該步驟可以通過對目標函數求導實現,最終可得新的類中心就是類中樣本的均值。
13. 用過哪些聚類算法,解釋密度聚類算法。
- K-Means算法.算法思想,對于給定的樣本集,按照樣本之間的距離大小,將樣本集劃分為K個簇。讓簇內的點盡量緊密的連在一起,而讓簇間的距離盡量的大.
- 初始隨機給定K個簇中心, 按照最鄰近原則把待分類樣本點分到各個簇。
- 然后按平均法重新計算各個簇的質心, 從而確定新的簇心。
- 一直迭代, 直到簇心的移動距離小于某個給定的值。
初始化優化K-Means++。
- k個初始化的質心的位置選擇對最后的聚類結果和運行時間都有很大的影響,因此需要選擇合適的k個質心。
- a) 從輸入的數據點集合中隨機選擇一個點作為第一個聚類中心.
- b) 對于數據集中的每一個點 ,計算它與聚類中心中最近聚類中心的距離.
- c) 選擇一個新的數據點作為新的聚類中心,選擇的原則是: 較大的點,被選取作為聚類中心的概率較大.
- d) 重復b和c直到選擇出k個聚類質心.
- e) 利用這k個質心來作為初始化質心去運行標準的K-Means算法.
距離計算優化elkan K-Means
大樣本優化Mini Batch K-Means。
一般是通過隨機無放回采樣得到的,為了增加算法的準確性,一般用不同的隨機采樣集來得到聚類簇,選擇其中最優的聚類簇。
密度聚類算法的基本思想通過樣本分布的緊密程度決定其類別。同一類別的樣本,他們之間的緊密相連的。將所有各組緊密相連的樣本劃為各個不同的類別,則我們就得到了最終的所有聚類類別結果。
-
密度聚類算法的流程
- (1)任意選擇一個沒有類別的核心對象作為種子,然后找到所有這個核心對象能夠密度可達的樣本集合,即為一個聚類簇。
- (2)繼續選擇另一個沒有類別的核心對象去尋找密度可達的樣本集合,這樣就得到另一個聚類簇。
- (3)一直運行到所有核心對象都有類別為止。
DBSCAN最大的不同就是不需要輸入類別數,可以對任意形狀的稠密數據集進行聚類(K-Means之類的聚類算法一般只適用于凸數據集)。
對數據集中的異常點不敏感,可以同來檢測異常點。如果樣本集的密度不均勻、聚類間距差相差很大時,聚類質量較差,這時用DBSCAN聚類一般不適合。
14. 解釋貝葉斯公式和樸素貝葉斯分類。
一所學校里面有 60% 的男生,40% 的女生。男生總是穿長褲,女生則一半穿長褲一半穿裙子。然而,假設你走在校園中,迎面走來一個穿長褲的學生,你能夠推斷出他(她)是男生的概率是多大嗎?
樸素貝葉斯分類算法利用貝葉斯定理來預測一個未知類別的樣本屬于各個類別的可能性,選擇其中可能性最大的一個類別作為該樣本的最終類別。
特征之間的條件獨立性假設,顯然這種假設不符合實際,這也是名稱中“樸素”的由來.
容易實現,沒有復雜的求導和矩陣運算,因此效率很高。對缺失數據不太敏感,算法也比較簡單,常用于文本分類。
15. L1和L2正則化的作用,解釋。
兩者都起到防止過擬合作用。L1偏向于參數稀疏性,L2偏向于參數分布較為稠密。
擬合過程中通常都傾向于讓權值盡可能小,最后構造一個所有參數都比較小的模型。因為一般認為參數值小的模型比較簡單,能適應不同的數據集,也在一定程度上避免了過擬合現象。
-
L1正則化可以產生稀疏權值矩陣,即產生一個稀疏模型,可以用于特征選擇。
- 稀疏矩陣指的是很多元素為0,只有少數元素是非零值的矩陣,即得到的線性回歸模型的大部分系數都是0
-
L2正則化可以防止模型過擬合(overfitting);一定程度上,L1也可以防止過擬合。
- 梯度下降法中,求解梯度下降的距離。與L2正則化的迭代公式相比,每一次迭代,θj都要先乘以一個小于1的因子,從而使得θj不斷減小,因此總得來看,θ是不斷減小的。
16. KNN和k-means聚類由什么不同?
- KNN是一種監督學習算法,而k-means 是非監督的。這兩種算法看起來很相似,都需要計算樣本之間的距離。knn算法需要事先已有標注好的數據,當你需要對未標注的數據進行分類時,統計它附近最近的k個樣本,將其劃分為樣本數最多的類別中。k-means聚類只需要一些未分類的數據點和閥值,算法會逐漸將樣本點進行分成族類。
17. 解釋一下ROC曲線的原理
- ROC曲線是真正率(y)和假正率(x)在不同的閥值下之間的圖形表示關系。通常用作權衡模型的敏感度與模型對一個錯誤分類報警的概率。
- 真正率表示:(實際為正例,預測為正例 )/(實際為正例)
- 假正率表示:(實際為反例,預測為正例 )/(實際為反例)
- (0,0)點表示所有樣本都被預測為負,此時閥值很大。
- (1,1)點表示所有樣本都被預測為正,此時閥值很小。
18. P-R曲線
- P-R曲線就是精確率precision作為縱坐標軸,召回率recall作為橫坐標軸的曲線。
- p表示(實際為正例,預測為正例 )/(預測為正例)
- R表示(實際為正例,預測為正例 )/(實際為正例)
19. 解釋SVM
- SVM關心是那些離超平面很近的點,這些點很容易被誤分類。如果我們可以讓離超平面比較近的點盡可能的遠離超平面,那么我們的分類效果會好有一些.
- SVM的模型是讓所有點到超平面的距離大于一定的距離,也就是所有的分類點要在各自類別的支持向量兩邊。用數學表達式表示出來。
- 然后轉化為最優化問題,在通過拉格朗日函數將我優化目標轉化為無約束的優化函數。在運用SMO算法求解參數。
- 非線性可分情況,軟間隔,進行坐標變化。引入核函數。常見的:多項式核函數、指數核函數、高斯核函數。
20. 第一類誤差和第二類誤差有什么區別?
- 第一類誤差:假設為真的情況下,作出了拒絕原假設的一種錯誤推斷。
- 第二類誤差:假設為假的情況下,做出了接受原假設的一種錯誤判斷。
21. 概率和似然有什么區別?
- 概率和似然都是指隨機事件的可能性,但在統計學中,概率和似然有截然不同的用法。
- 概率描述了已知參數時的隨機變量的輸出結果;
- 似然描述了已知隨機變量輸出結果時,未知參數的可能取值。
- 我們總是對隨機變量的取值談概率,而在非貝葉斯統計的角度下,參數是一個實數而非隨機變量,所以我們一般不談一個參數的概率,而說似然。
22. 什么是深度學習,它與機器學習算法之間有什么聯系?
- 深度學習是機器學習的一個子領域,它關心的是參照神經學科的理論構建神經網絡,使用反向傳播對大量未標注或半結構化的數據進行建模。從這個角度看,深度學習可以看成一種非監督學習算法,通過使用神經網絡學習數據的表示。
23. 生成模型與判別模型有什么區別?
- 生成模型會學習數據的分布;判別模型學習的是不同類型數據之間的區別,不學習數據內部特點。在分類問題上,判別模型會優于生成模型。
- 判別模型求解的思路是:條件分布——>模型參數后驗概率最大——->(似然函數\cdot 參數先驗)最大——->最大似然
- 生成模型的求解思路是:聯合分布——->求解類別先驗概率和類別條件概率
- 常見的生成方法有混合高斯模型、樸素貝葉斯法和隱形馬爾科夫模型等,常見的判別方法有SVM、LR等
24 交叉檢驗如何用在時間序列數據上?
- 與標準的k-folds 交叉檢驗不同,數據不是隨機分布的,而是具有時序性的。如果模式出現在后期,模型仍然需要選擇先前時間的數據,盡管前期對模式無影響。我們可以如下這么做:
- fold1:training[1], test[2]
- fold2:training[1 2], test[3]
- fold3:training[1 2 3], test[4]
- fold4:training[1 2 3 4], test[5]
- fold5:training[1 2 3 4 5], test[6]
25. 如何對決策樹進行剪枝(預剪枝,后剪枝)?
- 剪枝是決策樹發生過擬合后,為了降低模型復雜度,提高模型準確率的一種做法??梢苑譃樽陨隙潞妥韵露蟽煞N。
- 常見的方法有:誤差降低剪枝(REP),悲觀剪枝(PEP)和代價復雜度剪枝(CCP)。
REP
* 既然完全的決策樹會對訓練集產生過度擬合,那么就再找一個測試數據集來糾正它。
* (1)對于完全決策樹中的每一個非葉子節點的子樹,嘗試著把它替換成一個葉子節點,該葉子節點的類別我們用子樹中存在最多的那個類來代替,這樣就產生了一個簡化決策樹。
* (2)然后比較這兩個決策樹在測試數據集中的表現,如果簡化決策樹在測試數據集中的錯誤比較少,并且該子樹里面沒有包含另外一個具有類似特性的子樹,那么該子樹就可以替換成葉子節點。
* (3)該算法自底而上的方式遍歷所有的子樹,直至沒有任何子樹可以替換時,算法就可以終止。
* REP方法很直接,但是需要一個額外的測試數據集,為了解決這個問題,于是就提出了悲觀剪枝(PEP)。
* 簡單的來說就是對樹的每一個結點進行剪枝,如果剪掉某個結點會提高模型準確率,那么將其剪掉。
REP方法是一種比較簡單的后剪枝的方法,在該方法中,可用的數據被分成兩個樣例集合:一個訓練集用來形成學習到的決策樹,一個分離的驗證集用來評估這個決策樹在后續數據上的精度,確切地說是用來評估修剪這個決策樹的影響。
* 這個方法的動機是:即使學習器可能會被訓練集中的隨機錯誤和巧合規律所誤導,但驗證集合不大可能表現出同樣的隨機波動。所以驗證集可以用來對過度擬合訓練集中的虛假特征提供防護檢驗。
* 因為訓練集合的過擬合,使得驗證集合數據能夠對其進行修正,反復進行上面的操作,從底向上的處理結點,刪除那些能夠最大限度的提高驗證集合的精度的結點,直到進一步修剪有害為止(有害是指修剪會減低驗證集合的精度)。
* REP是最簡單的后剪枝方法之一,不過由于使用獨立的測試集,原始決策樹相比,修改后的決策樹可能偏向于過度修剪。這是因為一些不會再測試集中出現的很稀少的訓練集實例所對應的分枝在剪枝過如果訓練集較小,通常不考慮采用REP算法。
* 盡管REP有這個缺點,不過REP仍然作為一種基準來評價其它剪枝算法的性能。它對于兩階段決策樹學習方法的優點和缺點提供了了一個很好的學習思路。由于驗證集合沒有參與決策樹的創建,所以用REP剪枝后的決策樹對于測試樣例的偏差要好很多,能夠解決一定程度的過擬合問題。
PEP
ccp
- 代價復雜度選擇節點表面誤差率增益值最小的非葉子節點,刪除該非葉子節點的左右子節點,若有多個非葉子節點的表面誤差率增益值相同小,則選擇非葉子節點中子節點數最多的非葉子節點進行剪枝。
26. 什么是F1數,怎么使用它?
- F1數是衡量模型性能的一個指標。它是模型精準率和召回率的加權平均,1表示最好,0表示最差。在分類問題中有時精準率和召回率不會同時都高,那么我們可以使用F1數。
27. 什么時候你應該使用分類而不是回歸?
- 分類會產生離散的數值,使得數據嚴格的分為不同類?;貧w會得到連續的值。當你需要知道你的數據明確的屬于那些類時你可以用分類。
28. 如何確保你的模型沒有過擬合?
過度擬合的訓練數據以及數據攜帶的噪音,對于測試數據會帶來不確定的推測。有如下三種方法避免過擬合:
保持模型盡可能地簡單:通過考量較少的變量和參數來減少方差,達到數據中消除部分噪音的效果。
使用交叉檢驗的手段如:k-folds cross-validation。
使用正則化的技術如:LASSO方法來懲罰模型中可能導致過擬合的參數。
RF與GBDT之間的區別
(1)相同點
* 都是由多棵樹組成
* 最終的結果都是由多棵樹一起決定
(2)不同點
* 組成隨機森林的樹可以分類樹也可以是回歸樹,而GBDT只由回歸樹組成
* 組成隨機森林的樹可以并行生成,而GBDT是串行生成
* 隨機森林的結果是多數表決表決的,而GBDT則是多棵樹累加之和
* 隨機森林對異常值不敏感,而GBDT對異常值比較敏感
* 隨機森林是通過減少模型的方差來提高性能,而GBDT是減少模型的偏差來提高性能的
* 隨機森林不需要進行數據預處理,即特征歸一化。而GBDT則需要進行特征歸一化
29. GBDT與xgboost的對比
* xgboost能自動利用cpu的多線程,而且適當改進了gradient boosting,加了剪枝,控制了模型的復雜程度.
* 傳統GBDT以CART作為基分類器,xgboost還支持線性分類器,這時xgboost相當于帶L1和L2正則化項。
* 傳統GBDT在優化時只用到一階導數信息,xgboost則對代價函數進行了二階泰勒展開,同時用到了一階和二階導數。
* xgboost在代價函數里加入了正則項,用于控制模型的復雜度。使學習出來的模型更加簡單,防止過擬合,這也是xgboost優于傳統GBDT的一個特性。正則項里包含了樹的葉子節點個數。
* 列抽樣(column subsampling)。xgboost借鑒了隨機森林的做法,支持列抽樣,不僅能降低過擬合,還能減少計算,這也是xgboost異于傳統gbdt的一個特性。
* xgboost工具支持并行。注意xgboost的并行不是tree粒度的并行,xgboost也是一次迭代完才能進行下一次迭代的。xgboost的并行是在特征粒度上的。我們知道,決策樹的學習最耗時的一個步驟就是對特征的值進行排序(因為要確定最佳分割點),xgboost在訓練之前,預先對數據進行了排序,然后保存為block結構,后面的迭代中重復地使用這個結構,大大減小計算量。這個block結構也使得并行成為了可能,在進行節點的分裂時,需要計算每個特征的增益,最終選增益最大的那個特征去做分裂,那么各個特征的增益計算就可以開多線程進行。
* 可并行的近似直方圖算法。樹節點在進行分裂時,我們需要計算每個特征的每個分割點對應的增益,即用貪心法枚舉所有可能的分割點。當數據無法一次載入內存或者在分布式情況下,貪心算法效率就會變得很低,所以xgboost還提出了一種可并行的近似直方圖算法,用于高效地生成候選的分割點。
*隨機森林優點:對于很多數據集表現良好,精確度較高;不易過擬合;可得到變量的重要性排序;既能處理離散型數據,也能處理連續型數據;不需要歸一化;能夠很好的處理缺失數據;易并行化。
30. 為什么要歸一化呢?
* 1)歸一化后加快了梯度下降求最優解的速度;
* 2)歸一化有可能提高精度。
31. L1范式和L2方式的區別
- (1)L1范式是對應參數向量絕對值之和
- (2)L1范式具有稀疏性
- (3)L1范式可以用來作為特征選擇,并且可解釋性較強
- (4)L2范式是對應參數向量的平方和,再求平方根
- (5)L2范式是為了防止機器學習的過擬合,提升模型的泛化能力
32. 優化算法及其優缺點
- (1)批量梯度下降
- 優點:準確度高
- 缺點:收斂速度較慢
- (2)隨機梯度下降
- 優點:收斂速度較快
- 缺點:準確率低
- (3)mini_batch梯度下降
- 綜合隨機梯度下降和批量梯度下降的優缺點,提取的一個中和的方法。
- (4)牛頓法
- 牛頓法在迭代的時候,需要計算Hessian矩陣,當維度較高的時候,計算Hessian矩陣比較困難。
- (5)擬牛頓法
- 擬牛頓法是為了改進牛頓法在迭代過程中,計算Hessian矩陣而提取的算法,它采用的方式是通過逼近Hessian的方式來進行求解。
- (6)共軛梯度
- (7)啟發式的優化算法
- 啟發式的優化算法有遺傳算法,粒子群算法等。這類算法的主要思想就是設定一個目標函數,每次迭代根據相應的策略優化種群。直到滿足什么樣的條件為止。
33. 坐標軸下降法和梯度下降的求極值比較
a) 坐標軸下降法在每次迭代中在當前點處 沿一個坐標方向進行一維搜索 ,固定其他的坐標方向,找到一個函數的局部極小值。而梯度下降總是沿著梯度的負方向求函數的局部最小值。
b) 坐標軸下降優化方法是一種非梯度優化算法。在整個過程中依次循環使用不同的坐標方向進行迭代,一個周期的一維搜索迭代過程相當于一個梯度下降的迭代。
c) 梯度下降是利用目標函數的導數來確定搜索方向的,該梯度方向可能不與任何坐標軸平行。而坐標軸下降法法是利用當前坐標方向進行搜索,不需要求目標函數的導數,只按照某一坐標方向進行搜索最小值。
d) 兩者都是迭代方法,且每一輪迭代,都需要O(mn)的計算量(m為樣本數,n為系數向量的維度)