樹模型的問題

樹模型

**rf , gbdt 的區別; **
像隨機森林一樣,梯度增強是一組決策樹。兩個主要區別是:
樹的構建方式:隨機森林獨立地構建每棵樹,而梯度增強則一次構建一棵樹。這種加性模型(合奏)以階段性的方式工作,引入了弱學習器,以改善現有弱學習器的缺點。

合併結果:隨機森林在流程結束時合併結果(通過平均或“多數規則”),而梯度增強則沿途合併結果。

如果我們仔細調整參數,則梯度增強會比隨機森林產生更好的性能。但是,如果我們有很多噪聲,則梯度增強可能不是一個好的選擇,因爲它可能導致過度擬合。它們也往往比隨機森林更難調整。

隨機森林和梯度助推器在不同區域均表現出色。隨機森林在進行多類對象檢測和生物信息學方面表現良好,這往往會產生大量統計噪聲。當您擁有不平衡的數據(例如實時風險評估)時,梯度提升效果很好。
迴歸樹用平方誤差最小化準則,分類樹用基尼指數最小化準則
gbdt , xgboost 的區別(爛大街的問題最好從底層原理去分析回答)

XGBoost代表“極端漸變增強”; 它是Gradient Boosting方法的特定實現,它使用更精確的近似值來找到最佳的樹模型。 它採用了許多巧妙的技巧,使其異常成功,特別是在結構化數據方面。 最重要的是

1.)計算二階梯度,即損失函數的二階導數(類似於牛頓的方法),它提供了有關梯度方向以及如何使損失函數最小化的更多信息。 常規梯度增強使用基本模型的損失函數(例如決策樹)作爲代理來最大程度地減少整體模型的誤差,而XGBoost使用二階導數作爲近似值。

2)和高級正則化(L1&L2),可提高模型的泛化能力。
XGBoost具有其他優點:訓練非常快,可以在集羣中並行化/分佈。

介紹決策樹,談了3種決策樹及其區別和適應場景
決策樹:
適用情景:因爲它能夠生成清晰的基於特徵(feature)選擇不同預測結果的樹狀結構,數據分析師希望更好的理解手上的數據的時候往往可以使用決策樹。同時它也是相對容易被攻擊的分類器[3]。這裏的攻擊是指人爲的改變一些特徵,使得分類器判斷錯誤。常見於垃圾郵件躲避檢測中。因爲決策樹最終在底層判斷是基於單個條件的,攻擊者往往只需要改變很少的特徵就可以逃過監測。受限於它的簡單性,決策樹更大的用處是作爲一些更有用的算法的基石。

隨機森林:
適用情景:
數據維度相對低(幾十維),同時對準確性有較高要求時。
因爲不需要很多參數調整就可以達到不錯的效果,基本上不知道用什麼方法的時候都可以先試一下隨機森林。

gbdt:

xgboost:

adaboost:

決策樹處理連續值的方法;簡單介紹決策樹幾種算法,有什麼區別?
特徵值最好是分類的。 如果值是連續的,則在構建模型之前將其離散化。
閾值

決策樹基本模型介紹?決策樹算法中缺失值怎麼處理?

順序方法包括以下技術:刪除具有缺少屬性值的案例,用該屬性的最常用值替換該屬性值,將所有潛在值分配給該丟失的屬性值,用均值代替數字屬性,

