個人面試問答題知識庫(二)基礎模型篇

       上一篇主要包含了部分面試中的常見問題,在我準備知識庫期間,騰訊發起了一場突如其來的面試,讓我轉變了思路,因此有了這一篇的內容。在面試時,面試官沒有拘泥於一些被問爛了的面試題,而是一個個的讓我介紹各種模型以及它們的優缺點。具體問法類似於,“LR知道嗎”,“介紹一下”,“LR有哪些優點”,“LR有哪些缺點”,“RF知道嗎”,“介紹一下”,等等。
       這場面試讓我意識到,除了一些面試常見題,考察對基礎模型瞭解的深度也是展現機器學習功底的有效方法。雖然我能介紹LR,也能很輕鬆的手推公式,但真被問到了LR有什麼優點的時候,只能脫口而出“形式簡單速度快”之後再也想不出別的了,這種對基礎模型的理解應該是在實際運用中累積起來的,光靠看書推公式沒有辦法提升,而臨近面試最好的辦法也只能是把各種模型都準備一遍了,在這個過程中加深理解。

49、介紹一下LR?

①邏輯迴歸是個二分類模型,它假設數據服從伯努利分佈,通過極大化似然估計推導交叉熵損失函數,運用梯度下降來求解參數
②由於激活函數使用了Sigmoid函數,因此輸出的值在0~1之間,可以認爲是yy的期望
③邏輯迴歸的損失函數是交叉熵損失函數J(θ)=i=1n[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]J(θ)=-∑_{i=1}^n[y^{(i)}logh_θ(x^{(i)})+(1-y^{(i)})log(1-h_θ(x^{(i)}))],是由似然函數L(θ)=i=1n[hθ(x(i))]y(i)[1hθ(x(i))]1y(i)L(θ)=∏_{i=1}^n[h_θ(x^{(i)})]^{y^{(i)}}[1-h_θ (x^{(i)})]^{1-y^{(i)}}取對數後得到的
推導過程:
J(θ)=YTloghθ(X)(EY)Tlog(Ehθ(X))J(θ)=-Y^Tlogh_θ (X)-(E-Y)^T log(E-h_θ (X))δJ(θ)δθ=XT[1hθ(X)hθ(X)(Ehθ(X))Y]XT[1Ehθ(X)(hθ(X))(Ehθ(X))(EY)] \frac{δJ(θ)}{δθ}=-X^T [\frac{1}{h_θ (X)}h_θ (X)(E-h_θ (X))Y]-X^T [\frac{1}{E-h_θ (X)}(-h_θ (X))(E-h_θ (X))(E-Y)]
化簡得
δJ(θ)δθ=XT[hθ(X)Y]\frac{δJ(θ)}{δθ}=X^T[h_θ (X)-Y]④LR可以看作對數機率的線性迴歸
⑤LR用於多分類,參考50
⑥在工業界使用LR一般會先進行特徵離散化

50、LR如何用於多分類?

①one VS one策略,假設有KK類,不同類別兩兩之間訓練一個分類器,可得到CK2C_K^2個分類器,預測時可得到K(K1)K(K-1)個結果,最終結果通過投票產生
②one VS rest策略,假設有KK類,根據每個類別訓練一個分類器,可得到KK個分類器
③將邏輯迴歸改造成Softmax迴歸,由於參數有冗餘,KK個類別共有K1K-1組參數,即
P(Y=kx,θ)=eθkx1+k=1K1eθkxP(Y=k|x,θ)=\frac{e^{θ_kx}}{1+∑_{k=1}^{K-1}e^{θ_kx}}P(Y=Kx,θ)=11+k=1K1eθkx P(Y=K|x,θ)=\frac{1}{1+∑_{k=1}^{K-1}e^{θ_kx}}④如果類別之間明顯互斥,則使用Softmax分類器,如果不互斥,使用KK個邏輯迴歸分類器

51、LR的優點?

①形式簡單,模型易解釋,特徵權重可以體現特徵重要性
②速度快,計算量只和特徵數目相關,容易並行,適合大規模數據
③LR本身就是對特徵進行線性相加,因此不會受到多重共線性的影響
④LR輸出的是概率,可以很方便的調整劃分閾值

52、LR的缺點?

①容易欠擬合,分類精度不高,只能處理線性可分的數據,需要手動進行特徵工程,例如特徵離散化
②LR本身無法篩選特徵
③依賴全部的特徵,當特徵有缺失時表現不好
④預測結果呈現S型,中間概率變化大,兩端概率變化小
⑤很難處理數據不平衡的問題

53、LR爲什麼要對特徵進行離散化?

