1. 程式人生 > >機器學習習題(15)

機器學習習題(15)

給大家拜個晚年了!在新的9題機器學習習題中,我們主要講解了4個方面:
整合學習裡隨機森林與GBDT等相關知識,PCA降維的相關知識,聚類演算法的相關知識,KNN的相關知識。

1.對於隨機森林和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是正確的。

這裡隨機森林(RF)和GBDT更詳細的可以參考《RF與GBDT》,而這兩個的基礎演算法區別可以參見《Bagging與Boosting》。更多的重取樣方法可以看《重取樣的若干方法》。

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

參考答案: (B)

解析:

這個說法是錯誤的。首先,“不依賴”和“不相關”是兩回事;其次, 轉化過的特徵, 也可能是相關的。PCA與LDA的相關知識可以參見《PCA與LDA介紹》。

3.對於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)

解析:

  1. PCA對資料尺度很敏感, 打個比方, 如果單位是從km變為cm, 這樣的資料尺度對PCA最後的結果可能很有影響

  2. 我們總是應該選擇使得模型有最大variance的主成分

  3. 有時在低維度上作圖是需要PCA降維幫助的

對於LDA和PCA的介紹可參閱《PCA與LDA介紹》。

4.對於下圖, 最好的主成分選擇是多少 ?
這裡寫圖片描述
A. 7
B. 30
C. 35
D. 不確定

參考答案: (B)

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

5.資料科學家可能會同時使用多個演算法(模型)進行預測, 並且最後把這些演算法的結果整合起來進行最後的預測(整合學習),以下對整合學習說法正確的是 :
A. 單個模型之間有高相關性
B. 單個模型之間有低相關性
C. 在整合學習中使用“平均權重”而不是“投票”會比較好
D. 單個模型都是用的一個演算法

參考答案: (B)

解析:

A.與B相悖。

B.具有低相關性才能夠三個臭皮匠賽過諸葛亮。

C.平均權重和投票各有千秋,具體的可以詳見《整合學習的若干方法

D.說了使用多個模型或者多個演算法

6.在有監督學習中, 我們如何使用聚類方法?(B)
1.我們可以先建立聚類類別, 然後在每個類別上用監督學習分別進行學習
2.我們可以使用聚類“類別id”作為一個新的特徵項, 然後再用監督學習分別進行學習
3.在進行監督學習之前, 我們不能新建聚類類別
4.我們不可以使用聚類“類別id”作為一個新的特徵項, 然後再用監督學習分別進行學習
A. 2 和 4
B. 1 和 2
C. 3 和 4
D. 1 和 3

參考答案: (B)

解析:

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

2.“類別id”作為一個特徵項去訓練, 可以有效地總結了資料特徵。所以B是正確的。

其實這道題是有問題的,聚類方法是非監督學習的一種,是不能在有監督學習中的。如果非要理解此題,應當是資料是有監督的資料(即帶類別標籤的資料),但是我還想額外使用聚類演算法加入到傳統的有監督學習過程中。那麼這時候1,2就說得通了。

7.以下說法正確的是 :
1.一個機器學習模型,如果有較高準確率,總是說明這個分類器是好的
2.如果增加模型複雜度, 那麼模型的測試錯誤率總是會降低
3.如果增加模型複雜度, 那麼模型的訓練錯誤率總是會降低
A. 1
B. 2
C. 3
D. 1 and 3

參考答案: (C)

解析:

A在之前的題目中就已經講過,在對於不平衡的資料集進行預測時,正確率不能反映模型的效能。

BC模型越複雜,在訓練集上越容易表現好,在測試集上越容易表現的不好。

8.對應GradientBoosting tree演算法, 以下說法正確的是 :
1.當增加最小樣本分裂個數,我們可以抵制過擬合
2.當增加最小樣本分裂個數,會導致過擬合
3.當我們減少訓練單個學習器的樣本個數,我們可以降低variance
4.當我們減少訓練單個學習器的樣本個數,我們可以降低bias
A. 2 和 4
B. 2 和 3
C. 1 和 3
D. 1 和 4

參考答案: (C)

解析:

第一點最小樣本分裂個數是用來控制“過擬合”引數。太高的值會導致“欠擬合”,這個引數應該用交叉驗證來調節,其實就是挑選決策引數個數,詳情可見《決策樹大全》。

第二點是考bias和variance概念的,這個我們之前已經講過,參與決策的個體越多,偏差越小,方差越大,詳情可以參見《偏差、誤差與方差》和《偏差與方差的權衡》。

9.以下哪個圖是KNN演算法的訓練邊界 ?
這裡寫圖片描述
A) B
B) A
C) D
D) C
E) 都不是

參考答案:(B)

解析:

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

其實這麼說也不一定對,KNN演算法其實使用的是距離作為衡量標準,但是距離的衡量方法也有很多種,詳見《KNN演算法詳解》。