決策樹算法在應用中有什麼值得注意的地方。SVM、LR、決策樹的對比?
邏輯迴歸
是解決行業規模問題的最流行的算法,儘管它在效率和易於實現性方面比其他複雜算法有所進步,但在其他技術上卻逐漸失去優勢。邏輯迴歸解決方案的一個非常方便且有用的副作用是,它不會爲您提供離散的輸出或直接的類作爲輸出。取而代之的是,您獲得與每個觀測值相關的概率。您可以在此概率分數上應用許多標準和自定義性能指標,以得出標準,然後以最適合您的業務問題的方式對輸出進行分類。此屬性的一個非常流行的應用是金融行業中的記分卡,您可以在其中調整閾值以從同一模型獲得不同的分類結果。很少有其他算法將此類分數作爲直接結果。相反,它們的輸出是謹慎的直接分類。而且,邏輯迴歸在時間和內存需求方面非常有效。它可以應用於分佈式數據,還具有在線算法實現,可以用較少的資源處理大量數據。除上述之外,邏輯迴歸算法對數據中的小噪聲具有魯棒性,並且不受多重共線性溫和情況的特別影響。嚴重的多共線性情況可以通過使用L2正則化實現邏輯迴歸來處理,儘管如果需要簡約模型,則L2正則化不是最佳選擇,因爲它保留了模型中的所有功能。當您擁有大量功能並且缺少大量數據時,邏輯迴歸開始步履蹣跚。過多的分類變量也是邏輯迴歸的問題。對邏輯迴歸的另一種批評可能是它使用整個數據來得出分數。儘管這並不是一個問題,但是可以說,當您試圖提出分離曲線時,位於分數最末端的“明顯”案例實際上並不需要擔心。有人可能會認爲,理想情況下,它應該取決於那些邊界情況。另外,如果某些要素是非線性的,則還必須依靠變換,而變換會隨着要素空間大小的增加而變得麻煩。從討論到對Logistic迴歸進行總結的過程中,我們沒有挑選出一些突出的利弊。
邏輯迴歸的優點:
方便的觀察概率分數
跨工具的高效實施
多重共線性並不是真正的問題,可以在一定程度上通過L2正則化來解決
邏輯迴歸解決方案的行業廣泛普及[哦,這也很重要!]
Logistic迴歸缺點:
功能空間太大時效果不佳
無法很好地處理大量分類特徵/變量
依賴於非線性特徵的變換
依賴於整個數據[我不會說這是一個非常嚴重的缺點]

決策樹
固有地對單調變換或非線性特徵無動於衷(這與預測變量之間的非線性相關性不同),因爲它們只是將矩形[或(超)立方體)切成可調整其自身以適應任何單調變換的特徵空間。由於決策樹無論如何都設計爲可與離散區間或預測變量類別一起使用,因此決策樹實際上並不存在任何數量的分類變量。從決策樹獲得的模型相當直觀,並且易於向業務人員解釋。概率分數不是直接結果,但是您可以使用分配給終端節點的類概率。這給我們帶來了與決策樹相關的最大問題,即決策樹是高度偏向模型的一類。您可以在訓練集上建立決策樹模型,該模型可能勝過所有其他算法,但事實證明它對測試集的預測效果不佳。您必須嚴重依賴修剪和交叉驗證,才能獲得帶有決策樹的非過度擬合模型。使用隨機森林在很大程度上克服了過度擬合的問題,這只是決策樹的非常聰明的擴展。但是,隨機森林帶走了容易解釋的業務規則,因爲現在您有成千上萬的此類樹及其多數票使事情變得複雜。同樣,決策樹在變量之間具有強制的交互作用,如果大多數變量之間沒有交互作用或交互作用非常弱,這會使它們效率很低。另一方面,這種設計也使它們不太容易受到多重共線性的影響。 ew!總結決策樹:
決策樹的優點:
直觀的決策規則
可以處理非線性特徵
考慮變量交互
決策樹缺點:
高度偏愛訓練集[爲您提供救援的隨機森林]
沒有排名分數作爲直接結果

支持向量機的最好之處在於它們依靠邊界情況來構建急需的分離曲線。他們可以處理非線性決策邊界,因爲我們
較早看到
。對邊界案例的依賴也使他們能夠處理“明顯”案例的缺失數據。 SVM可以處理較大的特徵空間,這使它們成爲文本分析中最喜歡的算法之一,幾乎總是產生大量特徵,而邏輯迴歸不是一個很好的選擇。支持向量機的結果不如外行決策樹那麼直觀。使用非線性內核,在大量數據上進行訓練時,SVM可能會非常昂貴。綜上所述:
SVM優點:
可以處理較大的功能空間
可以處理非線性要素交互
不要依賴整個數據
SVM缺點:
大量觀察不是很有效
有時候找到合適的內核可能很棘手
始終從邏輯迴歸開始,如果沒有,則以績效爲基準
查看決策樹(隨機森林)是否有重大改進。即使您最終沒有使用結果模型,也可以使用隨機森林結果來刪除嘈雜的變量
如果您具有大量功能並且觀測數量不限制可用資源和時間,請選擇SVM

