【面試】面試常見問題整理

  1. LR和SVM的區(qū)別

相同點(diǎn):
1、都是監(jiān)督、分類算法,且一般處理二分類問題
2、兩個(gè)方法都可以增加不同的正則化項(xiàng),如l1、l2等等
3、都是判別模型
3、如果不考慮核函數(shù),LR和SVM都是線性分類算法。也就是說他們的分類決策面都是線性的。

不同點(diǎn):
1、損失函數(shù)不同:LR用似然函數(shù);SVM用合頁損失函數(shù)。
這兩個(gè)損失函數(shù)的目的都是增加對(duì)分類影響較大的數(shù)據(jù)點(diǎn)的權(quán)重,減少與分類關(guān)系較小的數(shù)據(jù)點(diǎn)的權(quán)重
2、SVM只考慮支持向量,也就是和分類最相關(guān)的少數(shù)點(diǎn)。而邏輯回歸通過非線性映射,大大減小了離分類平面較遠(yuǎn)的點(diǎn)的權(quán)重,相對(duì)提升了與分類最相關(guān)的數(shù)據(jù)點(diǎn)的權(quán)重。所以, 線性SVM不直接依賴于數(shù)據(jù)分布,分類平面不受一類點(diǎn)影響;LR則受所有數(shù)據(jù)點(diǎn)的影響,如果數(shù)據(jù)不同類別strongly unbalance,一般需要先對(duì)數(shù)據(jù)做balancing。
3、在解決非線性問題時(shí),支持向量機(jī)采用核函數(shù)的機(jī)制,而LR通常不采用核函數(shù)的方法,做特征。因?yàn)镾VM只有少數(shù)幾個(gè)點(diǎn)運(yùn)算,LR要全部(計(jì)算量)
4、Linear SVM依賴數(shù)據(jù)表達(dá)的距離測度,所以需要對(duì)數(shù)據(jù)先做歸一化;LR不受其影響,但是如果要正則的話也要?dú)w一化
5、SVM不能產(chǎn)生概率,LR可以產(chǎn)生概率
6、SVM的目標(biāo)函數(shù)就自帶正則(目標(biāo)函數(shù)中的1/2||w||^2項(xiàng)),這就是為什么SVM是結(jié)構(gòu)風(fēng)險(xiǎn)最小化算法的原因。而LR必須另外在損失函數(shù)上添加正則項(xiàng)。

  1. 正則化;L1正則和L2正則的區(qū)別
    http://blog.csdn.net/jinping_shi/article/details/52433975

正則化是針對(duì)過擬合而提出的。在模型的經(jīng)驗(yàn)風(fēng)險(xiǎn)上加入正則化項(xiàng)作為結(jié)構(gòu)風(fēng)險(xiǎn),并使用一個(gè)比例來權(quán)衡模型復(fù)雜度與經(jīng)驗(yàn)風(fēng)險(xiǎn)的權(quán)重。

范數(shù)
L0范數(shù):不為0的元素個(gè)數(shù)
L1范數(shù): 為x向量各個(gè)元素絕對(duì)值之和。
L2范數(shù): 為x向量各個(gè)元素平方和的1/2次方
Lp范數(shù): 為x向量各個(gè)元素絕對(duì)值p次方和的1/p次方.

作用
L1正則化可以產(chǎn)生稀疏模型,可以用于特征選擇
L2正則化可以防止模型過擬合
一定程度上,L1也可以防止過擬合

奧卡姆剃刀原理,能夠很好的解釋已知數(shù)據(jù)并且十分簡單才是最好的模型。

L1和L2正則先驗(yàn)分別服從什么分布,L1是拉普拉斯分布,L2是高斯分布

  1. 簡單介紹一下SVM,哪些核函數(shù),哪些參數(shù)
    https://www.zhihu.com/question/37928831?sort=created

基本認(rèn)知:支持向量機(jī)(support vector machine,SVM)是一種二類分類模型,其基本模型定義為特征空間上的間隔最大的線性分類器。模型為分離超平面,策略為間隔最大化,學(xué)習(xí)算法為凸二次優(yōu)化。

核函數(shù)有線性核、高斯核、多項(xiàng)式核等,一般使用線性核核高斯核。多項(xiàng)式核有參數(shù)p表達(dá)p次多項(xiàng)式。高斯核參數(shù)高斯徑向基的sigma

使用SVM要做歸一化處理;RBF核耗時(shí)

