1. 程式人生 > >機器學習能力自測題——常見簡單機器學習問題,幫助理解應用

機器學習能力自測題——常見簡單機器學習問題,幫助理解應用

一直苦於沒有辦法自測一下機器學習知識掌握程度,最近看到一篇Ankit Gupta寫的部落格Solutions for Skilltest Machine Learning : Revealed。有40題機器學習自測題,馬上可以看看你的機器學習知識能打幾分?順便還能查漏補缺相關術語,以及SVM, 隱馬爾科夫, 特徵選擇, 神經網路, 線性迴歸等眾多知識點.

以下是試題, 附答案:

Q1:在一個n維的空間中, 最好的檢測outlier(離群點)的方法是:

A. 作正態分佈概率圖

B. 作盒形圖

C. 馬氏距離

D. 作散點圖

答案:C

馬氏距離是基於卡方分佈的,度量多元outlier離群點的統計方法。更多請詳見:

這裡和”各種距離“。

Q2:對數機率迴歸(logistics regression)和一般迴歸分析有什麼區別?:

A. 對數機率迴歸是設計用來預測事件可能性的

B. 對數機率迴歸可以用來度量模型擬合程度

C. 對數機率迴歸可以用來估計迴歸係數

D. 以上所有

答案:D

A: 這個在我們第八期#8提到過,對數機率迴歸其實是設計用來解決分類問題的

B: 對數機率迴歸可以用來檢驗模型對資料的擬合度

C: 雖然對數機率迴歸是用來解決分類問題的,但是模型建立好後,就可以根據獨立的特徵,估計相關的迴歸係數。就我認為,這只是估計迴歸係數,不能直接用來做迴歸模型。

Q3:bootstrap資料是什麼意思?(提示:考“bootstrap”和“boosting”區別)

A. 有放回地從總共M個特徵中抽樣m個特徵

B. 無放回地從總共M個特徵中抽樣m個特徵

C. 有放回地從總共N個樣本中抽樣n個樣本

D. 無放回地從總共N個樣本中抽樣n個樣本

答案:C

Q4:“過擬合”只在監督學習中出現,在非監督學習中,沒有“過擬合”,這是:

A. 對的

B. 錯的

答案:B