**解釋下隨機森林和gbdt?哪個更容易過擬合?爲什麼? **
RF使用決策樹,這很容易過度擬合。 爲了獲得更高的精度,RF決定根據裝袋情況創建大量的傳感器。 基本思想是一遍又一遍地對數據進行重採樣,併爲每個樣本訓練一個新的分類器。 不同的分類器以不同的方式擬合數據,並且通過投票將這些差異平均化。
GBM是一種增強方法,它基於弱分類器。 這個想法是一次添加一個分類器,以便訓練下一個分類器以改進已經訓練的集合。 請注意,對於RF,每次迭代都對分類器進行獨立訓練。但是如果數據嘈雜,GBM對過度擬合更爲敏感。

問了隨機森林的損失函數,
雜質度量的選擇對決策樹歸納算法的性能影響很小。 這是因爲許多雜質措施彼此非常一致。 確實,用於修剪樹的策略對最終樹的影響要大於選擇雜質方法的影響。
因此,您可以選擇使用像CART這樣的基尼索引或像C4.5這樣的熵。
參見我的另一篇文章比較這兩種方法
** adaboost和隨機森林的比較,爲了防止隨機森林過擬合可以怎麼做,是否用過隨機森林,怎麼用的。**

  1. Random Forest is based on bagging technique while Adaboost is based on boosting technique. See the difference between bagging and boosting here.

  2. In Random Forest, certain number of full sized trees are grown on different subsets of the training dataset. Adaboost uses stumps (decision tree with only one split). So, Adaboost is basically a forest of stumps. These stumps are called weak learners. These weak learners have high bias and low variance.

  3. Each tree in the Random Forest is made up using all the features in the dataset while stumps use one feature at a time.

  4. In Random Forest, each decision tree is made independent of each other. So, the order in which trees are made is not important. While in Adaboost, order of stumps do matter. The error that first stump makes, influence how the second stump is made and so on. Each stump is made by taking the previous stump’s mistakes into account. It takes the errors from the first round of predictions, and passes the errors as a new target to the second stump. The second stump will model the error from the first stump, record the new errors and pass that as a target to the third stump. And so forth. Essentially, it focuses on modelling errors from previous stumps.

  5. Random Forest uses parallel ensembling while Adaboost uses sequential ensembling. Random Forest runs trees in parallel, thus making it possible to parallelize jobs on a multiprocessor machine. Adaboost instead uses a sequential approach.

  6. Each tree in the Random Forest has equal amount of say in the final decision while in Adaboost different stumps have different amount of say in the final decision. The stump which makes less error in the prediction, has high amount of say as compared to the stump which makes more errors.

  7. Random Forest aims to decrease variance not bias while Adaboost aims to decrease bias not variance.

  8. There are rare chances of Random Forest to overfit while there are good chances of Adaboost to overfit.

To avoid over-fitting in random forest, the main thing you need to do is optimize a tuning parameter that governs the number of features that are randomly chosen to grow each tree from the bootstrapped data.
GBDT(利用損失函數的負梯度在當前模型的值作爲迴歸問題提升樹算法中的殘差的近似值,擬合一個迴歸樹)
具體介紹參見另一篇詳細文章

隨機森林(Bagging+CART)
具體介紹參見另一篇詳細文章

這裏簡介一下:

從決策樹到隨機森林
如果我們從成百上千個個體中做出預測,決定其中一些平均值很高,而其中一些預測值很低,該怎麼辦?我們創建了一個隨機森林!隨機森林背後的基本思想是將許多決策樹組合成一個模型。個別而言,決策樹(或人類)所做的預測可能不準確,但將它們組合在一起,則平均而言,預測將更接近標記。