下面是吳恩達(dá)的見解:
1.如果Feature的數(shù)量很大,跟樣本數(shù)量差不多,這時(shí)候選用LR或者是Linear Kernel的SVM
2.如果Feature的數(shù)量比較小,樣本數(shù)量一般,不算大也不算小,選用SVM+Gaussian Kernel
3.如果Feature的數(shù)量比較小,而樣本數(shù)量很多,需要手工添加一些feature變第一種情況

  1. 過擬合和解決方法

過度擬合訓(xùn)練數(shù)據(jù),使得模型過于復(fù)雜導(dǎo)致的。表現(xiàn)為對(duì)訓(xùn)練數(shù)據(jù)效果良好,對(duì)測試數(shù)據(jù)效果很差。
處理方法有:
1、更多數(shù)據(jù):數(shù)據(jù)量、數(shù)據(jù)增強(qiáng)、加噪聲
2、正則化:約束模型復(fù)雜度
3、減少特征
4、早停止
5、交叉驗(yàn)證
6、使用多個(gè)模型:如集成方法的Boosting、Bagging;或神經(jīng)網(wǎng)絡(luò)的dropout

  1. 分類問題的評(píng)價(jià)標(biāo)準(zhǔn)

準(zhǔn)確率、精確率、召回率、F1值、AUC值;PR曲線、ROC曲線

(實(shí)際,猜測) TP:真,真;FP:假真;TN:真,假;FN:假假
準(zhǔn)確率acc=TP+TN/TP+TN+FP+FN
精確率P=TP/TP+FP
召回率R=TP/TP+FN
F1值=2PR/P+R
AUC值=ROC曲線下的面積

PR曲線,y軸為精確率,x軸為召回率,越偏右上越好(都很高)
ROC曲線,y軸為真正例率,x軸為假正例率,越偏左上越好
真正例率TPR=TP/TP+FP;假正例率FPR=FP/TN+FP

AUC表示正例排在負(fù)例前面的概率。
AUC表示,隨機(jī)抽取一個(gè)正樣本和一個(gè)負(fù)樣本,分類器正確給出正樣本的score高于負(fù)樣本的概率。

另外,為什么取AUC較好?因?yàn)橐粋€(gè)二分類問題,如果你取P或R的話,那么你的評(píng)價(jià)結(jié)果和你閾值的選取關(guān)系很大。AUC能很好描述模型整體性能的高低。

  1. 熵、信息增益、信息增益比、基尼指數(shù)






  2. 介紹LR,為啥用的是似然函數(shù)不用最小二乘?


  3. 梯度下降法和擬牛頓法

梯度下降法的優(yōu)化思想是用當(dāng)前位置負(fù)梯度方向作為搜索方向,因?yàn)樵摲较驗(yàn)楫?dāng)前位置的最快下降方向,所以也被稱為是”最速下降法“。
批量梯度下降、隨機(jī)梯度下降、小批量梯度下降。
最速下降法越接近目標(biāo)值,步長越小,前進(jìn)越慢。

從本質(zhì)上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。
牛頓法目光更加長遠(yuǎn),所以少走彎路;相對(duì)而言,梯度下降法只考慮了局部的最優(yōu),沒有全局思想。
從幾何上說,牛頓法就是用一個(gè)二次曲面去擬合你當(dāng)前所處位置的局部曲面,而梯度下降法是用一個(gè)平面去擬合當(dāng)前的局部曲面,通常情況下,二次曲面的擬合會(huì)比平面更好,所以牛頓法選擇的下降路徑會(huì)更符合真實(shí)的最優(yōu)下降路徑。
牛頓法的優(yōu)缺點(diǎn)總結(jié):
  優(yōu)點(diǎn):二階收斂,收斂速度快;
  缺點(diǎn):牛頓法是一種迭代算法,每一步都需要求解目標(biāo)函數(shù)的Hessian矩陣的逆矩陣,計(jì)算比較復(fù)雜。

擬牛頓法的本質(zhì)思想是改善牛頓法每次需要求解復(fù)雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來近似Hessian矩陣的逆,從而簡化了運(yùn)算的復(fù)雜度。

  1. 數(shù)據(jù)不平衡問題

采樣:過采樣、欠采樣
合成數(shù)據(jù):SMOTE
模型中的樣本權(quán)重
異常點(diǎn)檢測
AUC:因?yàn)镽OC曲線有個(gè)很好的特性:當(dāng)測試集中的正負(fù)樣本的分布變換的時(shí)候,ROC曲線能夠保持不變。在實(shí)際的數(shù)據(jù)集中經(jīng)常會(huì)出現(xiàn)樣本類不平衡,即正負(fù)樣本比例差距較大,而且測試數(shù)據(jù)中的正負(fù)樣本也可能隨著時(shí)間變化。

  1. 特征選擇