①離散特徵的增加和減少都很容易
②稀疏向量內積運算速度快
③離散化特徵對異常數據具有很好的魯棒性
④LR屬於GLM,表達能力有限,單變量離散化爲NN個變量後,這NN個變量都有單獨的權重,相當於引入了非線性
⑤離散化後特徵還能進一步交叉,由M+NM+N個變量變成M×NM×N個變量,進一步引入非線性
⑥其實模型是使用連續特徵還是離散特徵,本質上是一個“大量離散特徵+簡單模型”與“少量連續特徵+複雜模型”的權衡,既可以離散化用線性模型,也可以連續特徵用深度學習,前者會更容易一些,因爲可以多個人一起並行做

54、介紹一下決策樹?

①決策樹是用於分類或者回歸的一種樹結構,由節點和有向邊組成
②節點的類型分爲內部節點和葉子節點,內部節點表示一個特徵,葉子節點表示一個預測分類或者預測值
③具體的分裂過程是,從根節點開始,根據設定的劃分準則,挑選一個最優特徵的最優切分點對樣本進行分裂,生成若干個子節點
④對每一個節點判斷是否滿足停止分裂的條件,比如樣本全屬於同一類別、樣本在所有特徵上取值相同、樣本集爲空,如果滿足條件,設置該節點爲葉子節點,對於分類問題,它的輸出結果爲該節點佔比最大的類別,對於迴歸問題,如果是平方損失函數,輸出結果爲樣本均值
⑤一般分類問題的劃分準則有信息增益、信息增益比、基尼指數,迴歸問題可以使用平方損失函數,還有像GBDT、XGBoost這類的集成算法也可以自己設置損失函數
⑥爲了防止過擬合,決策樹可以採用預剪枝、後剪枝提高泛化能力,詳見17
⑦也可以用隨機森林來防止過擬合

55、決策樹的優點?

參考44

56、決策樹的缺點?

①決策樹容易過擬合
②決策樹本質基於貪心的學習策略來搜索假設空間,不一定能找到讓損失函數最小化的劃分方式
③決策樹節點的每一次分裂都是垂直於座標軸的一次劃分,且只利用了一個特徵,難以擬合出傾斜的分類超平面,例如有兩個特徵,如果分界線是二維平面上的一條斜線,決策樹需要分裂多次才能擬合出這個分界線

57、介紹一下SVM?

參考13

58、SVM的優點?

①利用內積核函數代替向高維空間的非線性映射
②幾何間隔最大化的思想很適合小樣本分類
③最終的分類超平面只取決於少數的支持向量,具有較好的魯棒性,即增、刪非支持向量樣本對模型沒有影響
④與決策樹等貪心本質的算法不同,SVM構造的是一個凸二次規劃問題,因此可以得到最優解

59、SVM的缺點?

①SVM性能的優劣很大程度取決於核函數,目前核函數的選取都是人爲的,帶有隨意性
②SVM對大規模訓練樣本難以實施,因爲SVM的二次規劃計算涉及到mm階矩陣,mm爲樣本個數,當mm很大時,耗費的內存和計算時間都會很大
③SVM難以解決多分類問題,一般只能採用訓練多個分類器的方式

60、介紹一下SMO算法?