爲什麼隨機森林比單個決策樹更好?我們可以考慮一下,由成百上千的人對最高溫度問題進行估計:通過彙總預測,我們可以吸收比任何人都多的知識。每個人都有自己的背景經驗和信息來源來解決問題。有些人可能會對Accuweather發誓,而另一些人只會關注NOAA(國家海洋和大氣管理局)的預測。也許一個人依靠氣象學家朋友的預測,而另一個人則使用數百年的溫度數據。如果我們只問一個人,我們只會利用他們有限的信息範圍,但是通過將每個人的預測結合在一起,我們的信息網就更大了。

此外,每個人的信息源越多樣化,隨機森林就越健壯,因爲它不會受到單個異常數據源的影響。如果NOAA變得無賴並開始進行100度以上的預測,而每個人都依賴NOAA,那麼我們的整個模型將一文不值。如果相反,我們“森林”中的個人使用多種不同的天氣來源,那麼我們的模型將不會受到單一來源的很大影響,因此我們可以繼續做出合理的預測。

爲什麼命名爲“隨機森林”?好吧,就像人們可能依賴不同的來源進行預測一樣,森林中的每個決策樹在形成問題時都會考慮特徵的隨機子集,並且只能訪問隨機的一組訓練數據點。這會增加森林中的多樣性,從而導致更可靠的整體預測和“隨機森林”的名稱。當需要進行預測時,隨機森林將獲取所有單個決策樹估計的平均值。 (對於迴歸任務,就是這種情況,例如,我們要預測溫度的連續值的問題。另一類問題稱爲分類,其中目標是離散的分類標籤,例如陰天或晴天。在這種情況下,隨機森林將對預測類別進行多數投票)。考慮到這一點,我們現在將隨機森林的所有概念部分都刪除了!

SVM與隨機森林比較

隨機森林本質上適用於多類問題,而支持向量機本質上適用於兩類問題。對於多類問題,您需要將其簡化爲多個二進制分類問題。

隨機森林將數字和分類特徵混合使用時效果很好。當要素具有各種比例時,也可以。粗略地說,藉助隨機森林,您可以按原樣使用數據。 SVM使“邊距”最大化,因此依賴於不同點之間的“距離”概念。由您決定“距離”是否有意義。因此,必須對分類特徵進行一次熱編碼。此外,強烈建議在預處理步驟中使用最小-最大或其他縮放比例。

SVM是嘗試在類之間找到最佳超平面的分類器。此處,最優性定義爲類和支持向量定義的超平面之間的最大餘量。在這些方法中,可以通過使用內核函數將特徵空間轉換爲高維特徵空間。然後在該特徵空間中找到超平面。這樣,SVM可以學習非線性決策邊界。您還可以使用SVM執行迴歸。

隨機森林是採用集合的基於樹的方法。它由許多決策樹組成,每個決策樹都在觀察值和特徵的隨機自舉樣本上進行訓練。通過這種方式,每棵樹大約都去相關。然後在推斷時,將共識投票用於分類,或將均值用於迴歸。通過組合森林中的隨機樹而採用的套袋減少了預測的方差

改變隨機森林的訓練樣本數據量,是否會影響到隨機森林學習到的模型的複雜度

隨機森林是決策樹的整體模型。 建立完整的未修剪決策樹的時間複雜度爲
O(v * n log(n)),其中n是記錄數,v是變量/屬性數。

根據定義,他們能夠學習輸入和輸出特徵之間的複雜非線性關係。

這些算法通常更靈活,甚至是非參數的(他們可以找出除了這些參數的值之外,還需要多少個參數來對您的問題進行建模)。它們也是高變異性的,這意味着預測會根據用於訓練它們的特定數據而有所不同。這種增加的靈活性和功能是以需要更多訓練數據(通常是更多數據)爲代價的。

實際上,隨着我們爲它們提供更多數據,某些非線性算法(如深度學習方法)可以繼續提高技能。