Filter:過濾法,按照發(fā)散性或者相關(guān)性對(duì)各個(gè)特征進(jìn)行評(píng)分,設(shè)定閾值或者待選擇閾值的個(gè)數(shù),選擇特征。
Wrapper:包裝法,根據(jù)目標(biāo)函數(shù)(通常是預(yù)測效果評(píng)分),每次選擇若干特征,或者排除若干特征。
Embedded:集成法,先使用某些機(jī)器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練,得到各個(gè)特征的權(quán)值系數(shù),根據(jù)系數(shù)從大到小選擇特征。類似于Filter方法,但是是通過訓(xùn)練來確定特征的優(yōu)劣。

Filter:【自變量、目標(biāo)變量的聯(lián)系】
方差選擇法,使用方差選擇法,先要計(jì)算各個(gè)特征的方差,然后根據(jù)閾值,選擇方差大于閾值的特征。
相關(guān)系數(shù)法,使用相關(guān)系數(shù)法,先要計(jì)算各個(gè)特征對(duì)目標(biāo)值的相關(guān)系數(shù)以及相關(guān)系數(shù)的P值。
卡方檢驗(yàn)、互信息法
變量間的相關(guān)系數(shù)

Wrapper:【目標(biāo)函數(shù)判斷】
遞歸特征消除法,遞歸消除特征法使用一個(gè)基模型來進(jìn)行多輪訓(xùn)練,每輪訓(xùn)練后,消除若干權(quán)值系數(shù)的特征,再基于新的特征集進(jìn)行下一輪訓(xùn)練。【多輪訓(xùn)練尋優(yōu),RFE】

Embedded:【學(xué)習(xí)模型自身評(píng)價(jià)】
正則化:使用帶懲罰項(xiàng)的基模型,除了篩選出特征外,同時(shí)也進(jìn)行了降維。Lasso、Ridge
基于樹模型的特征選擇法:樹模型中GBDT也可用來作為基模型進(jìn)行特征選擇

降維

PCA
LDA

  1. 數(shù)據(jù)預(yù)處理
    唯一值:刪除
    缺失值:直接使用,如決策樹
    ???: 刪除特征,對(duì)于大量缺失的
    ???: 缺失值補(bǔ)全
    缺失值補(bǔ)全:均值插補(bǔ)、同類均值插補(bǔ)、建模預(yù)測、高維映射(one-hot)、多重插補(bǔ)(估計(jì)+噪聲)、壓縮感知和矩陣補(bǔ)全
    特征編碼:二元化、獨(dú)熱編碼(可處理非數(shù)值屬性,擴(kuò)充特征,屬性稀疏)
    數(shù)據(jù)標(biāo)準(zhǔn)化:使樣本數(shù)據(jù)縮放到某個(gè)指定范圍。原因:數(shù)量級(jí)大的屬性占主導(dǎo),收斂速度慢,所有依賴于樣本距離的算法對(duì)數(shù)據(jù)的數(shù)量級(jí)都比較敏感。方法:min-max,z-score,
    數(shù)據(jù)正則化:正則化過程針對(duì)單個(gè)樣本,對(duì)核方法計(jì)算樣本相似性有效

  2. RF、GBDT、XGBoost調(diào)參

GBDT:
Boosting相關(guān):
n_estimators:最大迭代次數(shù),和learning_rate一起考慮.>100
learning_rate:權(quán)重縮減系數(shù)ν,也稱作步長。作為正則化項(xiàng)。0.01~0.1。小learning_rate,CV合適的n_estimators
subsample:正則化方式(防止過擬合)中的子采樣,不放回抽樣,推薦在[0.5, 0.8]
CART相關(guān):
max_features:特征太多可用
max_depth:常用的可以取值10-100之間。樣本多可用。
min_samples_split:看樣本數(shù)量
min_samples_leaf:看樣本數(shù)量
min_weight_fraction_leaf:一般來說,如果我們有較多樣本有缺失值,或者分類樹樣本的分布類別偏差很大,就會(huì)引入樣本權(quán)重,這時(shí)我們就要注意這個(gè)值了。
max_leaf_nodes:與max_depth二選一
min_impurity_split:一般不改
random_state