我們可以評估無監督學習方法通過無監督學習的指標,如:我們可以評估聚類模型通過調整蘭德係數(adjusted rand score

Q5:對於k折交叉驗證, 以下對k的說法正確的是 :

A. k越大, 不一定越好, 選擇大的k會加大評估時間

B. 選擇更大的k, 就會有更小的bias (因為訓練集更加接近總資料集)

C. 在選擇k時, 要最小化資料集之間的方差

D. 以上所有

答案:D

k越大, bias越小, 訓練時間越長. 在訓練時, 也要考慮資料集間方差差別不大的原則. 比如, 對於二類分類問題, 使用2-折交叉驗證, 如果測試集裡的資料都是A類的, 而訓練集中資料都是B類的, 顯然, 測試效果會很差.

如果不明白bias和variance的概念, 務必參考下面連結:

Q6:迴歸模型中存在多重共線性, 你如何解決這個問題?

A. 去除這兩個共線性變數

B. 我們可以先去除一個共線性變數

C. 計算VIF(方差膨脹因子), 採取相應措施

D. 為了避免損失資訊, 我們可以使用一些正則化方法, 比如, 嶺迴歸和lasso迴歸.

以下哪些是對的:

A. 1

B. 2

C. 2和3

D. 2, 3和4

答案: D

解決多重公線性, 可以使用相關矩陣去去除相關性高於75%的變數 (有主觀成分). 也可以VIF, 如果VIF值<=4說明相關性不是很高, VIF值>=10說明相關性較高.

我們也可以用 嶺迴歸和lasso迴歸的帶有懲罰正則項的方法. 我們也可以在一些變數上加隨機噪聲, 使得變數之間變得不同, 但是這個方法要小心使用, 可能會影響預測效果.

Q7:模型的高bias是什麼意思, 我們如何降低它 ?

A. 在特徵空間中減少特徵

B. 在特徵空間中增加特徵

C. 增加資料點

D. B和C

E. 以上所有

答案: B

bias太高說明模型太簡單了, 資料維數不夠, 無法準確預測資料, 所以, 升維吧 !

如果不明白bias和variance的概念, 務必參考下面連結:

Q8:訓練決策樹模型, 屬性節點的分裂, 具有最大資訊增益的圖是下圖的哪一個: 

q8_image123

A. Outlook

B. Humidity

C. Windy

D. Temperature

答案: A

資訊增益, 增加平均子集純度, 詳細研究, 請戳下面連結:

Q9:對於資訊增益, 決策樹分裂節點, 下面說法正確的是: 

A. 純度高的節點需要更多的資訊去區分

B. 資訊增益可以用”1位元-熵”獲得

C. 如果選擇一個屬性具有許多歸類值, 那麼這個資訊增益是有偏差的

A. 1

B. 2

C.2和3

D. 所有以上

答案: C

詳細研究, 請戳下面連結:

Q10:如果SVM模型欠擬合, 以下方法哪些可以改進模型 : 

A. 增大懲罰引數C的值

B. 減小懲罰引數C的值

C. 減小核係數(gamma引數)

答案: A

如果SVM模型欠擬合, 我們可以調高參數C的值, 使得模型複雜度上升.

LibSVM中,SVM的目標函式是:

1de6d986ed0b17cd90615544918461ec_r

而, gamma引數是你選擇徑向基函式作為kernel後,該函式自帶的一個引數.隱含地決定了資料對映到新的特徵空間後的分佈.

gamma引數與C引數無關. gamma引數越高, 模型越複雜.

Q11:下圖是同一個SVM模型, 但是使用了不同的徑向基核函式的gamma引數, 依次是g1, g2, g3 , 下面大小比較正確的是 : 

q11_image2

A. g1 > g2 > g3

B. g1 = g2 = g3

C. g1 < g2 < g3

D. g1 >= g2 >= g3

E. g1 <= g2 <= g3

答案: C

參考Q10題

Q12:假設我們要解決一個二類分類問題, 我們已經建立好了模型, 輸出是0或1, 初始時設閾值為0.5, 超過0.5概率估計, 就判別為1, 否則就判別為0 ; 如果我們現在用另一個大於0.5的閾值,  那麼現在關於模型說法, 正確的是 : 

A. 模型分類的召回率會降低或不變

B. 模型分類的召回率會升高

C. 模型分類準確率會升高或不變

D. 模型分類準確率會降低

A. 1

B. 2

C.1和3

D. 2和4

E. 以上都不是

答案: C

這篇文章講述了閾值對準確率和召回率影響 :

Q13:”點選率問題”是這樣一個預測問題, 99%的人是不會點選的, 而1%的人是會點選進去的, 所以這是一個非常不平衡的資料集. 假設, 現在我們已經建了一個模型來分類, 而且有了99%的預測準確率, 我們可以下的結論是 : 

A. 模型預測準確率已經很高了, 我們不需要做什麼了

B. 模型預測準確率不高, 我們需要做點什麼改進模型

C. 無法下結論

D. 以上都不對

答案: B

99%的預測準確率可能說明, 你預測的沒有點進去的人很準確 (因為有99%的人是不會點進去的, 這很好預測). 不能說明你的模型對點進去的人預測準確, 所以, 對於這樣的非平衡資料集, 我們要把注意力放在小部分的資料上, 即那些點選進去的人.

詳細可以參考這篇文章: article

Q14:使用k=1的knn演算法, 下圖二類分類問題, “+” 和 “o” 分別代表兩個類, 那麼, 用僅拿出一個測試樣本的交叉驗證方法, 交叉驗證的錯誤率是多少 : 

14-2-768x608

A. 0%

B. 100%

C.  0% 到  100%

D. 以上都不是

答案: B

knn演算法就是, 在樣本週圍看k個樣本, 其中大多數樣本的分類是A類, 我們就把這個樣本分成A類. 顯然, k=1 的knn在上圖不是一個好選擇, 分類的錯誤率始終是100%

Q15:我們想在大資料集上訓練決策樹, 為了使用較少時間, 我們可以 : 

A.  增加樹的深度

B.  增加學習率 (learning rate)

C.  減少樹的深度

D. 減少樹的數量

答案: C

  • 增加樹的深度, 會導致所有節點不斷分裂, 直到葉子節點是純的為止. 所以, 增加深度, 會延長訓練時間.
  • 決策樹沒有學習率引數可以調. (不像整合學習和其它有步長的學習方法)
  • 決策樹只有一棵樹, 不是隨機森林.

Q16:對於神經網路的說法, 下面正確的是 : 

1. 增加神經網路層數, 可能會增加測試資料集的分類錯誤率
2. 減少神經網路層數, 總是能減小測試資料集的分類錯誤率
3. 增加神經網路層數, 總是能減小訓練資料集的分類錯誤率

A. 1

B. 1 和 3

C. 1 和 2

D. 2

答案: A

深度神經網路的成功, 已經證明, 增加神經網路層數, 可以增加模型範化能力, 即, 訓練資料集和測試資料集都表現得更好. 但是, 在這篇文獻中, 作者提到, 更多的層數, 也不一定能保證有更好的表現. 所以, 不能絕對地說層數多的好壞, 只能選A

Q17:假如我們使用非線性可分的SVM目標函式作為最優化物件, 我們怎麼保證模型線性可分 : 

A. 設C=1

B. 設C=0

C. 設C=無窮大

D. 以上都不對

答案: C

C無窮大保證了所有的線性不可分都是可以忍受的.

Q18:訓練完SVM模型後, 不是支援向量的那些樣本我們可以丟掉, 也可以繼續分類: 

A. 正確

B. 錯誤

答案: A

SVM模型中, 真正影響決策邊界的是支援向量

Q19:以下哪些演算法, 可以用神經網路去構造: 

1. KNN
2. 線性迴歸
3. 對數機率迴歸

A. 1和 2

B. 2 和 3

C. 1, 2 和 3

D. 以上都不是

答案: B

1. KNN演算法不需要訓練引數, 而所有神經網路都需要訓練引數, 因此神經網路幫不上忙
2. 最簡單的神經網路, 感知器, 其實就是線性迴歸的訓練
3. 我們可以用一層的神經網路構造對數機率迴歸

Q20:請選擇下面可以應用隱馬爾科夫(HMM)模型的選項: 

A. 基因序列資料集

B. 電影瀏覽資料集

C. 股票市場資料集

D. 所有以上

答案: D

只要是和時間序列問題有關的 , 都可以試試HMM

Q21:我們建立一個5000個特徵, 100萬資料的機器學習模型. 我們怎麼有效地應對這樣的大資料訓練 : 

A. 我們隨機抽取一些樣本, 在這些少量樣本之上訓練

B. 我們可以試用線上機器學習演算法

C. 我們應用PCA演算法降維, 減少特徵數

D. B 和 C

E. A 和 B

F. 以上所有

答案: F

Q22:我們想要減少資料集中的特徵數, 即降維. 選擇以下適合的方案 :

1. 使用前向特徵選擇方法
2. 使用後向特徵排除方法
3. 我們先把所有特徵都使用, 去訓練一個模型, 得到測試集上的表現. 然後我們去掉一個特徵, 再去訓練, 用交叉驗證看看測試集上的表現. 如果表現比原來還要好, 我們可以去除這個特徵.
4. 檢視相關性表, 去除相關性最高的一些特徵

A. 1 和 2

B. 2, 3和4

C. 1, 2和4

D. All

答案: D

  1. 前向特徵選擇方法和後向特徵排除方法是我們特徵選擇的常用方法
  2. 如果前向特徵選擇方法和後向特徵排除方法在大資料上不適用, 可以用這裡第三種方法.
  3. 用相關性的度量去刪除多餘特徵, 也是一個好方法

所有D是正確的

Q23:對於 隨機森林和GradientBoosting Trees, 下面說法正確的是:

  1. 在隨機森林的單個樹中, 樹和樹之間是有依賴的, 而GradientBoosting Trees中的單個樹之間是沒有依賴的.
  2. 這兩個模型都使用隨機特徵子集, 來生成許多單個的樹.
  3. 我們可以並行地生成GradientBoosting Trees單個樹, 因為它們之間是沒有依賴的, GradientBoosting Trees訓練模型的表現總是比隨機森林好

A. 2

B. 1 and 2

C. 1, 3 and 4

D. 2 and 4

答案: A

  1. 隨機森林是基於bagging的, 而Gradient Boosting trees是基於boosting的, 所有說反了,在隨機森林的單個樹中, 樹和樹之間是沒有依賴的, 而GradientBoosting Trees中的單個樹之間是有依賴關係.
  2. 這兩個模型都使用隨機特徵子集, 來生成許多單個的樹.

所有A是正確的

Q24:對於PCA(主成分分析)轉化過的特徵 ,  樸素貝葉斯的”不依賴假設”總是成立, 因為所有主要成分是正交的, 這個說法是 :

A. 正確的

B. 錯誤的

答案: B.

這個說法是錯誤的, 首先, “不依賴”和”不相關”是兩回事, 其次, 轉化過的特徵, 也可能是相關的.

Q25:對於PCA說法正確的是 :

1. 我們必須在使用PCA前規範化資料
2. 我們應該選擇使得模型有最大variance的主成分
3. 我們應該選擇使得模型有最小variance的主成分
4. 我們可以使用PCA在低維度上做資料視覺化

A. 1, 2 and 4

B. 2 and 4

C. 3 and 4

D. 1 and 3

E. 1, 3 and 4

答案: A

  • PCA對資料尺度很敏感, 打個比方, 如果單位是從km變為cm, 這樣的資料尺度對PCA最後的結果可能很有影響(從不怎麼重要的成分變為很重要的成分).
  • 我們總是應該選擇使得模型有最大variance的主成分
  • 有時在低維度上左圖是需要PCA的降維幫助的

Q26:對於下圖, 最好的主成分選擇是多少 ? :

q26_image4

A. 7

B. 30

C. 35

D. Can’t Say

答案: B

  • 主成分選擇使variance越大越好, 在這個前提下, 主成分越少越好。

Q27:資料科學家可能會同時使用多個演算法(模型)進行預測, 並且最後把這些演算法的結果整合起來進行最後的預測(整合學習),以下對整合學習說法正確的是 :

A. 單個模型之間有高相關性

B. 單個模型之間有低相關性

C. 在整合學習中使用“平均權重”而不是“投票”會比較好

D. 單個模型都是用的一個演算法

答案: B

Q28:在有監督學習中, 我們如何使用聚類方法? :

A. 我們可以先建立聚類類別, 然後在每個類別上用監督學習分別進行學習

B. 我們可以使用聚類“類別id”作為一個新的特徵項, 然後再用監督學習分別進行學習

C. 在進行監督學習之前, 我們不能新建聚類類別

D. 我們不可以使用聚類“類別id”作為一個新的特徵項, 然後再用監督學習分別進行學習

A. 2 和 4

B. 1 和 2

C. 3 和 4

D. 1 和 3

答案: B

我們可以為每個聚類構建不同的模型, 提高預測準確率。

“類別id”作為一個特徵項去訓練, 可以有效地總結了資料特徵。

所以B是正確的

Q29:以下說法正確的是 :

A. 一個機器學習模型,如果有較高準確率,總是說明這個分類器是好的

B. 如果增加模型複雜度, 那麼模型的測試錯誤率總是會降低

C. 如果增加模型複雜度, 那麼模型的訓練錯誤率總是會降低

D. 我們不可以使用聚類“類別id”作為一個新的特徵項, 然後再用監督學習分別進行學習

A. 1

B. 2

C. 3

D. 1 and 3

答案: C

考的是過擬合和欠擬合的問題。

Q30:對應GradientBoosting tree演算法, 以下說法正確的是 :

A. 當增加最小樣本分裂個數,我們可以抵制過擬合

B. 當增加最小樣本分裂個數,會導致過擬合

C. 當我們減少訓練單個學習器的樣本個數,我們可以降低variance

D. 當我們減少訓練單個學習器的樣本個數,我們可以降低bias

A. 2 和 4

B. 2 和 3

C. 1 和 3

D. 1 和 4

答案: C

  • 最小樣本分裂個數是用來控制“過擬合”引數。太高的值會導致“欠擬合”,這個引數應該用交叉驗證來調節。
  • 第二點是靠bias和variance概念的。

Q31:以下哪個圖是KNN演算法的訓練邊界 :

q31_image5

A) B

