算法基礎:
1.有一個具有缺失值的數(shù)據(jù)集摔吏,其沿著中位數(shù)的1個標準偏差擴散鸽嫂。有多少數(shù)據(jù)不受影響?
答: 因為舔腾,數(shù)據(jù)分布在中位數(shù)溪胶,我們假設它是正態(tài)分布。
我們知道稳诚,在正態(tài)分布中,約68%的數(shù)據(jù)位于與平均值(or mode, median)1個標準差瀑踢,這使得大約有32%的數(shù)據(jù)不受影響扳还。因此,約32%的數(shù)據(jù)不會受到缺失值的影響橱夭。
2.為什么Naive Bayes是‘樸素’的氨距?
答: 因為它假設數(shù)據(jù)集中的所有特征是同等重要的,并且相互獨立棘劣。
3.在Naive Bayes算法下俏让,解釋先驗概率、似然性茬暇、邊際似然性首昔?P(Y|X)
答:
先驗概率P(X):是因變量在數(shù)據(jù)集中的比例。沒有進步一信息的情況下糙俗,這是對類別的最接近的猜想勒奇。例如:在數(shù)據(jù)集中,因變量是二進制(1和0)巧骚。1(垃圾郵件)的比例為70%赊颠,0(非垃圾郵件)的比例為30%格二。因此,我們可以估計有70%的可能性將任何新電子郵件歸類為垃圾郵件竣蹦。
似然性P(Y|X):Likelihood是在給定的其他變量存在下將給定觀測值分類為1的概率顶猜。例如:在以前的垃圾短信中使用“免費”一詞的可能性是可能的。
邊際似然性:Marginal likelihood是痘括,“免費”一詞在任何消息中使用的概率长窄,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ù)集劃分為簇肆资,并且簇中的點是同類的并且彼此接近。該算法試圖在這些簇之間保持足夠的可分離性灶芝。由于無監(jiān)督的性質(zhì)郑原,簇沒有標簽。
kNN算法:試圖基于其k個鄰居對未標記的實例進行分類夜涕。kNN也屬于“懶惰學習”犯犁。因此,它不使用訓練數(shù)據(jù)對未知數(shù)據(jù)集進行分類女器。
5.TPR和Recall有什么關(guān)系酸役?
答:TPR就是Recall。TPR = Recall = TP/(TP + FN), FPR = FP/(FP + TN)驾胆。
TPR:將正樣本劃分為正樣本的概率涣澡;
FPR:將負樣本劃分為正樣本的概率;
6.在處理數(shù)據(jù)集時丧诺,如何選擇重要變量入桂?解釋你的方法。
答:
1). 在選擇重要變量之前刪除相關(guān)變量(PCA之前也要做);
2). L1正則化技術(shù)驳阎;
3). 測量可用特征集的信息增益抗愁,并相應地選擇top-n;
4). 使用隨機森林呵晚,Xgboost蜘腌,繪制變量重要性圖表;
5). 使用線性回歸并根據(jù)p值選擇變量劣纲;
7.協(xié)方差和相關(guān)性有什么區(qū)別逢捺?
答:相關(guān)性是協(xié)方差的標準化形式。
協(xié)方差很難比較癞季。例如:如果我們計算工資($)和年齡(年)的協(xié)方差劫瞳,我們將得到不同的協(xié)方差倘潜,因為它們具有不等的尺度而無法進行比較。為了對抗這種情況志于,我們計算相關(guān)性以獲得介于-1和1之間的值涮因,而不管它們各自的比例。
8.兩者都是基于樹的算法伺绽,隨機森林與GBM有何不同养泡?
答:隨機森林是bagging策略,而GBM是boosting奈应。
Bagging:使用隨機采樣澜掩,將數(shù)據(jù)集分成n個樣本集。然后每個模型使用獨立的學習算法杖挣,在所有樣本上構(gòu)建模型肩榕。之后,使用投票或平均來組合結(jié)果預測惩妇。Bagging是并行的株汉。
Boosting:算法每一輪結(jié)束,給誤分類的樣本賦予更高的權(quán)重歌殃,以便于他們在下一輪能夠被糾正乔妈。算法一直執(zhí)行,直到達到預定步數(shù)或達到預定的準確度為止氓皱。
- a. 隨機森林通過降低方差路召,來提高模型的準確度。樹之間是不相關(guān)的波材,使方差減少程度最大化优训;
- b. GBM通過降低模型中的偏差和方差,來提高模型的精度各聘;
9.運行二分類樹算法很容易。您知道樹分裂是如何發(fā)生的抡医,即樹如何決定在根節(jié)點和后續(xù)節(jié)點分割哪個變量躲因?
答:可以通過“信息增益”,“信息增益率”忌傻,“Gini指數(shù)”來決定根節(jié)點的分割變量大脉。選擇能讓子節(jié)點純度最高的屬性作為切分變量。
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.考慮到眾多的機器學習算法水孩,給定一個數(shù)據(jù)集镰矿,您如何決定使用哪一個?
答:機器學習算法的選擇完全取決于數(shù)據(jù)類型俘种。
1. 如果給出的數(shù)據(jù)集具有線性秤标,則線性回歸將是最佳算法;
2. 如果您決定使用圖像绝淡,音頻,那么神經(jīng)網(wǎng)絡將幫助您構(gòu)建一個強大的模型;
3. 如果數(shù)據(jù)包含非線性相互作用苍姜,那么應該選擇boosting或bagging算法;
4. 如果業(yè)務需求是構(gòu)建可以部署的模型牢酵,那么我們將使用回歸或決策樹模型(易于解釋和解釋)而不是像SVM,GBM等黑盒算法衙猪。
線性 or 非線性:
1.在處理時間序列數(shù)據(jù)時馍乙,如何構(gòu)建高精度模型?您從決策樹算法開始垫释,因為您知道它在各種數(shù)據(jù)上都能很好地工作丝格。之后,您嘗試了時間序列回歸模型棵譬,并且比決策樹模型具有更高的準確性显蝌。這會發(fā)生嗎?為什么茫船?
答: 因為時間序列數(shù)據(jù)具有線性關(guān)系琅束,而決策樹更適合處理具有非線性關(guān)系的數(shù)據(jù),不能很好地處理線性關(guān)系算谈。
時間序列數(shù)據(jù)已知具有線性涩禀。另一方面,決策樹算法是能夠最好地檢測非線性相互作用的然眼。決策樹之所以不能提供robust的預測艾船,是因為它不能像回歸模型一樣很好的映射出線性關(guān)系。因此高每,我們知道屿岂,在給定數(shù)據(jù)集滿足線性假設的條件下,一個線性的回歸模型可以提供穩(wěn)健的預測結(jié)果鲸匿。
2.在分析模型后爷怀,您的經(jīng)理已經(jīng)告知您的回歸模型正在遭受多重共線性。你該如何檢查這個問題带欢?在不丟失任何信息的情況下运授,可以構(gòu)建更好的模型嗎?
答:為了檢查多重共線性乔煞,可以計算方差膨脹因子來檢查多重共線性的存在吁朦,或者使用相關(guān)矩陣來識別變量之間的相關(guān)性【設閾值】。
我們可以創(chuàng)建一個相關(guān)矩陣來識別和刪除相關(guān)性超過75%的變量(確定閾值是主觀的)渡贾。另外逗宜,我們可以使用計算VIF(方差膨脹因子)來檢查多重共線性的存在。
VIF <= 4,表明沒有多重共線性纺讲;
VIF >= 10擂仍,表示存在嚴重的多重共線性;
此外刻诊,我們可以使用容差作為多重共線性的指標防楷。
但是,刪除相關(guān)變量可能會導致信息丟失则涯。為了保留這些變量复局,我們可以使用帶懲罰項的回歸模型,如Ridge或Lasso回歸粟判。此外亿昏,我們可以在相關(guān)變量中添加一些隨機噪聲,以使變量彼此不同档礁。但是角钩,添加噪聲可能會影響預測精度,因此應謹慎使用此方法呻澜。
3.如果特征維度大于樣本數(shù)递礼,為什么最小二乘不適用?哪種技術(shù)最好用羹幸?為什么脊髓?
答:在高維數(shù)據(jù)中,我們不能使用經(jīng)典回歸技術(shù)栅受,因為它們的假設往往會不成立【存在完全共線性将硝,多重共線性問題】。
我們不能再計算唯一的最小二乘系數(shù)估計屏镊,方差變?yōu)闊o窮大依疼,因此“普通最小二乘法”無法使用。
為了對抗這種情況而芥,我們可以使用像Lasso律罢,LARS,Ridge這樣的懲罰回歸方法棍丐,它可以縮小系數(shù)以減少方差弟翘。準確地說,Ridge Regression在最小二乘估計具有較高方差的情況下效果最佳骄酗。
數(shù)據(jù)降維:
1.您將獲得一個包含1000列和100萬行的訓練數(shù)據(jù)集。數(shù)據(jù)集基于分類問題悦冀。經(jīng)理要求您減少此數(shù)據(jù)的維度趋翻,以便減少模型計算時間。您的機器有內(nèi)存限制盒蟆。你會怎么做踏烙?(你可以自由地做出實際的假設)
答: 在有限的記憶機器上處理高維數(shù)據(jù)是一項艱巨的任務师骗,你的面試官會充分意識到這一點。以下是可用于解決此類情況的方法:
1. 由于我們有較低的RAM讨惩,我們應該關(guān)閉我們機器中的所有其他應用程序辟癌;
2. 對數(shù)據(jù)集進行隨機抽樣,創(chuàng)建一個較小的數(shù)據(jù)集荐捻;
3. 數(shù)據(jù)降維黍少,我們可以分離數(shù)值和分類變量,并刪除具有相關(guān)性的變量处面。
a. 對于數(shù)值變量厂置,我們將使用相關(guān)性;
b. 對于類別變量魂角,我們將使用卡方檢驗昵济;
4. 使用PCA選擇可以解釋數(shù)據(jù)集中最大方差的主成分【方差最大的方向】;
5. 使用在線學習算法進行預測野揪,例如Vowpal Wabbit访忿;
6. 使用隨機梯度下降SGD;
7. 應用我們的業(yè)務理解來估計所有的預測因子都會影響的響應變量斯稳。但是海铆,這是一種直觀的方法,未能識別有用的預測因子可能會導致信息的重大損失平挑;
2.數(shù)據(jù)集包含許多變量游添,其中一些變量高度相關(guān)且您對此有所了解。您的經(jīng)理要求您運行PCA通熄。你會先刪除相關(guān)變量嗎唆涝?為什么?
答: 丟棄相關(guān)變量對PCA有顯著的影響唇辨。因為在相關(guān)變量的存在下廊酣,由特定成分解釋的方差會膨脹。
例如:在數(shù)據(jù)集中有3個變量赏枚,其中2個變量是相關(guān)的亡驰。如果在這個數(shù)據(jù)集上運行PCA,第一主分量將表現(xiàn)兩倍的方差(相比于刪去相關(guān)變量的數(shù)據(jù)集)饿幅。
此外凡辱,增加相關(guān)變量,使PCA將更加關(guān)注這些變量栗恩,這是誤導性的透乾。
過擬合處理:
1.你的模型正遭受低偏差和高方差。您應該使用哪種算法來解決它?為什么乳乌?
答: 低偏差捧韵、高方差說明模型在訓練數(shù)據(jù)上產(chǎn)生了過擬合的現(xiàn)象,模型泛化能力很差汉操。
在這種情況下再来,我們可以使用bagging算法(如隨機森林)來解決高方差的問題。Bagging方法通過重復隨機采樣磷瘤,將一個數(shù)據(jù)集分割成多個子集芒篷,然后,單個學習算法使用這些子集生成一組模型膀斋。之后梭伐,使用投票(分類)或平均(回歸)方法來組合模型預測。
此外仰担,為了處理高方差糊识,可以通過以下幾種方式:
1. 使用regularization正則化技術(shù),使較高的模型參數(shù)受到懲罰摔蓝,降低模型復雜性【避免過擬合】赂苗;
2. 對數(shù)據(jù)降維,可能是數(shù)據(jù)維度太高贮尉,模型無法找到有用的特征拌滋;
*基于偏差的誤差*:所謂基于偏差的誤差是,我們模型預期的預測與我們將要預測的真實值之間的差值猜谚。偏差是用來衡量我們的模型的預測同真實值的差異败砂。
*基于方差的誤差*:基于方差的誤差描述了一個模型對給定的數(shù)據(jù)進行預測的可變性。比如魏铅,當你多次重復構(gòu)建完整模型的進程時昌犹,方差是,在預測模型的不同關(guān)系間變化的多少览芳。
- 方差:是形容數(shù)據(jù)分散程度的斜姥,算是“無監(jiān)督的”,客觀的指標沧竟;
- 偏差:形容數(shù)據(jù)跟我們期望的中心差得有多遠铸敏,算是“有監(jiān)督的”,有人的知識參與的指標悟泵。
- 越復雜的模型偏差越小杈笔,而方差越大。
2.你現(xiàn)在急于建立一個高精度的模型糕非。因此桩撮,您構(gòu)建了5個GBM模型敦第,認為增強算法可以達到預期目標。不幸的是店量,這些模型的表現(xiàn)都不如基線分數(shù)。最后鞠呈,您決定將這些模型組合在一起融师。雖然,已知整體模型會恢復高精度蚁吝,但您很遺憾旱爆。你在哪里錯過的?
答: 模型之間可能存在相關(guān)性窘茁,所有模型對分類提供了相同的信息怀伦,導致準確率沒有提升。
正如我們所知山林,集成學習是將弱學習器組合成強分類器房待。但是,只有當分類器間不相關(guān)時才會顯示出良好的性能驼抹。因為我們使用了5個GBM模型桑孩,但準確度并沒有改進,說明這些模型是具有相關(guān)性的框冀。如果模型間存在相關(guān)性流椒,則這些模型提供了相同的信息,所以對分類貢獻相同明也。
因此宣虾,集成學習是建立在弱分類器之間是不相關(guān)的前提下。
3.什么情況下Ridge Regression要比Lasso Regression更適合温数?
答:在存在少量具有中/大影響的變量的情況下绣硝,使用Lasso Regression。在存在許多具有中/小效應的變量的情況下帆吻,使用Ridge Regression唇兑。
從概念上講,Lasso同時進行特征選擇和參數(shù)收縮剪决,而Ridge回歸只進行參數(shù)收縮歧匈。此外,Ridge回歸在最小二乘估計具有較高方差的情況下效果最佳王带。
數(shù)據(jù)處理問題:
1.在有關(guān)癌癥檢測的數(shù)據(jù)集淑蔚,已經(jīng)構(gòu)建了一個分類模型,準確率達到了96%愕撰。為什么你不應該對你的模特感到滿意刹衫?你還能做什么醋寝?
答: 因為癌癥檢測是類別不均衡問題,類別不均衡問題不能用“準確率”評價模型性能带迟。
因為96%可能只能正確地預測沒得病的人音羞,但是我們實際關(guān)注的是少數(shù)的4%(真正被診斷患有癌癥的人)。
因此仓犬,為了評估模型性能嗅绰,我們應該使用Sensitivity(真正例率),Specificity(真假例率)搀继,F(xiàn)度量來確定分類器的類別性能窘面。如果發(fā)現(xiàn)少數(shù)類別表現(xiàn)不佳,我們可以采取以下步驟:
1. 使用欠采樣叽躯,過采樣财边,或者SMOTE來使得數(shù)據(jù)平衡;
2. 利用AUC-ROC曲線進行概率校準点骑,尋找最優(yōu)閾值來改變預測閾值酣难;
3. 為類別分配權(quán)值,使得少數(shù)類得到權(quán)值更大畔况;
4. 使用數(shù)據(jù)異常檢測鲸鹦,剔除異常值;
2.在時間序列【數(shù)據(jù)集】上跷跪,應該使用怎樣的交叉驗證馋嗜?k-fold還是LOOCV?
答:這兩個都不行吵瞻。
在時序數(shù)據(jù)集中葛菇,k-fold很麻煩,因為有些模式可能存在于第4年橡羞、第5年眯停,但是不存在于第3年,重新采樣數(shù)據(jù)集會分離這些趨勢卿泽,然而我們可能是用后續(xù)的數(shù)據(jù)作為驗證莺债,這是不正確的。
但是签夭,我們可以采用前向鏈策略的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個變量中第租,8個變量的缺失值高于30%措拇。你將如何處理它們?
答:可以通過如下手段處理缺失值:
1. 為缺失值指定一個唯一類別慎宾,誰知道缺失值可能會破譯某些趨勢;
2. 直接移除有缺失值的變量丐吓;
3. 基于距離的替換浅悉,kNN;
4. 基于密度的積累券犁,密度聚類术健、變色龍等;
5. 基于重數(shù)的替換粘衬;
6. 對缺失值進行回歸預測苛坚;
4.您正在處理分類問題。出于驗證目的色难,您已將訓練數(shù)據(jù)集隨機抽樣到訓練和驗證中。由于您的驗證準確性很高等缀,因此您確信您的模型能夠在看不見的數(shù)據(jù)上工作得非常好枷莉。但是,在測試精度不佳后會感到震驚尺迂。什么地方出了錯笤妙?
答:在分類問題中,應該使用分層抽樣噪裕,而不是隨機抽樣蹲盘。隨機抽樣無法保證類別均衡。
5.在k-means或kNN中膳音,我們使用歐氏距離來計算最近鄰居之間的距離召衔。為什么不用曼哈頓距離?
答:我們不使用曼哈頓距離祭陷,因為它只計算水平或垂直距離苍凛,它有尺寸限制。
另一方面兵志,歐幾里德度量可用于任何空間來計算距離醇蝴。由于數(shù)據(jù)點可以存在于任何維度,因此歐幾里德距離是更可行的選擇想罕。
6.什么時候在機器學習中需要regularization悠栓?
答:當模型開始過擬合/欠擬合時,正規(guī)化變得必要按价。
該技術(shù)引入了用于引入具有目標函數(shù)的更多特征的成本項惭适。因此,它試圖將許多變量的系數(shù)推到零俘枫,從而減少成本項腥沽。這有助于降低模型復雜性,以便模型可以更好地預測(泛化)
7.您對Bias Variance的trade off有何看法鸠蚪?
答:任何模型出現(xiàn)的錯誤都可以用數(shù)學方法分解為三個部分今阳。
以下是這些組件:
error = bias2 + variance + irreducible_error
偏差誤差:量化預測值與實際值的不同师溅。高偏差誤差意味著我們有一個表現(xiàn)欠佳的模型;
方差誤差:量化了對同一觀察的預測如何彼此不同盾舌。高方差=過擬合墓臭,并且在訓練之外的任何觀察中都表現(xiàn)不佳。