如果線性算法在每類數百個示例的情況下達到了良好的性能,那麼對於一個非線性算法(例如隨機森林或人工神經網絡),每個類可能需要數千個示例。

Logistics與隨機森林比較

簡而言之,邏輯迴歸旨在產生對屬於特定類別的概率的估計。因此,在邏輯迴歸之後只有一個“概率估計”。另一方面,利用隨機森林獲得的概率更像是副產品,利用了許多樹的優勢(儘管這取決於實現!下面有更多詳細信息),因此,有很多方法可以從隨機森林推斷出概率。

隨機森林概率

這不是真正的概率,從某種意義上來說,這只是樹木數量的平均值。

隱含地,它們將取決於您使用的懲罰函數。通常,隨機森林會產生許多聯繫(就概率而言),分別爲0和1。

邏輯迴歸概率

通常,它們可以很好地估計概率。但是與隨機森林相反,它們沒有考慮輸入的可能交互作用。因此,它也可能損害性能。我懷疑在大多數情況下,如果懲罰只是模型的準確性(某些相互作用很重要),則邏輯迴歸與隨機森林相比將得出較差的結果。

隨機森林具有層級形態,其中決策基於解決熵損失函數(有少數,但大多數依賴減少數據集中的自由度)。隨機森林也不是一個單一的模型:它是由完全成熟的決策樹組成的集合,具有低偏差和高方差。這些模型的平均值使方差均勻,因此最終減少的誤差既是低偏差又是低方差。這就是爲什麼這麼多人喜歡它的原因。此外,由於決策樹比直線更具不確定性,因此隨機森林可以更好地使用非線性數據集進行預測。隨機森林中的所有這些決策樹都是並行計算的,從而使模型在計算和內存密集方面都得到訓練。這就是爲什麼人們轉向梯度增強樹(在這裏我將不解釋)的原因,該樹允許迭代訓練決策樹。

另一方面,邏輯迴歸是完全平坦的,因此由於線條形狀的剛性,其偏差較大,因此方差很小。通過標準的正則化可以減少錯誤,這是快速的,但僅適用於線性數據,但是訓練起來非常快。大多數神經網絡都以某種線性層結尾,無論是線性迴歸還是邏輯迴歸(用於分類)。

GBDT與隨機森林比較隨機森林的學習過程;隨機森林中的每一棵樹是如何學習的;隨機森林學習算法中CART樹的基尼指數是什麼?
隨機森林中的每棵樹都會從數據點的隨機樣本中學習。 樣本被有放回的抽樣,稱爲自助抽樣法(bootstrapping),這意味着一些樣本將在一棵樹中被多次使用。 背後的想法是在不同樣本上訓練每棵樹,儘管每棵樹相對於特定訓練數據集可能具有高方差,但總體而言,整個森林將具有較低的方差,同時不以增加偏差爲代價。

RF 與 GBDT 區別,哪個具備交叉驗證功能等

Yes, out-of-bag performance for a random forest is very similar to cross validation. Essentially what you get is leave-one-out with the surrogate random forests using fewer trees. So if done correctly, you get a slight pessimistic bias. The exact bias and variance properties will be somewhat different from externally cross validating your random forest.

Like for the cross validation, the crucial point for correctness (i.e. slight pessmistic bias, not large optistic bias) is the implicit assumption that each row of your data is an independent case. If this assumption is not met, the out-of-bag estimate will be overoptimistic (as would be a “plain” cross validation) - and in that situation it may be much easier to set up an outer cross validation that splits into independent groups than to make the random forest deal with such dependence structures.

Assuming you have this independence between rows, you can use the random forest’s out-of-bag performance estimate just like the corresponding cross validation estimate: either as estimate of generalization error or for model tuning (the parameters mentioned by @horaceT or e.g. boosting). If you use it for model tuning, as always, you need another independent estimate of the final model’s generalization error.

That being said, the no of trees and no of variables are reasonably easy to fix, so random forest is one of the models I consider with sample sizes that are too small for data-driven model tuning.