RF:
Bagging相關(guān):
n_estimators:迭代次數(shù),重要!
oob_score:是否采用袋外樣本來評(píng)估模型的好壞,建議True,泛化。
criterion:評(píng)價(jià)標(biāo)準(zhǔn),默認(rèn)分類Gini,可以信息增益;回歸mse,可以mae
CART相關(guān):
max_features:重要
max_depth:重要
min_samples_split:重要
min_samples_leaf:重要
min_weight_fraction_leaf
max_leaf_nodes
min_impurity_split

XGBoost:
'booster':'gbtree',
'objective': 'multi:softmax', #多分類的問題
'num_class':10, # 類別數(shù),與 multisoftmax 并用
'gamma':0.1, # 用于控制是否后剪枝的參數(shù),越大越保守,一般0.1、0.2這樣子。
'max_depth':12, # 構(gòu)建樹的深度,越大越容易過擬合
'lambda':2, # 控制模型復(fù)雜度的權(quán)重值的L2正則化項(xiàng)參數(shù),參數(shù)越大,模型越不容易過擬合。
'subsample':0.7, # 隨機(jī)采樣訓(xùn)練樣本
'colsample_bytree':0.7, # 生成樹時(shí)進(jìn)行的列采樣
'min_child_weight':3,
這個(gè)參數(shù)默認(rèn)是 1,是每個(gè)葉子里面 h 的和至少是多少,對(duì)正負(fù)樣本不均衡時(shí)的 0-1 分類而言,假設(shè) h 在 0.01 附近,min_child_weight 為 1 意味著葉子節(jié)點(diǎn)中最少需要包含 100 個(gè)樣本。
這個(gè)參數(shù)非常影響結(jié)果,控制葉子節(jié)點(diǎn)中二階導(dǎo)的和的最小值,該參數(shù)值越小,越容易 overfitting。
'silent':0 ,#設(shè)置成1則沒有運(yùn)行信息輸出,最好是設(shè)置為0.
'eta': 0.007, # 如同學(xué)習(xí)率
'seed':1000,
'nthread':7,# cpu 線程數(shù)
'eval_metric': 'auc'

  1. LR、SVM調(diào)參
    https://www.cnblogs.com/pinard/p/6035872.html
    LR:
    penalty:l1/l2
    solver:liblinear、lbfgs擬牛頓法、newton-cg牛頓法、sag隨機(jī)平均梯度下降
    multi_class/class_weight/sample_weight

SVM:
C表示模型對(duì)誤差的懲罰系數(shù);gamma反映了數(shù)據(jù)映射到高維特征空間后的分布,gamma越大,支持向量越多,gamma值越小,支持向量越少。C越大,模型越容易過擬合;C越小,模型越容易欠擬合。gamma越小,模型的泛化性變好,但過小,模型實(shí)際上會(huì)退化為線性模型;gamma越大,理論上SVM可以擬合任何非線性數(shù)據(jù)。
GridSearchCV
1)一般推薦在做訓(xùn)練之前對(duì)數(shù)據(jù)進(jìn)行歸一化,當(dāng)然測試集中的數(shù)據(jù)也需要?dú)w一化。。
2)在特征數(shù)非常多的情況下,或者樣本數(shù)遠(yuǎn)小于特征數(shù)的時(shí)候,使用線性核,效果已經(jīng)很好,并且只需要選擇懲罰系數(shù)C即可。
3)在選擇核函數(shù)時(shí),如果線性擬合不好,一般推薦使用默認(rèn)的高斯核'rbf'。這時(shí)我們主要需要對(duì)懲罰系數(shù)C和核函數(shù)參數(shù)γ進(jìn)行艱苦的調(diào)參,通過多輪的交叉驗(yàn)證選擇合適的懲罰系數(shù)C和核函數(shù)參數(shù)γ。
4)理論上高斯核不會(huì)比線性核差,但是這個(gè)理論卻建立在要花費(fèi)更多的時(shí)間來調(diào)參上。所以實(shí)際上能用線性核解決問題我們盡量使用線性核。

  1. RF、GBDT、XGBoost評(píng)分
    XGBoost:特征評(píng)分可以看成是被用來分離決策樹的次數(shù)
    RF:Gini
    GBDT:平方損失