B) A

C) D

D) C

E) 都不是

答案: B

KNN演算法肯定不是線性的邊界, 所以直的邊界就不用考慮了。另外這個演算法是看周圍最近的k個樣本的分類用以確定分類,所以邊界一定是坑坑窪窪的。

Q32:如果一個訓練好的模型在測試集上有100%的準確率, 這是不是意味著在一個新的資料集上,也會有同樣好的表現? :

A. 是的,這說明這個模型的範化能力已經足以支援新的資料集合了

B. 不對,依然後其他因素模型沒有考慮到,比如噪音資料

答案: B
沒有一個模型是可以總是適應新資料的。我們不可能可到100%準確率。

Q33:下面的交叉驗證方法 :

i. 有放回的Bootstrap方法

ii. 留一個測試樣本的交叉驗證

iii. 5折交叉驗證

iv. 重複兩次的5折教程驗證

當樣本是1000時,下面執行時間的順序,正確的是:

A. i > ii > iii > iv

B. ii > iv > iii > i

C. iv > i > ii > iii

D. ii > iii > iv > i

答案: B

  • Boostrap方法是傳統地隨機抽樣,驗證一次的驗證方法,只需要訓練1次模型,所以時間最少。
  • 留一個測試樣本的交叉驗證,需要n次訓練過程(n是樣本個數),這裡,要訓練1000個模型。
  • 5折交叉驗證需要訓練5個模型。
  • 重複2次的5折交叉驗證,需要訓練10個模型。

