算法基礎(chǔ):
1.有一個(gè)具有缺失值的數(shù)據(jù)集,其沿著中位數(shù)的1個(gè)標(biāo)準(zhǔn)偏差擴(kuò)散。有多少數(shù)據(jù)不受影響?
答: 因?yàn)?,?shù)據(jù)分布在中位數(shù),我們假設(shè)它是正態(tài)分布。
我們知道,在正態(tài)分布中,約68%的數(shù)據(jù)位于與平均值(or mode, median)1個(gè)標(biāo)準(zhǔn)差,這使得大約有32%的數(shù)據(jù)不受影響。因此,約32%的數(shù)據(jù)不會(huì)受到缺失值的影響。
2.為什么Naive Bayes是‘樸素’的?
答: 因?yàn)樗僭O(shè)數(shù)據(jù)集中的所有特征是同等重要的,并且相互獨(dú)立。
3.在Naive Bayes算法下,解釋先驗(yàn)概率、似然性、邊際似然性?P(Y|X)
答:
先驗(yàn)概率P(X):是因變量在數(shù)據(jù)集中的比例。沒有進(jìn)步一信息的情況下,這是對(duì)類別的最接近的猜想。例如:在數(shù)據(jù)集中,因變量是二進(jìn)制(1和0)。1(垃圾郵件)的比例為70%,0(非垃圾郵件)的比例為30%。因此,我們可以估計(jì)有70%的可能性將任何新電子郵件歸類為垃圾郵件。
似然性P(Y|X):Likelihood是在給定的其他變量存在下將給定觀測(cè)值分類為1的概率。例如:在以前的垃圾短信中使用“免費(fèi)”一詞的可能性是可能的。
邊際似然性:Marginal likelihood是,“免費(fèi)”一詞在任何消息中使用的概率,P(Y|X1) + P(Y|X2) + P(Y|X3) + ... + P(Y|XN);
4.k-NN與k-Means聚類有什么不同?
答:kmeans是無監(jiān)督的,而kNN是有監(jiān)督的。kmeans是聚類算法,而kNN是一種分類(回歸)算法。
kmeans算法:將數(shù)據(jù)集劃分為簇,并且簇中的點(diǎn)是同類的并且彼此接近。該算法試圖在這些簇之間保持足夠的可分離性。由于無監(jiān)督的性質(zhì),簇沒有標(biāo)簽。
kNN算法:試圖基于其k個(gè)鄰居對(duì)未標(biāo)記的實(shí)例進(jìn)行分類。kNN也屬于“懶惰學(xué)習(xí)”。因此,它不使用訓(xùn)練數(shù)據(jù)對(duì)未知數(shù)據(jù)集進(jìn)行分類。
5.TPR和Recall有什么關(guān)系?
答:TPR就是Recall。TPR = Recall = TP/(TP + FN), FPR = FP/(FP + TN)。
TPR:將正樣本劃分為正樣本的概率;
FPR:將負(fù)樣本劃分為正樣本的概率;
6.在處理數(shù)據(jù)集時(shí),如何選擇重要變量?解釋你的方法。
答:
1). 在選擇重要變量之前刪除相關(guān)變量(PCA之前也要做);
2). L1正則化技術(shù);
3). 測(cè)量可用特征集的信息增益,并相應(yīng)地選擇top-n;
4). 使用隨機(jī)森林,Xgboost,繪制變量重要性圖表;
5). 使用線性回歸并根據(jù)p值選擇變量;
7.協(xié)方差和相關(guān)性有什么區(qū)別?
答:相關(guān)性是協(xié)方差的標(biāo)準(zhǔn)化形式。
協(xié)方差很難比較。例如:如果我們計(jì)算工資($)和年齡(年)的協(xié)方差,我們將得到不同的協(xié)方差,因?yàn)樗鼈兙哂胁坏鹊某叨榷鵁o法進(jìn)行比較。為了對(duì)抗這種情況,我們計(jì)算相關(guān)性以獲得介于-1和1之間的值,而不管它們各自的比例。
8.兩者都是基于樹的算法,隨機(jī)森林與GBM有何不同?
答:隨機(jī)森林是bagging策略,而GBM是boosting。
Bagging:使用隨機(jī)采樣,將數(shù)據(jù)集分成n個(gè)樣本集。然后每個(gè)模型使用獨(dú)立的學(xué)習(xí)算法,在所有樣本上構(gòu)建模型。之后,使用投票或平均來組合結(jié)果預(yù)測(cè)。Bagging是并行的。
Boosting:算法每一輪結(jié)束,給誤分類的樣本賦予更高的權(quán)重,以便于他們?cè)谙乱惠喣軌虮患m正。算法一直執(zhí)行,直到達(dá)到預(yù)定步數(shù)或達(dá)到預(yù)定的準(zhǔn)確度為止。
- a. 隨機(jī)森林通過降低方差,來提高模型的準(zhǔn)確度。樹之間是不相關(guān)的,使方差減少程度最大化;
- b. GBM通過降低模型中的偏差和方差,來提高模型的精度;
9.運(yùn)行二分類樹算法很容易。您知道樹分裂是如何發(fā)生的,即樹如何決定在根節(jié)點(diǎn)和后續(xù)節(jié)點(diǎn)分割哪個(gè)變量?
答:可以通過“信息增益”,“信息增益率”,“Gini指數(shù)”來決定根節(jié)點(diǎn)的分割變量。選擇能讓子節(jié)點(diǎn)純度最高的屬性作為切分變量。
ID3: g(D,A) = H(D) - H(D|A)
C4.5: gr(D,A) = g(D,A) / HA(D)
CART: gini(p) = ∑pk(1-pk) = 1 - ∑pk^2
10.考慮到眾多的機(jī)器學(xué)習(xí)算法,給定一個(gè)數(shù)據(jù)集,您如何決定使用哪一個(gè)?
答:機(jī)器學(xué)習(xí)算法的選擇完全取決于數(shù)據(jù)類型。
1. 如果給出的數(shù)據(jù)集具有線性,則線性回歸將是最佳算法;
2. 如果您決定使用圖像,音頻,那么神經(jīng)網(wǎng)絡(luò)將幫助您構(gòu)建一個(gè)強(qiáng)大的模型;
3. 如果數(shù)據(jù)包含非線性相互作用,那么應(yīng)該選擇boosting或bagging算法;
4. 如果業(yè)務(wù)需求是構(gòu)建可以部署的模型,那么我們將使用回歸或決策樹模型(易于解釋和解釋)而不是像SVM,GBM等黑盒算法。
線性 or 非線性:
1.在處理時(shí)間序列數(shù)據(jù)時(shí),如何構(gòu)建高精度模型?您從決策樹算法開始,因?yàn)槟浪诟鞣N數(shù)據(jù)上都能很好地工作。之后,您嘗試了時(shí)間序列回歸模型,并且比決策樹模型具有更高的準(zhǔn)確性。這會(huì)發(fā)生嗎?為什么?
答: 因?yàn)闀r(shí)間序列數(shù)據(jù)具有線性關(guān)系,而決策樹更適合處理具有非線性關(guān)系的數(shù)據(jù),不能很好地處理線性關(guān)系。
時(shí)間序列數(shù)據(jù)已知具有線性。另一方面,決策樹算法是能夠最好地檢測(cè)非線性相互作用的。決策樹之所以不能提供robust的預(yù)測(cè),是因?yàn)樗荒芟窕貧w模型一樣很好的映射出線性關(guān)系。因此,我們知道,在給定數(shù)據(jù)集滿足線性假設(shè)的條件下,一個(gè)線性的回歸模型可以提供穩(wěn)健的預(yù)測(cè)結(jié)果。
2.在分析模型后,您的經(jīng)理已經(jīng)告知您的回歸模型正在遭受多重共線性。你該如何檢查這個(gè)問題?在不丟失任何信息的情況下,可以構(gòu)建更好的模型嗎?
答:為了檢查多重共線性,可以計(jì)算方差膨脹因子來檢查多重共線性的存在,或者使用相關(guān)矩陣來識(shí)別變量之間的相關(guān)性【設(shè)閾值】。
我們可以創(chuàng)建一個(gè)相關(guān)矩陣來識(shí)別和刪除相關(guān)性超過75%的變量(確定閾值是主觀的)。另外,我們可以使用計(jì)算VIF(方差膨脹因子)來檢查多重共線性的存在。
VIF <= 4,表明沒有多重共線性;
VIF >= 10,表示存在嚴(yán)重的多重共線性;
此外,我們可以使用容差作為多重共線性的指標(biāo)。
但是,刪除相關(guān)變量可能會(huì)導(dǎo)致信息丟失。為了保留這些變量,我們可以使用帶懲罰項(xiàng)的回歸模型,如Ridge或Lasso回歸。此外,我們可以在相關(guān)變量中添加一些隨機(jī)噪聲,以使變量彼此不同。但是,添加噪聲可能會(huì)影響預(yù)測(cè)精度,因此應(yīng)謹(jǐn)慎使用此方法。
3.如果特征維度大于樣本數(shù),為什么最小二乘不適用?哪種技術(shù)最好用?為什么?
答:在高維數(shù)據(jù)中,我們不能使用經(jīng)典回歸技術(shù),因?yàn)樗鼈兊募僭O(shè)往往會(huì)不成立【存在完全共線性,多重共線性問題】。
我們不能再計(jì)算唯一的最小二乘系數(shù)估計(jì),方差變?yōu)闊o窮大,因此“普通最小二乘法”無法使用。
為了對(duì)抗這種情況,我們可以使用像Lasso,LARS,Ridge這樣的懲罰回歸方法,它可以縮小系數(shù)以減少方差。準(zhǔn)確地說,Ridge Regression在最小二乘估計(jì)具有較高方差的情況下效果最佳。
數(shù)據(jù)降維:
1.您將獲得一個(gè)包含1000列和100萬行的訓(xùn)練數(shù)據(jù)集。數(shù)據(jù)集基于分類問題。經(jīng)理要求您減少此數(shù)據(jù)的維度,以便減少模型計(jì)算時(shí)間。您的機(jī)器有內(nèi)存限制。你會(huì)怎么做?(你可以自由地做出實(shí)際的假設(shè))
答: 在有限的記憶機(jī)器上處理高維數(shù)據(jù)是一項(xiàng)艱巨的任務(wù),你的面試官會(huì)充分意識(shí)到這一點(diǎn)。以下是可用于解決此類情況的方法:
1. 由于我們有較低的RAM,我們應(yīng)該關(guān)閉我們機(jī)器中的所有其他應(yīng)用程序;
2. 對(duì)數(shù)據(jù)集進(jìn)行隨機(jī)抽樣,創(chuàng)建一個(gè)較小的數(shù)據(jù)集;
3. 數(shù)據(jù)降維,我們可以分離數(shù)值和分類變量,并刪除具有相關(guān)性的變量。
a. 對(duì)于數(shù)值變量,我們將使用相關(guān)性;
b. 對(duì)于類別變量,我們將使用卡方檢驗(yàn);
4. 使用PCA選擇可以解釋數(shù)據(jù)集中最大方差的主成分【方差最大的方向】;
5. 使用在線學(xué)習(xí)算法進(jìn)行預(yù)測(cè),例如Vowpal Wabbit;
6. 使用隨機(jī)梯度下降SGD;
7. 應(yīng)用我們的業(yè)務(wù)理解來估計(jì)所有的預(yù)測(cè)因子都會(huì)影響的響應(yīng)變量。但是,這是一種直觀的方法,未能識(shí)別有用的預(yù)測(cè)因子可能會(huì)導(dǎo)致信息的重大損失;
2.數(shù)據(jù)集包含許多變量,其中一些變量高度相關(guān)且您對(duì)此有所了解。您的經(jīng)理要求您運(yùn)行PCA。你會(huì)先刪除相關(guān)變量嗎?為什么?
答: 丟棄相關(guān)變量對(duì)PCA有顯著的影響。因?yàn)樵谙嚓P(guān)變量的存在下,由特定成分解釋的方差會(huì)膨脹。
例如:在數(shù)據(jù)集中有3個(gè)變量,其中2個(gè)變量是相關(guān)的。如果在這個(gè)數(shù)據(jù)集上運(yùn)行PCA,第一主分量將表現(xiàn)兩倍的方差(相比于刪去相關(guān)變量的數(shù)據(jù)集)。
此外,增加相關(guān)變量,使PCA將更加關(guān)注這些變量,這是誤導(dǎo)性的。
過擬合處理:
1.你的模型正遭受低偏差和高方差。您應(yīng)該使用哪種算法來解決它?為什么?
答: 低偏差、高方差說明模型在訓(xùn)練數(shù)據(jù)上產(chǎn)生了過擬合的現(xiàn)象,模型泛化能力很差。
在這種情況下,我們可以使用bagging算法(如隨機(jī)森林)來解決高方差的問題。Bagging方法通過重復(fù)隨機(jī)采樣,將一個(gè)數(shù)據(jù)集分割成多個(gè)子集,然后,單個(gè)學(xué)習(xí)算法使用這些子集生成一組模型。之后,使用投票(分類)或平均(回歸)方法來組合模型預(yù)測(cè)。
此外,為了處理高方差,可以通過以下幾種方式:
1. 使用regularization正則化技術(shù),使較高的模型參數(shù)受到懲罰,降低模型復(fù)雜性【避免過擬合】;
2. 對(duì)數(shù)據(jù)降維,可能是數(shù)據(jù)維度太高,模型無法找到有用的特征;
*基于偏差的誤差*:所謂基于偏差的誤差是,我們模型預(yù)期的預(yù)測(cè)與我們將要預(yù)測(cè)的真實(shí)值之間的差值。偏差是用來衡量我們的模型的預(yù)測(cè)同真實(shí)值的差異。
*基于方差的誤差*:基于方差的誤差描述了一個(gè)模型對(duì)給定的數(shù)據(jù)進(jìn)行預(yù)測(cè)的可變性。比如,當(dāng)你多次重復(fù)構(gòu)建完整模型的進(jìn)程時(shí),方差是,在預(yù)測(cè)模型的不同關(guān)系間變化的多少。
- 方差:是形容數(shù)據(jù)分散程度的,算是“無監(jiān)督的”,客觀的指標(biāo);
- 偏差:形容數(shù)據(jù)跟我們期望的中心差得有多遠(yuǎn),算是“有監(jiān)督的”,有人的知識(shí)參與的指標(biāo)。
- 越復(fù)雜的模型偏差越小,而方差越大。
2.你現(xiàn)在急于建立一個(gè)高精度的模型。因此,您構(gòu)建了5個(gè)GBM模型,認(rèn)為增強(qiáng)算法可以達(dá)到預(yù)期目標(biāo)。不幸的是,這些模型的表現(xiàn)都不如基線分?jǐn)?shù)。最后,您決定將這些模型組合在一起。雖然,已知整體模型會(huì)恢復(fù)高精度,但您很遺憾。你在哪里錯(cuò)過的?
答: 模型之間可能存在相關(guān)性,所有模型對(duì)分類提供了相同的信息,導(dǎo)致準(zhǔn)確率沒有提升。
正如我們所知,集成學(xué)習(xí)是將弱學(xué)習(xí)器組合成強(qiáng)分類器。但是,只有當(dāng)分類器間不相關(guān)時(shí)才會(huì)顯示出良好的性能。因?yàn)槲覀兪褂昧?個(gè)GBM模型,但準(zhǔn)確度并沒有改進(jìn),說明這些模型是具有相關(guān)性的。如果模型間存在相關(guān)性,則這些模型提供了相同的信息,所以對(duì)分類貢獻(xiàn)相同。
因此,集成學(xué)習(xí)是建立在弱分類器之間是不相關(guān)的前提下。
3.什么情況下Ridge Regression要比Lasso Regression更適合?
答:在存在少量具有中/大影響的變量的情況下,使用Lasso Regression。在存在許多具有中/小效應(yīng)的變量的情況下,使用Ridge Regression。
從概念上講,Lasso同時(shí)進(jìn)行特征選擇和參數(shù)收縮,而Ridge回歸只進(jìn)行參數(shù)收縮。此外,Ridge回歸在最小二乘估計(jì)具有較高方差的情況下效果最佳。
數(shù)據(jù)處理問題:
1.在有關(guān)癌癥檢測(cè)的數(shù)據(jù)集,已經(jīng)構(gòu)建了一個(gè)分類模型,準(zhǔn)確率達(dá)到了96%。為什么你不應(yīng)該對(duì)你的模特感到滿意?你還能做什么?
答: 因?yàn)榘┌Y檢測(cè)是類別不均衡問題,類別不均衡問題不能用“準(zhǔn)確率”評(píng)價(jià)模型性能。
因?yàn)?6%可能只能正確地預(yù)測(cè)沒得病的人,但是我們實(shí)際關(guān)注的是少數(shù)的4%(真正被診斷患有癌癥的人)。
因此,為了評(píng)估模型性能,我們應(yīng)該使用Sensitivity(真正例率),Specificity(真假例率),F(xiàn)度量來確定分類器的類別性能。如果發(fā)現(xiàn)少數(shù)類別表現(xiàn)不佳,我們可以采取以下步驟:
1. 使用欠采樣,過采樣,或者SMOTE來使得數(shù)據(jù)平衡;
2. 利用AUC-ROC曲線進(jìn)行概率校準(zhǔn),尋找最優(yōu)閾值來改變預(yù)測(cè)閾值;
3. 為類別分配權(quán)值,使得少數(shù)類得到權(quán)值更大;
4. 使用數(shù)據(jù)異常檢測(cè),剔除異常值;
2.在時(shí)間序列【數(shù)據(jù)集】上,應(yīng)該使用怎樣的交叉驗(yàn)證?k-fold還是LOOCV?
答:這兩個(gè)都不行。
在時(shí)序數(shù)據(jù)集中,k-fold很麻煩,因?yàn)橛行┠J娇赡艽嬖谟诘?年、第5年,但是不存在于第3年,重新采樣數(shù)據(jù)集會(huì)分離這些趨勢(shì),然而我們可能是用后續(xù)的數(shù)據(jù)作為驗(yàn)證,這是不正確的。
但是,我們可以采用前向鏈策略的5-fold:
- fold 1: training [1], test[2]
- fold 2: training [1, 2], test[3]
- fold 3: training [1, 2, 3], test[4]
- fold 4: training [1, 2, 3, 4], test[5]
- fold 5: training [1, 2, 3, 4, 5], test[6]
3.您獲得的數(shù)據(jù)集包含超過30%缺失值的變量?比方說,在50個(gè)變量中,8個(gè)變量的缺失值高于30%。你將如何處理它們?
答:可以通過如下手段處理缺失值:
1. 為缺失值指定一個(gè)唯一類別,誰知道缺失值可能會(huì)破譯某些趨勢(shì);
2. 直接移除有缺失值的變量;
3. 基于距離的替換,kNN;
4. 基于密度的積累,密度聚類、變色龍等;
5. 基于重?cái)?shù)的替換;
6. 對(duì)缺失值進(jìn)行回歸預(yù)測(cè);
4.您正在處理分類問題。出于驗(yàn)證目的,您已將訓(xùn)練數(shù)據(jù)集隨機(jī)抽樣到訓(xùn)練和驗(yàn)證中。由于您的驗(yàn)證準(zhǔn)確性很高,因此您確信您的模型能夠在看不見的數(shù)據(jù)上工作得非常好。但是,在測(cè)試精度不佳后會(huì)感到震驚。什么地方出了錯(cuò)?
答:在分類問題中,應(yīng)該使用分層抽樣,而不是隨機(jī)抽樣。隨機(jī)抽樣無法保證類別均衡。
5.在k-means或kNN中,我們使用歐氏距離來計(jì)算最近鄰居之間的距離。為什么不用曼哈頓距離?
答:我們不使用曼哈頓距離,因?yàn)樗挥?jì)算水平或垂直距離,它有尺寸限制。
另一方面,歐幾里德度量可用于任何空間來計(jì)算距離。由于數(shù)據(jù)點(diǎn)可以存在于任何維度,因此歐幾里德距離是更可行的選擇。
6.什么時(shí)候在機(jī)器學(xué)習(xí)中需要regularization?
答:當(dāng)模型開始過擬合/欠擬合時(shí),正規(guī)化變得必要。
該技術(shù)引入了用于引入具有目標(biāo)函數(shù)的更多特征的成本項(xiàng)。因此,它試圖將許多變量的系數(shù)推到零,從而減少成本項(xiàng)。這有助于降低模型復(fù)雜性,以便模型可以更好地預(yù)測(cè)(泛化)
7.您對(duì)Bias Variance的trade off有何看法?
答:任何模型出現(xiàn)的錯(cuò)誤都可以用數(shù)學(xué)方法分解為三個(gè)部分。
以下是這些組件:
error = bias2 + variance + irreducible_error
偏差誤差:量化預(yù)測(cè)值與實(shí)際值的不同。高偏差誤差意味著我們有一個(gè)表現(xiàn)欠佳的模型;
方差誤差:量化了對(duì)同一觀察的預(yù)測(cè)如何彼此不同。高方差=過擬合,并且在訓(xùn)練之外的任何觀察中都表現(xiàn)不佳。