RF計(jì)算某個(gè)特征X的重要性時(shí),具體步驟如下:
1)對(duì)每一顆決策樹,選擇相應(yīng)的袋外數(shù)據(jù)(out of bag,OOB)?計(jì)算袋外數(shù)據(jù)誤差,記為errOOB1.
所謂袋外數(shù)據(jù)是指,每次建立決策樹時(shí),通過重復(fù)抽樣得到一個(gè)數(shù)據(jù)用于訓(xùn)練?決策樹,這時(shí)還有大約1/3的數(shù)據(jù)沒有被利用,沒有參與決策樹的建立。這部分?jǐn)?shù)據(jù)可以用于對(duì)決策樹的性能進(jìn)行評(píng)估,計(jì)算模型的預(yù)測錯(cuò)誤率,稱為袋外數(shù)據(jù)誤差。
?這已經(jīng)經(jīng)過證明是無偏估計(jì)的,所以在隨機(jī)森林算法中不需要再進(jìn)行交叉驗(yàn)證或者單獨(dú)的測試集來獲取測試集誤差的無偏估計(jì)。
?2)隨機(jī)對(duì)袋外數(shù)據(jù)OOB所有樣本的特征X加入噪聲干擾(可以隨機(jī)改變樣本在特征X處的值),再次計(jì)算袋外數(shù)據(jù)誤差,記為errOOB2。
3)?假設(shè)森林中有N棵樹,則特征X的重要性=∑(errOOB2-errOOB1)/N。這個(gè)數(shù)值之所以能夠說明特征的重要性是因?yàn)椋绻尤腚S機(jī)噪聲后,袋外數(shù)據(jù)準(zhǔn)確率大幅度下降(即errOOB2上升),說明這個(gè)特征對(duì)于樣本的預(yù)測結(jié)果有很大影響,進(jìn)而說明重要程度比較高。

  1. 距離度量
    閔可夫斯基距離(歐式、曼哈頓)
    馬氏距離:馬氏距離的計(jì)算中考慮了在不同方向上尺度單位。例:判斷未知樣本歸屬哪個(gè)樣本集,考慮了不同維度方差信息。
    互信息
    余弦相似度
    相關(guān)系數(shù)

KL散度

  1. 邏輯回歸LR的特征為什么要先離散化
    http://blog.csdn.net/yang090510118/article/details/39478033

在工業(yè)界,很少直接將連續(xù)值作為特征喂給邏輯回歸模型,而是將連續(xù)特征離散化為一系列0、1特征交給邏輯回歸模型,這樣做的優(yōu)勢有以下幾點(diǎn):

  1. 稀疏向量內(nèi)積乘法運(yùn)算速度快,計(jì)算結(jié)果方便存儲(chǔ),容易scalable(擴(kuò)展)。

  2. 離散化后的特征對(duì)異常數(shù)據(jù)有很強(qiáng)的魯棒性:比如一個(gè)特征是年齡>30是1,否則0。如果特征沒有離散化,一個(gè)異常數(shù)據(jù)“年齡300歲”會(huì)給模型造成很大的干擾。

  3. 邏輯回歸屬于廣義線性模型,表達(dá)能力受限;單變量離散化為N個(gè)后,每個(gè)變量有單獨(dú)的權(quán)重,相當(dāng)于為模型引入了非線性,能夠提升模型表達(dá)能力,加大擬合。

  4. 離散化后可以進(jìn)行特征交叉,由M+N個(gè)變量變?yōu)镸*N個(gè)變量,進(jìn)一步引入非線性,提升表達(dá)能力。

  5. 特征離散化后,模型會(huì)更穩(wěn)定,比如如果對(duì)用戶年齡離散化,20-30作為一個(gè)區(qū)間,不會(huì)因?yàn)橐粋€(gè)用戶年齡長了一歲就變成一個(gè)完全不同的人。當(dāng)然處于區(qū)間相鄰處的樣本會(huì)剛好相反,所以怎么劃分區(qū)間是門學(xué)問。
    李沐少帥指出,模型是使用離散特征還是連續(xù)特征,其實(shí)是一個(gè)“海量離散特征+簡單模型” 同 “少量連續(xù)特征+復(fù)雜模型”的權(quán)衡。既可以離散化用線性模型,也可以用連續(xù)特征加深度學(xué)習(xí)。就看是喜歡折騰特征還是折騰模型了。通常來說,前者容易,而且可以n個(gè)人一起并行做,有成功經(jīng)驗(yàn);后者目前看很贊,能走多遠(yuǎn)還須拭目以待。
    大概的理解:
    1)計(jì)算簡單
    2)簡化模型
    3)增強(qiáng)模型的泛化能力,不易受噪聲的影響

  6. LR并行化

