機器學習是一門理論性和實戰性都比較強的技術學科。在應聘機器學習相關工作崗位時,我們常常會遇到各種各樣的機器學習問題和知識點。為了幫助大家對這些知識點進行梳理和理解,以便能夠更好地應對機器學習筆試包括面試。紅色石頭準備在公眾號連載一些機器學習筆試題系列文章,希望能夠對大家有所幫助!
今天的筆試題主要涉及的知識點包括:SVM、高斯核、F1 score、Leave-One_out 交叉驗證、神經網路、隱馬爾可夫模型等。
Q1. 假設我們在支援向量機(SVM)演算法中對 Gamma(RBF 核係數 γ)的不同值進行視覺化。由於某種原因,我們忘記了標記伽馬值的視覺化。令 g1、g2、g3 分別對應著下面的圖 1、圖 2 和圖 3。則關於 g1、g2、g3 大小下列說法正確的是?
A. g1 > g2 > g3
B. g1 = g2 = g3
C. g1 < g2 < g3
D. g1 > g2 = g3
E. g1 < g2 = g3
答案:C
解析:本題考查的是 Kernel SVM 中 Gamma γ 對模型形狀的影響。
SVM 中為了得到更加複雜的分類面並提高運算速度,通常會使用核函式的技巧。徑向基核函式(RBF)也稱為高斯核函式是最常用的核函式,其核函式的表示式如下所示:
形式與高斯分佈類似,Gamma γ 是高斯分佈中標準差 Sigma σ 的導數。我們知道在高斯分佈中,σ 越小,對應的高斯曲線就越尖瘦。也就是說 γ 越大,高斯核函式對應的曲線就越尖瘦。這樣,運用核技巧得到的 SVM 分類面就更加曲折複雜,甚至會將許多樣本隔離成單個的小島。
下面是 γ 分別取 1、10、100 時對應的 SVM 分類效果:
值得一提的是,γ 過小容易造成欠擬合,γ 過大容易造成過擬合。
Q2. 我們知道二元分類的輸出是機率值。一般設定輸出機率大於或等於 0.5,則預測為正類;若輸出機率小於 0.5,則預測為負類。那麼,如果將閾值 0.5 提高,例如 0.6,大於或等於 0.6 的才預測為正類。則準確率(Precision)和召回率(Recall)會發生什麼變化(多選)?
A. 準確率(Precision)增加或者不變
B. 準確率(Precision)減小
C. 召回率(Recall)減小或者不變
D. 召回率(Recall)增大
答案:AC
解析:本題考察的是二元分類閾值提高對準確率和召回率的影響。
首先來看一下什麼是準確率和召回率,下面分別用 P 和 R 代表。以一個簡單的例子來說明,例如預測 20 個西瓜中哪些是好瓜,這 20 個西瓜中實際有 15 個好瓜,5 個壞瓜。某個模型預測的結果是:16 個好瓜,4 個壞瓜。其中,預測的 16 個好瓜中有 14 個確實是好瓜,預測的 4 個壞瓜中有 3 個確實是壞瓜。下面以一張圖表說明:
這樣,準確率 P 的定義是:
P=\frac{TP}{TP+FP}
可以理解為預測好瓜中,確實是好瓜的比例。該例子中 P = 14/(14+2)。
召回率 R 的定義是:
R=\frac{TP}{TP+FN}
可以理解為真實的好瓜被預測出來的比例。該例子中 R = 14/(14+1)。
現在,如果二元分類閾值提高,相當於判定好瓜的標準更嚴格了。所以可能會造成預測是好瓜的數目減少,即 TP 和 FP 均減小。因此準確率可能會增加,極端的,苛刻條件,只預測一個是好瓜,那該瓜是好瓜的機率會很大,即準確率很高。但是 15 個好瓜你只挑出來 1 個,召回率就降低了。
準確率和召回率都不能很好地反映模型效能,通常使用 F1 score 來作為模型預測水平判據。F1 Score 被定義為準確率和召回率的調和平均數。,如下所示:
F1=2\cdot\frac{P\cdot R}{P+R}
Q3. 點選率預測是一個正負樣本不平衡問題(例如 99% 的沒有點選,只有 1% 點選)。假如在這個非平衡的資料集上建立一個模型,得到訓練樣本的正確率是 99%,則下列說法正確的是?
A. 模型正確率很高,不需要最佳化模型了
B. 模型正確率並不高,應該建立更好的模型
C. 無法對模型做出好壞評價
D. 以上說法都不對
答案:B
解析:這一題延續了上題中準確率和召回率的知識點,考查了正負樣本分佈不均問題。
模型訓練過程中正負樣本分佈不均是常見的問題。這時候不能單獨只看預測正確率。對於此題來說,如果我們預測的結果是 100% 沒有點選,0% 點選,那麼可以說正確率是 99%,因為只有 1% 的點選預測錯誤。但是,我們其實更關心的那 1% 的點選率並沒有預測出來。可以說這樣的模型是沒有任何意義的。
對應正負樣本不平衡的情況需要做一些資料處理,主要包括:取樣、資料合成、懲罰因子加權、一分類。其中,一分類即是在正負樣本分佈極不平衡的時候,把它看做一分類(One Class Learning)或異常檢測(Novelty Detection)問題。這類方法的重點不在於捕捉類間的差別,而是為其中一類進行建模,經典的工作包括 One-class SVM 等。
Q4. 假設我們使用 kNN 訓練模型,其中訓練資料具有較少的觀測資料(下圖是兩個屬性 x、y 和兩個標記為 “+” 和 “o” 的訓練資料)。現在令 k = 1,則圖中的 Leave-One-Out 交叉驗證錯誤率是多少?
A. 0%
B. 20%
C. 50%
D. 100%
答案:D
解析:本題考查的是 kNN 演算法和 Leave-One-Out 交叉驗證。
kNN 演算法是標記類演算法,取當前例項最近鄰的 k 個樣本,k 個樣本中所屬的最多類別即判定為該例項的類別。本題中 k = 1,則只需要看最近鄰的那一個樣本屬於“+” 還是“o”即可。
Leave-One-Out 交叉驗證是一種用來訓練和測試分類器的方法,假定資料集有N 個樣本,將這個樣本分為兩份,第一份 N-1 個樣本用來訓練分類器,另一份 1 個樣本用來測試,如此迭代 N 次,所有的樣本里所有物件都經歷了測試和訓練。
分別對這 10 個點進行觀察可以發現,每個例項點最近鄰的都不是當前例項所屬的類別,因此每次驗證都是錯誤的。整體的錯誤率即為 100%。
Q5. 如果在大型資料集上訓練決策樹。為了花費更少的時間來訓練這個模型,下列哪種做法是正確的?
A. 增加樹的深度
B. 增加學習率
C. 減小樹的深度
D. 減少樹的數量
答案:C
解析:本題考查的是決策樹相關概念。
一般用決策樹進行分類,從根結點開始,對例項的某一特徵進行測試,根據測試結果,將例項分配到其子結點。這時,每一個子結點對應著該特徵的一個取值。如此遞迴地對例項進行測試並分類,直至達到葉結點。最後將例項分到葉結點的類中。—— 引自李航 《統計學習方法》
決策樹深度越深,在訓練集上誤差會越小,準確率越高。但是容易造成過擬合,而且增加模型的訓練時間。對決策樹進行修剪,減小樹的深度,能夠提高模型的訓練速度,有效避免過擬合。
單決策樹中,學習率不是一個有效引數。
決策樹是單樹,隨機森林由多個決策樹組成。
Q6. 關於神經網路,下列說法正確的是?
A. 增加網路層數,可能會增加測試集分類錯誤率
B. 增加網路層數,一定會增加訓練集分類錯誤率
C. 減少網路層數,可能會減少測試集分類錯誤率
D. 減少網路層數,一定會減少訓練集分類錯誤率
答案:AC
解析:本題考查的是神經網路層數對訓練誤差和測試誤差的影響。
一般來說,神經網路層數越多,模型越複雜,對資料的分類效果越好。所以,從最簡單的層數開始,增加網路層數都能使得訓練誤差和測試誤差減小。但是,神經網路層數過多容易造成過擬合,即對訓練樣本分類效果很好,誤差小,但是測試誤差很大。
為了避免發生過擬合,應該選擇合適的神經網路層數並使用正則化技術來讓神經網路更加穩健。
Q7. 假設我們使用原始的非線性可分版本的 Soft-SVM 最佳化目標函式。我們需要做什麼來保證得到的模型是線性可分離的?
A. C = 0
B. C = 1
C. C 正無窮大
D. C 負無窮大
答案:C
解析:本題考查的是 SVM 和 Soft-SVM 之間的聯絡和彼此轉化條件。
Soft-SVM 在原來的 SVM 基礎上增加了分類錯誤項,如下式:
min(b,w,\xi)\ \frac12w^Tw+C\cdot \sum_{n=1}^N\xi_n
其中,第二項即為分類錯誤項。C 為引數類似於正則化中的懲罰因子。其中, ξn 表示每個點犯錯誤的程度,ξn = 0,表示沒有錯誤,ξn 越大,表示錯誤越大,即點距離邊界(負的)越大。引數 C 表示儘可能選擇寬邊界和儘可能不要犯錯兩者之間的權衡,因為邊界寬了,往往犯錯誤的點會增加。large C 表示希望得到更少的分類錯誤,即不惜選擇窄邊界也要儘可能把更多點正確分類;small C 表示希望得到更寬的邊界,即不惜增加錯誤點個數也要選擇更寬的分類邊界。因此,C 正無窮大時,可以實現沒有分類錯誤的點,模型線性可分。
從另一方面來看,線性可分 SVM 中,對偶形式解得拉格朗日因子 αn≥0;而在 Soft-SVM 中,對偶形式解得拉格朗日因子 0 ≤ αn ≤ C。顯然,當 C 無正無窮大的時候,兩者形式相同。
值得一提的是,當 C 值很大的時候,雖然分類正確率提高,但很可能把 noise 也進行了處理,從而可能造成過擬合。也就是說 Soft-SVM 同樣可能會出現過擬合現象,所以引數 C 的選擇非常重要。下圖是 C 分別取1、10、100時,相應的分類曲線:
Q8. 在訓練完 SVM 之後,我們可以只保留支援向量,而捨去所有非支援向量。仍然不會影響模型分類能力。這句話是否正確?
A. 正確
B. 錯誤
答案:A
解析:本題考查的是對支援向量機 SVM 的概念理解。
其實,剛學習支援向量機時會有個疑問,就是為什麼會叫這個名字。該演算法決定分類面的一般是關鍵的幾個點,這幾個點構建了分類面,因此被稱為支援向量。該演算法也就叫支援向量機了。訓練完畢之後,其它非支援向量對分類面並無影響,去掉無妨。
對於線性可分的 SVM,可以根據拉格朗日因子 αn 數值來判斷當前樣本 (xn, yn) 是否為 SV。
- 若 αn = 0:不是 SV<p>
-
若 αn > 0:是 SV,且分類正確
對於 Soft-SVM(線性不可分),可以根據拉格朗日因子 αn 數值與引數 C 的關係來判斷當前樣本 (xn, yn) 是否為 SV。
- 若 αn = 0:不是 SV,且分類正確<p>
-
若 0 < αn < C:是 SV
-
若 αn = C:不是 SV,且分類錯誤(或恰好位於分類面上)
對 SVM 概念不太清楚的同學可以看看林軒田機器學習技法 1-6 對 SVM 的講解,通俗易懂,內容翔實。對應的筆記可以在本公眾號查閱,放上第 1 講連結:
深入淺出機器學習技法(一):線性支援向量機
Q9. 下列哪些演算法可以用來夠造神經網路(多選)?
A. kNN
B. 線性迴歸
C. 邏輯迴歸
答案:BC
解析:本題考查的是 kNN、線性迴歸、邏輯迴歸與神經網路之間的一些關係。
kNN 是一種基於例項的學習演算法,不具有任何訓練引數。因此不能用來構造神經網路。
線性迴歸和邏輯迴歸都可以用來構造神經網路模型,其實二者就是單神經元的神經網路。
Q10. 下列資料集適用於隱馬爾可夫模型的是?
A. 基因資料
B. 影評資料
C. 股票市場價格
D. 以上所有
答案:D
解析:本題考查的是隱馬爾可夫模型適用於解決哪類問題。
隱馬爾可夫模型(Hidden Markov Model,HMM)是關於時序的機率模型,描述一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀察而產生觀測隨機序列的過程。因此,隱馬爾可夫模型適用於解決時間序列問題。
參考文獻:
Solutions for Skilltest Machine Learning : Revealed