①SVM最終推導得到的是如下凸二次規劃的對偶問題
minα 12i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi\min_α ⁡\frac{1}{2}∑_{i=1}^N∑_{j=1}^Nα_i α_j y_i y_j K(x_i,x_j )-∑_{i=1}^Nα_is.t. i=1Nαiyi=0 s.t. ∑_{i=1}^Nα_iy_i=00αiC 0≤α_i≤C②此外還有需要滿足的KKT條件
αi=0  yig(xi)1α_i=0 ↔ y_i g(x_i )≥10<αi<C  yig(xi)=1 0<α_i<C  ↔  y_i g(x_i )=1αi=C  yig(xi)1 α_i=C  ↔  y_i g(x_i )≤1③SMO算法的基本思路是,如果所有αα都滿足KKT條件,那麼最優解就得到了,否則就選擇兩個變量,固定其他變量,針對這兩個變量構建一個二次規劃問題
④第一個變量的選擇方法是,通過外層循環選擇違反KKT條件最嚴重的樣本點,具體來說先檢查0<αi<C0<α_i<C的樣本點,如果這些樣本點都滿足KKT條件,再遍歷整個訓練集
⑤對第二個變量,由於更新公式是
Ei=g(xi)yiE_i=g(x_i )-y_iα2new,unc=α2old+y2(E1E2)K11+K222K12 α_2^{new,unc}=α_2^{old}+\frac{y_2 (E_1-E_2 )}{K_{11}+K_{22}-2K_{12}}α2new,uncα_2^{new,unc}再經過裁剪,得到α2newα_2^{new}
α2new={H,α2new>Hα2new,unc,Lα2new,uncHL,α2new,unc<L α_2^{new}=\left\{ \begin{array}{rcl} H, & & {\alpha_2^{new}>H}\\ \alpha_2^{new,unc}, & & {L\leq\alpha_2^{new,unc}\leq H}\\ L, & & {\alpha_2^{new,unc}<L} \end{array} \right. 爲了讓α2α_2有足夠大的變化,選擇α2α_2使對應的E1E2|E_1-E_2|最大
⑥找到並計算出α2newα_2^{new}後,求α1newα_1^{new}
α1new=α1old+y1y2(α2oldα2new)α_1^{new}=α_1^{old}+y_1y_2(α_2^{old}-α_2^{new})

61、介紹一下AdaBoost?

①AdaBoost是一種用於分類的Boosting算法,它是由一系列弱分類器線性相加組成,每個弱分類器都有相應的權重,所以是加法模型,它的每一輪迭代產生的弱分類器都是在上一輪的基礎上訓練得來的,因此是前向分步算法
②AdaBoost涉及到兩個權重,一個是樣本權重,AdaBoost提高/降低上一輪被分類錯誤/正確樣本的權重,讓當前弱分類器的關注點在錯誤分類的樣本上,具體的說,設當前弱分類器權重是αmα_m,則下一輪樣本權重wm+1,i=wm,ieαmyiGm(xi)Zw_{m+1,i}=\frac{w_{m,i}e^{-α_m y_i G_m (x_i )}}{Z};另一個是弱分類器權重,加大/減小分類誤差率大/小的弱分類器權重,具體的說,設弱分類器分類誤差率是eme_m,則弱分類器的權重αm=12ln1ememα_m=\frac{1}{2}\ln\frac{1-e_m}{e_m}
③AdaBoost樣本權重保證了前面的弱分類器重點處理普遍情況,後面的弱分類器重點處理疑難雜症,最終的分類器權重保證了前面的弱分類器有更大的權重,這有先抓總體再抓特例的思想
④AdaBoost每個弱分類器的損失函數是帶權重樣本的分類誤差率,整體的損失函數是指數損失函數

62、AdaBoost的優點?

①AdaBoost提供的是一個框架,內部弱分類器可以是任何算法
②AdaBoost訓練誤差的上界會隨着弱分類器的增加而以指數速率下降
③AdaBoost在弱分類器較簡單的時候不容易發生過擬合(沒有明確解釋)
④AdaBoost參數較少,調參方便

63、AdaBoost的缺點?

①對離羣點敏感,容易受到噪聲干擾,異常點在迭代中獲得更高權重
②執行效果依賴於弱分類器的選擇
③弱分類器數目不好確定

64、介紹一下RF?

①隨機森林包括“森林”和“隨機”兩個層面
②隨機森林中的“森林”代表多棵決策樹,隨機森林是以決策樹爲基模型的bagging集成算法,它解決了決策樹泛化能力弱的缺點
③“隨機”則體現在兩個方面,第一個方面,數據集通過自助採樣法隨機獲取,第二個方面,每棵樹(注意不是每個節點)使用不同的特徵子集,上述二重隨機性使得每棵樹之間的獨立性增加,進而降低整體方差
④設單模型之間的相關係數爲0<ρ<10<ρ<1,則模型均值的方差爲
Var(1ni=1nXi)=σ2n+n1nρσ2Var(\frac{1}{n}∑_{i=1}^nX_i)=\frac{σ^2}{n}+\frac{n-1}{n}ρσ^2⑤隨機森林內的每棵決策樹都沒有剪枝過程,這是因爲bagging集成負責降低方差,而每棵決策樹主要目標爲降低偏差

65、RF的優點?

①訓練與預測階段,樹與樹之間可並行化處理,速度較快,適用於大數據集
②bagging本質使得隨機森林能降低過擬合風險,且具有很強的抗干擾能力
③在特徵層面,隨機森林能處理高緯度特徵,不需要做特徵選擇,且訓練完後能給出特徵重要性
④隨機森林既能解決分類問題也能解決迴歸問題
⑤決策樹的優點,參考44

66、RF的缺點?

①隨機森林解決迴歸問題沒有分類問題表現那麼好,因爲它不能給出一個連續的輸出,不能做出超越數據集範圍的預測
②隨機森林的優勢是處理高緯度、特徵遺失、不平衡數據,但對低維數據可能表現不好
③隨機森林像黑盒子,有很多不好解釋的地方

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