由邏輯回歸問題的求解方法中可以看出,無論是梯度下降法、牛頓法、擬牛頓法,計(jì)算梯度都是其最基本的步驟,并且L-BFGS通過兩步循環(huán)計(jì)算牛頓方向的方法,避免了計(jì)算海森矩陣。因此邏輯回歸的并行化最主要的就是對(duì)目標(biāo)函數(shù)梯度計(jì)算的并行化。
目標(biāo)函數(shù)的梯度向量計(jì)算中只需要進(jìn)行向量間的點(diǎn)乘和相加,可以很容易將每個(gè)迭代過程拆分成相互獨(dú)立的計(jì)算步驟,由不同的節(jié)點(diǎn)進(jìn)行獨(dú)立計(jì)算,然后歸并計(jì)算結(jié)果。

  1. LR與線性回歸

邏輯回歸和線性回歸首先都是廣義的線性回歸,
其次經(jīng)典線性模型的優(yōu)化目標(biāo)函數(shù)是最小二乘,而邏輯回歸則是似然函數(shù),
另外線性回歸在整個(gè)實(shí)數(shù)域范圍內(nèi)進(jìn)行預(yù)測,敏感度一致,而分類范圍,需要在[0,1]。邏輯回歸就是一種減小預(yù)測范圍,將預(yù)測值限定為[0,1]間的一種回歸模型,因而對(duì)于這類問題來說,邏輯回歸的魯棒性比線性回歸的要好。

  1. FM/FFM
    FM解決的問題:大規(guī)模稀疏數(shù)據(jù)下的特征組合問題。
    在傳統(tǒng)的線性模型如LR中,每個(gè)特征都是獨(dú)立的,如果需要考慮特征與特征直接的交互作用,可能需要人工對(duì)特征進(jìn)行交叉組合;


    image.png

    這是因?yàn)樵谙∈钘l件下,這樣的表示方法打破了特征的獨(dú)立性,能夠更好地挖掘特征之間的相關(guān)性。以上述電影為例,我們要估計(jì)用戶A和電影ST的關(guān)系w(A&ST)以更好地預(yù)測y,如果是簡單地考慮特征之間的共現(xiàn)情況來估計(jì)w(A&ST),從已有的訓(xùn)練樣本來看,這兩者并沒有共現(xiàn),因此學(xué)習(xí)出來的w(A&ST)=0。而實(shí)際上,A和ST應(yīng)該是存在某種聯(lián)系的,從用戶角度來看,A和B都看過SW,而B還看過ST,說明A也可能喜歡ST,說明A很有可能也喜歡ST。而通過向量v來表示用戶和電影,任意兩兩之間的交互都會(huì)影響v的更新,從前面舉的例子就可以看過,A和B看過SW,這樣的交互關(guān)系就會(huì)導(dǎo)致v(ST)的學(xué)習(xí)更新,因此通過向量v的學(xué)習(xí)方式能夠更好的挖掘特征間的相互關(guān)系,尤其在稀疏條件下。
    FM 對(duì)比 SVM
    看到上面的式子,是不是覺得跟FM特別像?SVM和FM的主要區(qū)別在于,SVM的二元特征交叉參數(shù)是獨(dú)立的,如wij,而FM的二元特征交叉參數(shù)是兩個(gè)k維的向量vi、vj,這樣子的話,<vi,vj>和<vi,vk>就不是獨(dú)立的,而是相互影響的。
    為什么線性SVM在和多項(xiàng)式SVM在稀疏條件下效果會(huì)比較差呢?線性svm只有一維特征,不能挖掘深層次的組合特征在實(shí)際預(yù)測中并沒有很好的表現(xiàn);而多項(xiàng)式svn正如前面提到的,交叉的多個(gè)特征需要在訓(xùn)練集上共現(xiàn)才能被學(xué)習(xí)到,否則該對(duì)應(yīng)的參數(shù)就為0,這樣對(duì)于測試集上的case而言這樣的特征就失去了意義,因此在稀疏條件下,SVM表現(xiàn)并不能讓人滿意。而FM不一樣,通過向量化的交叉,可以學(xué)習(xí)到不同特征之間的交互,進(jìn)行提取到更深層次的抽象意義。
    此外,F(xiàn)M和SVM的區(qū)別還體現(xiàn)在:1)FM可以在原始形式下進(jìn)行優(yōu)化學(xué)習(xí),而基于kernel的非線性SVM通常需要在對(duì)偶形式下進(jìn)行;2)FM的模型預(yù)測是與訓(xùn)練樣本獨(dú)立,而SVM則與部分訓(xùn)練樣本有關(guān),即支持向量。
    FFM在FM的基礎(chǔ)上,增加了特征與場(特征類型)的交叉關(guān)系,

  2. AdaBoost
        這里對(duì)Adaboost算法的優(yōu)缺點(diǎn)做一個(gè)總結(jié)。
        Adaboost的主要優(yōu)點(diǎn)有:
        1)Adaboost作為分類器時(shí),分類精度很高
        2)在Adaboost的框架下,可以使用各種回歸分類模型來構(gòu)建弱學(xué)習(xí)器,非常靈活。
        3)作為簡單的二元分類器時(shí),構(gòu)造簡單,結(jié)果可理解。
        4)不容易發(fā)生過擬合
        Adaboost的主要缺點(diǎn)有:
        1)對(duì)異常樣本敏感,異常樣本在迭代中可能會(huì)獲得較高的權(quán)重,影響最終的強(qiáng)學(xué)習(xí)器的預(yù)測準(zhǔn)確性。

  3. 介紹GBDT

  4. 介紹RF

  5. 介紹XGBoost
    xgboost相比傳統(tǒng)gbdt有何不同?xgboost為什么快?xgboost如何支持并行?
    看了陳天奇大神的文章和slides,略抒己見,沒有面面俱到,不恰當(dāng)?shù)牡胤綒g迎討論:
    傳統(tǒng)GBDT以CART作為基分類器,xgboost還支持線性分類器,這個(gè)時(shí)候xgboost相當(dāng)于帶L1和L2正則化項(xiàng)的邏輯斯蒂回歸(分類問題)或者線性回歸(回歸問題)。
    傳統(tǒng)GBDT在優(yōu)化時(shí)只用到一階導(dǎo)數(shù)信息,xgboost則對(duì)代價(jià)函數(shù)進(jìn)行了二階泰勒展開,同時(shí)用到了一階和二階導(dǎo)數(shù)。順便提一下,xgboost工具支持自定義代價(jià)函數(shù),只要函數(shù)可一階和二階求導(dǎo)。
    xgboost在代價(jià)函數(shù)里加入了正則項(xiàng),用于控制模型的復(fù)雜度。正則項(xiàng)里包含了樹的葉子節(jié)點(diǎn)個(gè)數(shù)、每個(gè)葉子節(jié)點(diǎn)上輸出的score的L2模的平方和。從Bias-variance tradeoff角度來講,正則項(xiàng)降低了模型的variance,使學(xué)習(xí)出來的模型更加簡單,防止過擬合,這也是xgboost優(yōu)于傳統(tǒng)GBDT的一個(gè)特性。
    Shrinkage(縮減),相當(dāng)于學(xué)習(xí)速率(xgboost中的eta)。xgboost在進(jìn)行完一次迭代后,會(huì)將葉子節(jié)點(diǎn)的權(quán)重乘上該系數(shù),主要是為了削弱每棵樹的影響,讓后面有更大的學(xué)習(xí)空間。實(shí)際應(yīng)用中,一般把eta設(shè)置得小一點(diǎn),然后迭代次數(shù)設(shè)置得大一點(diǎn)。(補(bǔ)充:傳統(tǒng)GBDT的實(shí)現(xiàn)也有學(xué)習(xí)速率)
    列抽樣(column subsampling)。xgboost借鑒了隨機(jī)森林的做法,支持列抽樣,不僅能降低過擬合,還能減少計(jì)算,這也是xgboost異于傳統(tǒng)gbdt的一個(gè)特性。
    對(duì)缺失值的處理。對(duì)于特征的值有缺失的樣本,xgboost可以自動(dòng)學(xué)習(xí)出它的分裂方向。
    xgboost工具支持并行。boosting不是一種串行的結(jié)構(gòu)嗎?怎么并行的?注意xgboost的并行不是tree粒度的并行,xgboost也是一次迭代完才能進(jìn)行下一次迭代的(第t次迭代的代價(jià)函數(shù)里包含了前面t-1次迭代的預(yù)測值)。xgboost的并行是在特征粒度上的。我們知道,決策樹的學(xué)習(xí)最耗時(shí)的一個(gè)步驟就是對(duì)特征的值進(jìn)行排序(因?yàn)橐_定最佳分割點(diǎn)),xgboost在訓(xùn)練之前,預(yù)先對(duì)數(shù)據(jù)進(jìn)行了排序,然后保存為block結(jié)構(gòu),后面的迭代中重復(fù)地使用這個(gè)結(jié)構(gòu),大大減小計(jì)算量。這個(gè)block結(jié)構(gòu)也使得并行成為了可能,在進(jìn)行節(jié)點(diǎn)的分裂時(shí),需要計(jì)算每個(gè)特征的增益,最終選增益最大的那個(gè)特征去做分裂,那么各個(gè)特征的增益計(jì)算就可以開多線程進(jìn)行。
    可并行的近似直方圖算法。樹節(jié)點(diǎn)在進(jìn)行分裂時(shí),我們需要計(jì)算每個(gè)特征的每個(gè)分割點(diǎn)對(duì)應(yīng)的增益,即用貪心法枚舉所有可能的分割點(diǎn)。當(dāng)數(shù)據(jù)無法一次載入內(nèi)存或者在分布式情況下,貪心算法效率就會(huì)變得很低,所以xgboost還提出了一種可并行的近似直方圖算法,用于高效地生成候選的分割點(diǎn)。