Prediction error will not increase with higher number of trees - it just won’t decrease any further at some point. So you can just throw in a bit more computation time and be OK.
number of variates to consider in each tree will depend on your data, but IMHO isn’t very critical, neither (in the sense that you can e.g. use experience on previous applications with similar data to fix it).
leaf size (for classification) is again typically left at 1 - this again doesn’t cost generalization performance, but just computation time and memory.

接着寫一下信息增益的公式。之後就是問機器學習相關算法,說了一下bagging跟boosting,之後問了GBDT(沒做過,只能說說大體思
路)。(2 ) rf , gbdt 的區別; gbdt , xgboost 的區別;

在這裏插入圖片描述
信息增益
信息增益基於將數據集按屬性拆分後熵的減少。 構造決策樹的全過程是尋找返回最高信息增益(即最同質的分支)的屬性。
步驟1:計算目標的熵。
步驟2:然後將數據集劃分爲不同的屬性。 計算每個分支的熵。 然後按比例將其相加,以獲得拆分的總熵。 從拆分之前的熵中減去所得的熵。 結果是信息增益或熵的減少。

說說xgboost、gbdt區別、Tree-based Model如何處理連續型特徵。
方差減少是用於連續目標變量(迴歸問題)的算法。 該算法使用標準方差公式選擇最佳分割。 選擇方差較小的分割作爲分割總體的標準:
在這裏插入圖片描述
https://www.analyticsvidhya.com/blog/2016/04/tree-based-algorithms-complete-tutorial-scratch-in-python/

gbdt樹根據什麼分裂(瞎扯的梯度近似殘差、梯度下降方向,其實還是信息增益這種東西)
For all the features and all the threshold
Compute the information gain after the split Choose the best one (maximal information gain)
gbdt怎麼併發(特徵選擇層面,樹層面不能併發)
https://www.jianshu.com/p/8e39892f34cc

XGB和GBDT區別與聯繫也會經常問到:https://www.zhihu.com/question/41354392/answer/128008021?
group_id=773629156532445184

CART(迴歸樹用平方誤差最小化準則,分類樹用基尼指數最小化準則)、Logistics(推導)、GBDT(利用損失函數的負梯度在當前模型的值作爲迴歸問題提升樹算法中的殘差的近似值,擬合一個迴歸樹)

在面試過程中主動引導面試官提問,比如面試官讓你講解 gbdt 原理時,這會你可以跟他說,一般說起 gbdt ,我們都會跟 rf 以及
xgboost 一塊講,然後你就可以主動地向面試官輸出你的知識;面試並不是死板地你問我答,而是一種溝通交流,所以儘可能地把面試轉化成聊天式的對話,多輸出自己一些有價值的觀點而不是僅僅爲了回答面試官的問題;

幾種樹模型的原理和對比,

特徵選取怎麼選? 爲什麼信息增益可以用來選特徵?
信息熵和基尼指數的關係(信息熵在x=1處一階泰勒展開就是基尼指數)

https://blog.csdn.net/YE1215172385/article/details/79470926
信息增益,也稱爲互信息,可以幫助我們測量兩個變量之間的依賴性。

直觀上,互信息度量X和Y共享的信息:它度量知道這些變量中的一個減小多少不確定性。 例如,如果X和Y是獨立的,則知道X不會提供有關Y的任何信息,反之亦然,因此它們的互爲零。 在另一個極端,如果X是Y的確定性函數,而Y是X的確定性函數,則X傳達的所有信息都會與Y共享:知道X確定Y的值,反之亦然。 [資料來源:維基百科]

在分類任務的情況下,我們測量特徵與目標變量之間的依賴關係。 如果存在依賴關係,則我們將其用於分類任務。 而且,它只能用於離散特徵,因此對於數字特徵,在計算信息增益之前必須進行離散化。

介紹xgboost一下。寫下xgboost目標函數。(因爲我提到xgboost在目標函數
裏顯式地加入了正則項…血雪崩)怎麼調整XGB參數;xgboost原理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章