所有B是正確的

Q34. Removed

Q35:變數選擇是用來選擇最好的判別器子集, 如果要考慮模型效率,我們應該做哪些變數選擇的考慮? :

1. 多個變數其實有相同的用處
2. 變數對於模型的解釋有多大作用
3. 特徵攜帶的資訊
4. 交叉驗證

A. 1 和 4

B. 1, 2 和 3

C. 1,3 和 4

D. 以上所有

答案: C

注意, 這題的題眼是考慮模型效率,所以不要考慮選項2.

Q36:對於線性迴歸模型,包括附加變數在內,以下的可能正確的是 :

1. R-Squared 和 Adjusted R-squared都是遞增的
2. R-Squared 是常量的,Adjusted R-squared是遞增的
3. R-Squared 是遞減的, Adjusted R-squared 也是遞減的
4. R-Squared 是遞減的, Adjusted R-squared是遞增的

A. 1 和 2

B. 1 和 3

C. 2 和 4

D. 以上都不是

答案: D

R-squared不能決定係數估計和預測偏差,這就是為什麼我們要估計殘差圖。但是,R-squared有R-squared 和 predicted R-squared 所沒有的問題。
每次你為模型加入預測器,R-squared遞增或不變.

Q37:對於下面三個模型的訓練情況, 下面說法正確的是 :