xgboost使用經(jīng)驗(yàn)總結(jié)

  • 多類別分類時(shí),類別需要從0開始編碼
  • Watchlist不會(huì)影響模型訓(xùn)練。
  • 類別特征必須編碼,因?yàn)閤gboost把特征默認(rèn)都當(dāng)成數(shù)值型的
  • 調(diào)參:Notes on Parameter Tuning 以及 Complete Guide to Parameter Tuning in XGBoost (with codes in Python)
  • 訓(xùn)練的時(shí)候,為了結(jié)果可復(fù)現(xiàn),記得設(shè)置隨機(jī)數(shù)種子。
  • XGBoost的特征重要性是如何得到的?某個(gè)特征的重要性(feature score),等于它被選中為樹節(jié)點(diǎn)分裂特征的次數(shù)的和,比如特征A在第一次迭代中(即第一棵樹)被選中了1次去分裂樹節(jié)點(diǎn),在第二次迭代被選中2次…..那么最終特征A的feature score就是 1+2+….
  1. GBDT、RF、XGBoost的區(qū)別

  2. XGBoost和lightGBM

  3. 數(shù)據(jù)傾斜
    在計(jì)算數(shù)據(jù)的時(shí)候,數(shù)據(jù)的分散度不夠,導(dǎo)致大量的數(shù)據(jù)集中到了一臺(tái)或者幾臺(tái)機(jī)器上計(jì)算,這些數(shù)據(jù)的計(jì)算速度遠(yuǎn)遠(yuǎn)低于平均計(jì)算速度,導(dǎo)致整個(gè)計(jì)算過程過慢。
    如:表Join的Key集中;groupby的維度太小;count distinct的某特殊值太多;
    三個(gè)方面解決:
    業(yè)務(wù):特殊的,有大數(shù)據(jù)量的部分單獨(dú)計(jì)算;
    程序:做好剪裁后
    參數(shù):Hive防傾斜的參數(shù);hive.groupby.skewindata
    例子:
    采用sum() group by的方式來替換count(distinct)完成計(jì)算。
    空值過多導(dǎo)致傾斜的,Join時(shí)不考慮空值,或者加隨機(jī)數(shù)打散
    不同類型數(shù)據(jù)關(guān)聯(lián)導(dǎo)致傾斜的,統(tǒng)一數(shù)據(jù)類型
    做好剪裁工作Join

  4. MapReduce



    Input 代表的是需要處理的原始數(shù)據(jù),一共有3行。
    Splitting 表示分配任務(wù),這里把任務(wù)分給3臺(tái)機(jī)器同時(shí)處理,每臺(tái)機(jī)器只負(fù)責(zé)處理一行的數(shù)據(jù)。
    Mapping 表示這3臺(tái)機(jī)器具體要做的事情。在這里每臺(tái)機(jī)器要做的就是統(tǒng)計(jì)一行文字里的單詞頻率。這里就涉及到比較重要的一個(gè)概念,就是key和value。這里key就是單詞,value就是這個(gè)單詞在這一行出現(xiàn)的次數(shù)。
    Shuffling 表示對(duì)Mapping步驟產(chǎn)生的9行數(shù)據(jù),按照key進(jìn)行分組。這里分成了4組,每組交給一臺(tái)電腦去處理。
    Reducing 表示把相同key對(duì)應(yīng)的value相加,每個(gè)key最終只輸出一行,依然是key,value的形式輸出。
    Final result 表示把Reducing的輸出合并。

Mapper每次只處理一行數(shù)據(jù)。即Mapper的Input是數(shù)據(jù)庫中的一條記錄。
Reducer每次要處理的是相同key下的所有記錄,通常會(huì)是多行的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,481評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,697評(píng)論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,182評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,406評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,933評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,772評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,973評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評(píng)論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,644評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,953評(píng)論 2 373

推薦閱讀更多精彩內(nèi)容