到這我們已經(jīng)分享第三期Python機(jī)器學(xué)習(xí)方向的面試題了,是不是感覺前兩期的面試題非常有用呢?最后一期20道題送給大家。
1.人工智能與機(jī)器學(xué)習(xí)的區(qū)別?
基于經(jīng)驗(yàn)數(shù)據(jù)的特性而設(shè)計(jì)和開發(fā)的算法被稱為機(jī)器學(xué)習(xí)。而人工智能不但包括機(jī)器學(xué)習(xí),還包括諸如知識(shí)表示,自然語言處理,規(guī)劃,機(jī)器人技術(shù)等其它方法。
2.在機(jī)器學(xué)習(xí)中分類器指的是什么?
在機(jī)器學(xué)習(xí)中,分類器是指輸入離散或連續(xù)特征值的向量,并輸出單個(gè)離散值或者類型的系統(tǒng)。
3.樸素貝葉斯方法的優(yōu)勢是什么?
樸素貝葉斯分類器將會(huì)比判別模型,譬如邏輯回歸收斂得更快,因此你只需要更少的訓(xùn)練數(shù)據(jù)。其主要缺點(diǎn)是它學(xué)習(xí)不了特征間的交互關(guān)系。
4.在哪些領(lǐng)域使用模式識(shí)別技術(shù)?
模式識(shí)別被應(yīng)用在:計(jì)算機(jī)視覺、語言識(shí)別、統(tǒng)計(jì)、數(shù)據(jù)挖掘、非正式檢索、生物信息學(xué)。
5.什么是遺傳編程?
遺傳編程的機(jī)器學(xué)習(xí)中兩種常用的方法之一。該模型是基于測試,并在一系列的結(jié)果當(dāng)中,獲取最佳選擇。
6.在機(jī)器學(xué)習(xí)中歸納邏輯程序設(shè)計(jì)是指什么?
歸納邏輯程序設(shè)計(jì)(ILP)是利用邏輯程序設(shè)計(jì)表達(dá)的背景知識(shí)和實(shí)例,它是機(jī)器學(xué)習(xí)的一個(gè)分支。
7.在機(jī)器學(xué)習(xí)中,模型的選擇是指?
在不同的數(shù)學(xué)模型中,選擇用于描述相同的數(shù)據(jù)集的模型的過程被稱為模型選擇。模型選擇吧被應(yīng)用于統(tǒng)計(jì),機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的等相關(guān)領(lǐng)域。
8.什么是支持向量機(jī)?
支持向量機(jī)是一種監(jiān)督學(xué)習(xí)算法,適用于分類和回歸分析。
9.關(guān)系評(píng)價(jià)技術(shù)的組成部分是什么?
關(guān)系評(píng)價(jià)技術(shù)的重要組成部分如下:數(shù)據(jù)采集、地面實(shí)況采集、交叉驗(yàn)證技術(shù)、查詢類型、評(píng)分標(biāo)準(zhǔn)、顯著性檢驗(yàn)。
10.你會(huì)在時(shí)間序列數(shù)據(jù)集上使用什么交叉驗(yàn)證技術(shù)?是用k倍或LOOCV?
都不是。對(duì)于時(shí)間序列問題,k倍可能會(huì)很麻煩,因?yàn)榈?年或第5年的一些模式有可能跟第3年的不同,而對(duì)數(shù)據(jù)集的重復(fù)采樣會(huì)將分離這些趨勢,而我們最終可能只是需要對(duì)過去幾年的進(jìn)行驗(yàn)證,這就不能用這種方法了。相反,我們可以采用如下所示的5倍正向鏈接策略:
11.給你一個(gè)有1000列和1百萬行的訓(xùn)練數(shù)據(jù)集,這個(gè)數(shù)據(jù)集是基于分類問題的。經(jīng)理要求你來降低該數(shù)據(jù)集的維度以減少模型計(jì)算時(shí)間,但你的機(jī)器內(nèi)存有限。你會(huì)怎么做?(你可以自由做各種實(shí)際操作假設(shè)。)
你的面試官應(yīng)該非常了解很難在有限的內(nèi)存上處理高維的數(shù)據(jù)。以下是你可以使用的處理方法:
1.由于我們的RAM很小,首先要關(guān)閉機(jī)器上正在運(yùn)行的其他程序,包括網(wǎng)頁瀏覽器等,以確保大部分內(nèi)存可以使用。
2.我們可以隨機(jī)采樣數(shù)據(jù)集。這意味著,我們可以創(chuàng)建一個(gè)較小的數(shù)據(jù)集,比如有1000個(gè)變量和30萬行,然后做計(jì)算。
3.為了降低維度,我們可以把數(shù)值變量和分類變量分開,同時(shí)刪掉相關(guān)聯(lián)的變量。對(duì)于數(shù)值變量,我們將使用相關(guān)性分析;對(duì)于分類變量,我們可以用卡方檢驗(yàn)。
4.另外,我們還可以使用PCA(主成分分析),并挑選可以解釋在數(shù)據(jù)集中有最大偏差的成分。
5.利用在線學(xué)習(xí)算法,如VowpalWabbit(在Python中可用)是一個(gè)不錯(cuò)的選擇。
6.利用Stochastic GradientDescent(隨機(jī)梯度下降法)建立線性模型也很有幫助。
7.我們也可以用我們對(duì)業(yè)務(wù)的理解來估計(jì)各預(yù)測變量對(duì)響應(yīng)變量的影響的大小。但是,這是一個(gè)主觀的方法,如果沒有找出有用的預(yù)測變量可能會(huì)導(dǎo)致信息的顯著丟失。
12.全球平均溫度的上升導(dǎo)致世界各地的海盜數(shù)量減少。這是否意味著海盜的數(shù)量減少引起氣候變化?
不能夠這樣說。這是一個(gè)“因果關(guān)系和相關(guān)性”的經(jīng)典案例。全球平均溫度和海盜數(shù)量之間有可能有相關(guān)性,但基于這些信息,我們不能說因?yàn)槿蚱骄鶜鉁氐纳仙鴮?dǎo)致了海盜的消失。我們不能斷定海盜的數(shù)量減少是引起氣候變化的原因,因?yàn)榭赡苡衅渌蛩兀摲蚧祀s因素)影響了這一現(xiàn)象。
13.給你一個(gè)數(shù)據(jù)集,這個(gè)數(shù)據(jù)集有缺失值,且這些缺失值分布在離中值有1個(gè)標(biāo)準(zhǔn)偏差的范圍內(nèi)。百分之多少的數(shù)據(jù)不會(huì)受到影響?為什么?
約有32%的數(shù)據(jù)將不受缺失值的影響。因?yàn)?,由于?shù)據(jù)分布在中位數(shù)附近,讓我們先假設(shè)這是一個(gè)正態(tài)分布。我們知道,在一個(gè)正態(tài)分布中,約有68%的數(shù)據(jù)位于跟平均數(shù)(或眾數(shù)、中位數(shù))1個(gè)標(biāo)準(zhǔn)差范圍內(nèi),那么剩下的約32%的數(shù)據(jù)是不受影響的。因此,約有32%的數(shù)據(jù)將不受缺失值的影響。
14.你意識(shí)到你的模型受到低偏差和高方差問題的困擾。那么,應(yīng)該使用哪種算法來解決問題呢?為什么?
可以使用bagging算法(如隨機(jī)森林)。因?yàn)椋推钜馕吨P偷念A(yù)測值接近實(shí)際值,換句話說,該模型有足夠的靈活性,以模仿訓(xùn)練數(shù)據(jù)的分布。這樣貌似很好,但是別忘了,一個(gè)靈活的模型沒有泛化能力,意味著當(dāng)這個(gè)模型用在對(duì)一個(gè)未曾見過的數(shù)據(jù)集進(jìn)行測試的時(shí)候,它會(huì)令人很失望。在這種情況下,我們可以使用bagging算法(如隨機(jī)森林),以解決高方差問題。bagging算法把數(shù)據(jù)集分成重復(fù)隨機(jī)取樣形成的子集。然后,這些樣本利用單個(gè)學(xué)習(xí)算法生成一組模型。接著,利用投票(分類)或平均(回歸)把模型預(yù)測結(jié)合在一起。另外,為了應(yīng)對(duì)大方差,我們可以:
1.使用正則化技術(shù),懲罰更高的模型系數(shù),從而降低了模型的復(fù)雜性。
2.使用可變重要性圖表中的前n個(gè)特征??梢杂糜诋?dāng)一個(gè)算法在數(shù)據(jù)集中的所有變量里很難尋找到有意義信號(hào)的時(shí)候。
15.Gradient boosting算法(GBM)和隨機(jī)森林都是基于樹的算法,它們有什么區(qū)別?
最根本的區(qū)別是,隨機(jī)森林算法使用bagging技術(shù)做出預(yù)測;而GBM是采用boosting技術(shù)做預(yù)測的。在bagging技術(shù)中,數(shù)據(jù)集用隨機(jī)采樣的方法被劃分成n個(gè)樣本。然后,使用單一的學(xué)習(xí)算法,在所有樣本上建模。接著利用投票或者求平均來組合所得到的預(yù)測。bagging是平行進(jìn)行的,而boosting是在第一輪的預(yù)測之后,算法將分類出錯(cuò)的預(yù)測加高權(quán)重,使得它們可以在后續(xù)一輪中得到校正。這種給予分類出錯(cuò)的預(yù)測高權(quán)重的順序過程持續(xù)進(jìn)行,一直到達(dá)到停止標(biāo)準(zhǔn)為止。隨機(jī)森林通過減少方差(主要方式)提高模型的精度。生成樹之間是不相關(guān)的,以把方差的減少最大化。在另一方面,GBM提高了精度,同時(shí)減少了模型的偏差和方差。
16.“買了這個(gè)的客戶,也買了......”亞馬遜的建議是哪種算法的結(jié)果?
這種推薦引擎的基本想法來自于協(xié)同過濾。協(xié)同過濾算法考慮用于推薦項(xiàng)目的“用戶行為”。它們利用的是其他用戶的購買行為和針對(duì)商品的交易歷史記錄、評(píng)分、選擇和購買信息。針對(duì)商品的其他用戶的行為和偏好用來推薦項(xiàng)目(商品)給新用戶。在這種情況下,項(xiàng)目(商品)的特征是未知的。
17.在k-means或kNN,我們是用歐氏距離來計(jì)算最近的鄰居之間的距離。為什么不用曼哈頓距離?
我們不用曼哈頓距離,因?yàn)樗挥?jì)算水平或垂直距離,有維度的限制。另一方面,歐氏距離可用于任何空間的距離計(jì)算問題。因?yàn)?,?shù)據(jù)點(diǎn)可以存在于任何空間,歐氏距離是更可行的選擇。例如:想象一下國際象棋棋盤,象或車所做的移動(dòng)是由曼哈頓距離計(jì)算的,因?yàn)樗鼈兪窃诟髯缘乃胶痛怪狈较蜃龅倪\(yùn)動(dòng)。
18.我知道校正R2或者F值是用來評(píng)估線性回歸模型的。那用什么來評(píng)估邏輯回歸模型?
我們可以使用下面的方法:
1.由于邏輯回歸是用來預(yù)測概率的,我們可以用AUC-ROC曲線以及混淆矩陣來確定其性能。
2.此外,在邏輯回歸中類似于校正R2的指標(biāo)是AIC。AIC是對(duì)模型系數(shù)數(shù)量懲罰模型的擬合度量。因此,我們更偏愛有最小AIC的模型。
3.空偏差指的是只有截距項(xiàng)的模型預(yù)測的響應(yīng)。數(shù)值越低,模型越好。殘余偏差表示由添加自變量的模型預(yù)測的響應(yīng)。數(shù)值越低,模型越好。
19.為什么樸素貝葉斯如此“樸素”?
因?yàn)樗俣ㄋ械奶卣髟跀?shù)據(jù)集中的作用是同樣重要和獨(dú)立的。正如我們所知,這個(gè)假設(shè)在現(xiàn)實(shí)世界中是很不真實(shí)的,因此,說樸素貝葉斯真的很“樸素”。
20.花了幾個(gè)小時(shí)后,現(xiàn)在你急于建一個(gè)高精度的模型。結(jié)果,你建了5 個(gè)GBM(Gradient Boosted Models),想著boosting算法會(huì)展現(xiàn)“魔力”。不幸的是,沒有一個(gè)模型比基準(zhǔn)模型表現(xiàn)得更好。最后,你決定將這些模型結(jié)合到一起。盡管眾所周知,結(jié)合模型通常精度高,但你就很不幸運(yùn)。你到底錯(cuò)在哪里?
據(jù)我們所知,組合的學(xué)習(xí)模型是基于合并弱的學(xué)習(xí)模型來創(chuàng)造一個(gè)強(qiáng)大的學(xué)習(xí)模型的想法。但是,只有當(dāng)各模型之間沒有相關(guān)性的時(shí)候組合起來后才比較強(qiáng)大。由于我們已經(jīng)試了5個(gè)GBM也沒有提高精度,表明這些模型是相關(guān)的。具有相關(guān)性的模型的問題是,所有的模型提供相同的信息。例如:如果模型1把User1122歸類為1,模型2和模型3很有可能會(huì)做同樣的分類。
以上就是這一期的20道機(jī)器學(xué)習(xí)面試題了,同學(xué)們?nèi)绻麑?duì)Python開發(fā)培訓(xùn)感興趣的話不妨來跟我們的在線老師了解一下,還能免費(fèi)領(lǐng)取學(xué)習(xí)資料,還等什么?