q37_image6

1. 第一張圖的訓練錯誤與其餘兩張圖相比,是最大的
2. 最後一張圖的訓練效果最好,因為訓練錯誤最小
3. 第二張圖比第一和第三張圖魯棒性更強,是三個裡面表現最好的模型
4. 第三張圖相對前兩張圖過擬合了
5. 三個圖表現一樣,因為我們還沒有測試資料集

A. 1 和 3

B. 1 和 3

C. 1, 3 和 4

D. 5

答案: C

Q38:對於線性迴歸,我們應該有以下哪些假設? :

1. 找到利群點很重要, 因為線性迴歸對利群點很敏感
2. 線性迴歸要求所有變數必須符合正態分佈
3. 線性迴歸假設資料沒有多重線性相關性

A. 1 和 2

B. 2 和 3

C. 1,2 和 3

D. 以上都不是

答案: D

  • 利群點要著重考慮, 第一點是對的
  • 不是必須的, 當然, 如果是正態分佈, 訓練效果會更好
  • 有少量的多重線性相關性是可以的, 但是我們要儘量避免

Q39:當我們構造線性模型時, 我們注意變數間的相關性. 在相關矩陣中搜索相關係數時, 如果我們發現3對變數的相關係數是(Var1 和Var2, Var2和Var3, Var3和Var1)是-0.98, 0.45, 1.23 . 我們可以得出什麼結論: 

1. Var1和Var2是非常相關的
2. 因為Var和Var2是非常相關的, 我們可以去除其中一個
3. Var3和Var1的1.23相關係數是不可能的

A. 1 and 3

B. 1 and 2

C. 1,2 and 3

D. 1

答案: C

  • Var1和Var2相關係數是負的, 所以這是多重線性相關, 我們可以考慮去除其中一個.
  • 一般地, 如果相關係數大於0.7或者小於-0.7, 是高相關的
  • 相關性係數範圍應該是 [-1,1]

Q40:如果在一個高度非線性並且複雜的一些變數中, 一個樹模型可能比一般的迴歸模型效果更好. 只是:

A. 對的

B. 錯的

答案: A