1. 程式人生 > >機器學習筆試題目

機器學習筆試題目

1、常見的生成式模型和判別式模型有哪些?
生成式模型:HMM、樸素貝葉斯
判別式模型:SVM、最大熵模型、神經網路、決策樹、條件隨機場

2、EM演算法的基本概念和應用場景?
EM演算法是在概率模型中尋找引數最大似然估計或者最大後驗估計的演算法,其中概率模型依賴於無法觀測的隱藏變數(Latent Variable)。假設我們估計知道A和B兩個引數,在開始狀態下兩者都是未知的,並且知道了A的資訊就可以得到B的資訊,反過來知道了B也就得到了A。可以考慮賦予A某種初值,以此得到B的估計值,然後從B的當前值出發,重新估計A的取值,這個過程一直持續到收斂為止。
應用場景:聚類

3、資料儲存和資料流都屬於資料,僅僅是所處的狀態不同

4、計算機圖形學中三維形體表示模型有哪些?
線框、表面、實體

5、C語言的基本單位是什麼?
函式

6、n個記錄使用快速排序,需要的輔助空間是?
O(log2n)。快速排序對待排序序列的劃分大約為log2n次,而快速排序是通過遞迴演算法來完成的,遞迴深度大約為log2n,因此所需的輔助儲存空間為O(log2n)。

7、(7,34,55,64,46,20,10)線性表的雜湊儲存,H(k)=k%9,地址為1的共有多少個元素?
4個。H(K)= K%9,表示除以9的餘數.由於地址重疊造成衝突,所以雜湊儲存時,通常還要有解決衝突的辦法,如線性探查法等等.本題的答案分別是:55,64,46,10.

8、二叉樹的中序遍歷是BCFDEA後續遍歷是BFCEAD,前序遍歷是?
DCBFAE

9、棧和佇列的共同點是什麼?
只允許在端點處插入和刪除元素

10、常見的分類演算法有哪些?
SVM、神經網路、邏輯迴歸、KNN、隨機森林、貝葉斯

11、計算機圖形學中多邊形的表示方法有哪些?
頂點表示和點陣表示

12、常見的監督學習演算法有哪些?
感知機、SVM、ANN、決策樹、邏輯迴歸

13、簡述SVM過程, 舉幾個常見的核函式,說說其用途,舉例說明什麼是支援向量
線性核、多項式核、高斯核、拉普拉斯核、sigmoid核

14、說說K-means的過程,k的選擇方法
1 初始化聚類中心
2 計算其他所有點到聚類中心的距離,將點歸類到最近的中心
3 更新聚類中心
4 重複2-3步,直到聚類中心收斂

k的選擇方法:
1 思想:初始的聚類中心之間相互距離儘可能遠
kmeans++
2 用層次聚類(從底向上,最近的簇合並)進行初始聚類

15、舉個你熟悉的分類演算法,簡述其原理

16、資訊增益、資訊增益比、基尼係數分別是什麼?資訊增益和資訊增益比的區別?
資訊增益 = 熵 - 條件熵(偏向選擇特徵值比較多的屬性)
資訊增益比 = 資訊增益/所選特徵的熵
基尼係數 = 1 - 全體資料集中每種類別概率的平方之和(構造二叉決策樹)
這三個也是特徵選擇方法(ID3、C4.5、CART)

17、常見的排序演算法中,時間複雜度是nlogn的有哪些?
快速排序、歸併排序、堆排序

18、快速排序過程原理,穩定性及其原因。
採取分而治之的思想,把大的拆分為小的,每一趟排序,把比選定值小的數字放在它的左邊,比它大的值放在右邊;重複以上步驟,直到每個區間只有一個數。此時陣列已經排序完成。

1.i =L; j = R; 將基準數挖出形成第一個坑a[i]。
2.j–由後向前找比它小的數,找到後挖出此數填前一個坑a[i]中。
3.i++由前向後找比它大的數,找到後也挖出此數填到前一個坑a[j]中。
4.再重複執行2,3二步,直到i==j,將基準數填入a[i]中。

選擇排序、快速排序、希爾排序、堆排序不是穩定的排序演算法,而氣泡排序、插入排序、歸併排序和基數排序是穩定的排序演算法

不穩定例子 2 4 1 3 1
會把最後面的1換到最前面去,打破了1的穩定性

19、基於核的演算法?
SVM RBF LDA

20、資料清理中,處理缺失值的方法是?
資料清理中,處理缺失值的方法有兩種:
刪除法:
1)刪除觀察樣本
2)刪除變數:當某個變數缺失值較多且對研究目標影響不大時,可以將整個變數整體刪除
3)使用完整原始資料分析:當資料存在較多缺失而其原始資料完整時,可以使用原始資料替代現有資料進行分析
4)改變權重:當刪除缺失資料會改變資料結構時,通過對完整資料按照不同的權重進行加權,可以降低刪除缺失資料帶來的偏差

查補法:均值插補、迴歸插補、抽樣填補等

21、下列哪個不屬於CRF模型對於HMM和MEMM模型的優勢( B)

A. 特徵靈活 B. 速度快 C. 可容納較多上下文資訊 D. 全域性最優

首先,CRF,HMM(隱馬模型),MEMM(最大熵隱馬模型)都常用來做序列標註的建模。隱馬模型一個最大的缺點就是由於其輸出獨立性假設,導致其不能考慮上下文的特徵,限制了特徵的選擇。最大熵隱馬模型則解決了隱馬的問題,可以任意選擇特徵,但由於其在每一節點都要進行歸一化,所以只能找到區域性的最優值,同時也帶來了標記偏見的問題,即凡是訓練語料中未出現的情況全都忽略掉。條件隨機場則很好的解決了這一問題,他並不在每一個節點進行歸一化,而是所有特徵進行全域性歸一化,因此可以求得全域性的最優值。

22、KNN和K-means區別

這裡寫圖片描述

23、以下哪個是常見的時間序列演算法模型 B
A. RSI B. MACD C. ARMA D. KDJ

時間序列模型是指採用某種演算法(可以是神經網路、ARMA等)模擬歷史資料,找出其中的變化規律。時間序列演算法模型主要有:移動平均演算法、指數平滑演算法及ARMA、ARIMA方法。

24、SVM 的推導,特性?多分類怎麼處理?

SVM是最大間隔分類器
從線性可分情況下,原問題,特徵轉換後的dual問題,引入kernel(線性kernel,多項式,高斯),最後是soft margin。

線性:簡單,速度快,但是需要線性可分
多項式:比線性核擬合程度更強,知道具體的維度,但是高次容易出現數值不穩定,引數選擇比較多。
高斯:擬合能力最強,但是要注意過擬合問題。不過只有一個引數需要調整。

多分類問題,一般將二分類推廣到多分類的方式有三種,一對一,一對多,多對多。

一對一:將N個類別兩兩配對,產生N(N-1)/2個二分類任務,測試階段新樣本同時交給所有的分類器,最終結果通過投票產生。
一對多:每一次將一個例作為正例,其他的作為反例,訓練N個分類器,測試時如果只有一個分類器預測為正類,則對應類別為最終結果,如果有多個,則一般選擇置信度最大的。從分類器角度一對一更多,但是每一次都只用了2個類別,因此當類別數很多的時候一對一開銷通常更小(只要訓練複雜度高於O(N)即可得到此結果)。
多對多:若干個類作為正類,若干個類作為反類。注意正反類必須特殊的設計。

25、LR 的推導,特性?

LR的優點在於實現簡單,並且計算量非常小,速度很快,儲存資源低,缺點就是因為模型簡單,對於複雜的情況下會出現欠擬合,並且只能處理2分類問題(可以通過一般的二元轉換為多元或者用softmax迴歸)。

26、決策樹的特性?

決策樹基於樹結構進行決策,與人類在面臨問題的時候處理機制十分類似。其特點在於需要選擇一個屬性進行分支,在分支的過程中選擇資訊增益最大的屬性。
在劃分中我們希望決策樹的分支節點所包含的樣本屬於同一類別,即節點的純度越來越高。決策樹計算量簡單,可解釋性強,比較適合處理有缺失屬性值的樣本,能夠處理不相關的特徵,但是容易過擬合,需要使用剪枝或者隨機森林。
資訊增益是熵減去條件熵,代表資訊不確定性較少的程度,資訊增益越大,說明不確定性降低的越大,因此說明該特徵對分類來說很重要。由於資訊增益準則會對數目較多的屬性有所偏好,因此一般用資訊增益率。其中分母可以看作為屬性自身的熵。取值可能性越多,屬性的熵越大。

Cart決策樹使用基尼指數來選擇劃分屬性,直觀的來說,Gini(D)反映了從資料集D中隨機抽取兩個樣本,其類別標記不一致的概率,因此基尼指數越小資料集D的純度越高,一般為了防止過擬合要進行剪枝,有預剪枝和後剪枝,一般用cross validation集進行剪枝。

連續值和缺失值的處理,對於連續屬性a,將a在D上出現的不同的取值進行排序,基於劃分點t將D分為兩個子集。一般對每一個連續的兩個取值的中點作為劃分點,然後根據資訊增益選擇最大的。與離散屬性不同,若當前節點劃分屬性為連續屬性,該屬性還可以作為其後代的劃分屬性。

27、 SVM、LR、決策樹的對比?
SVM既可以用於分類問題,也可以用於迴歸問題,並且可以通過核函式快速的計算,LR實現簡單,訓練速度非常快,但是模型較為簡單,決策樹容易過擬合,需要進行剪枝等。
從優化函式上看,soft margin的SVM用的是hinge loss,而帶L2正則化的LR對應的是cross entropy loss,另外adaboost對應的是exponential loss。所以LR對遠點敏感,但是SVM對outlier不太敏感,因為只關心support vector,SVM可以將特徵對映到無窮維空間,但是LR不可以,一般小資料中SVM比LR更優一點,但是LR可以預測概率,而SVM不可以,SVM依賴於資料測度,需要先做歸一化,LR一般不需要,對於大量的資料LR使用更加廣泛,LR向多分類的擴充套件更加直接,對於類別不平衡SVM一般用權重解決,即目標函式中對正負樣本代價函式不同,LR可以用一般的方法,也可以直接對最後結果調整(通過閾值),一般小資料下樣本維度比較高的時候SVM效果要更優一些。

28、GBDT 和隨機森林的區別?
隨機森林採用的是bagging的思想,bagging又稱為bootstrap aggreagation,通過在訓練樣本集中進行有放回的取樣得到多個取樣集,基於每個取樣集訓練出一個基學習器,再將基學習器結合。隨機森林在對決策樹進行bagging的基礎上,在決策樹的訓練過程中引入了隨機屬性選擇。傳統決策樹在選擇劃分屬性的時候是在當前節點屬性集合中選擇最優屬性,而隨機森林則是對結點先隨機選擇包含k個屬性的子集,再選擇最有屬性,k作為一個引數控制了隨機性的引入程度。

另外,GBDT訓練是基於Boosting思想,每一迭代中根據錯誤更新樣本權重,因此是序列生成的序列化方法,而隨機森林是bagging的思想,因此是並行化方法。

29、如何解決類別不平衡問題?

有些情況下訓練集中的樣本分佈很不平衡,例如在腫瘤檢測等問題中,正樣本的個數往往非常的少。從線性分類器的角度,在用 y = wx +b 對新樣本進行分類的時候,事實上在用預測出的y值和一個y值進行比較,例如常常在y>0.5的時候判為正例,否則判為反例。機率y/1-y反映了正例可能性和反例可能性的比值,閾值0.5恰好表明分類器認為正反的可能性相同。在樣本不均衡的情況下,應該是分類器的預測機率高於觀測機率就判斷為正例,因此應該是 y/1-y > m+/m- 時預測為正例,這種策略稱為rebalancing。但是訓練集並不一定是真實樣本總體的無偏取樣,通常有三種做法,一種是對訓練集的負樣本進行欠取樣,第二種是對正例進行升取樣,第三種是直接基於原始訓練集進行學習,在預測的時候再改變閾值,稱為閾值移動。注意過取樣一般通過對訓練集的正例進行插值產生額外的正例,而欠取樣將反例劃分為不同的集合供不同的學習器使用。

30、 解釋對偶的概念。

一個優化問題可以從兩個角度進行考察,一個是primal 問題,一個是dual 問題,就是對偶問題,一般情況下對偶問題給出主問題最優值的下界,在強對偶性成立的情況下由對偶問題可以得到主問題的最優下界,對偶問題是凸優化問題,可以進行較好的求解,SVM中就是將primal問題轉換為dual問題進行求解,從而進一步引入核函式的思想。

31、如何進行特徵選擇?

特徵選擇是一個重要的資料預處理過程,主要有兩個原因,首先在現實任務中我們會遇到維數災難的問題(樣本密度非常稀疏),若能從中選擇一部分特徵,那麼這個問題能大大緩解,另外就是去除不相關特徵會降低學習任務的難度,增加模型的泛化能力。冗餘特徵指該特徵包含的資訊可以從其他特徵中推演出來,但是這並不代表該冗餘特徵一定沒有作用,例如在欠擬合的情況下也可以用過加入冗餘特徵,增加簡單模型的複雜度。

在理論上如果沒有任何領域知識作為先驗假設那麼只能遍歷所有可能的子集。但是這顯然是不可能的,因為需要遍歷的數量是組合爆炸的。一般我們分為子集搜尋和子集評價兩個過程,子集搜尋一般採用貪心演算法,每一輪從候選特徵中新增或者刪除,分別成為前向和後先搜尋。或者兩者結合的雙向搜尋。子集評價一般採用資訊增益,對於連續資料往往排序之後選擇中點作為分割點。

常見的特徵選擇方式有過濾式,包裹式和嵌入式,filter,wrapper和embedding。Filter型別先對資料集進行特徵選擇,再訓練學習器。Wrapper直接把最終學習器的效能作為特徵子集的評價準則,一般通過不斷候選子集,然後利用cross-validation過程更新候選特徵,通常計算量比較大。嵌入式特徵選擇將特徵選擇過程和訓練過程融為了一體,在訓練過程中自動進行了特徵選擇,例如L1正則化更易於獲得稀疏解,而L2正則化更不容易過擬合。L1正則化可以通過PGD,近端梯度下降進行求解。

32、為什麼會產生過擬合,有哪些方法可以預防或克服過擬合?

一般在機器學習中,將學習器在訓練集上的誤差稱為訓練誤差或者經驗誤差,在新樣本上的誤差稱為泛化誤差。顯然我們希望得到泛化誤差小的學習器,但是我們事先並不知道新樣本,因此實際上往往努力使經驗誤差最小化。然而,當學習器將訓練樣本學的太好的時候,往往可能把訓練樣本自身的特點當做了潛在樣本具有的一般性質。這樣就會導致泛化效能下降,稱之為過擬合,相反,欠擬合一般指對訓練樣本的一般性質尚未學習好,在訓練集上仍然有較大的誤差。

欠擬合:一般來說欠擬合更容易解決一些,例如增加模型的複雜度,增加決策樹中的分支,增加神經網路中的訓練次數等等。

過擬合:一般認為過擬合是無法徹底避免的,因為機器學習面臨的問題一般是np-hard,但是一個有效的解一定要在多項式內可以工作,所以會犧牲一些泛化能力。過擬合的解決方案一般有增加樣本數量,對樣本進行降維,降低模型複雜度,利用先驗知識(L1,L2正則化),利用cross-validation,early stopping等等。

33、什麼是偏差與方差?

泛化誤差可以分解成偏差的平方加上方差加上噪聲。偏差度量了學習演算法的期望預測和真實結果的偏離程度,刻畫了學習演算法本身的擬合能力,方差度量了同樣大小的訓練集的變動所導致的學習效能的變化,刻畫了資料擾動所造成的影響,噪聲表達了當前任務上任何學習演算法所能達到的期望泛化誤差下界,刻畫了問題本身的難度。偏差和方差一般稱為bias和variance,一般訓練程度越強,偏差越小,方差越大,泛化誤差一般在中間有一個最小值,如果偏差較大,方差較小,此時一般稱為欠擬合,而偏差較小,方差較大稱為過擬合。

34、 神經網路的原理,如何進行訓練?

神經網路自發展以來已經是一個非常龐大的學科,一般而言認為神經網路是由單個的神經元和不同神經元之間的連線構成,不同的結構構成不同的神經網路。最常見的神經網路一般稱為多層前饋神經網路,除了輸入和輸出層,中間隱藏層的個數被稱為神經網路的層數。BP演算法是訓練神經網路中最著名的演算法,其本質是梯度下降和鏈式法則。

35、介紹卷積神經網路,和 DBN 有什麼區別?

卷積神經網路的特點是卷積核,CNN中使用了權共享,通過不斷的卷積和下采樣得到不同的特徵表示,取樣層又稱為pooling層,基於區域性相關性原理進行下采樣,在減少資料量的同時保持有用的資訊。DBN是深度信念網路,每一層是一個RBM,整個網路可以視為RBM堆疊得到,通常使用無監督逐層訓練,從第一層開始,每一層利用上一層的輸入進行訓練,等各層訓練結束之後再利用BP演算法對整個網路進行訓練。

36、採用 EM 演算法求解的模型有哪些,為什麼不用牛頓法或梯度下降法?

用EM演算法求解的模型一般有GMM或者協同過濾,k-means其實也屬於EM。EM演算法一定會收斂,但是可能收斂到區域性最優。由於求和的項數將隨著隱變數的數目指數上升,會給梯度計算帶來麻煩。

37、用 EM 演算法推導解釋 Kmeans。

k-means演算法是高斯混合聚類在混合成分方差相等,且每個樣本僅指派一個混合成分時候的特例。注意k-means在執行之前需要進行歸一化處理,不然可能會因為樣本在某些維度上過大導致距離計算失效。k-means中每個樣本所屬的類就可以看成是一個隱變數,在E步中,我們固定每個類的中心,通過對每一個樣本選擇最近的類優化目標函式,在M步,重新更新每個類的中心點,該步驟可以通過對目標函式求導實現,最終可得新的類中心就是類中樣本的均值。

38、 用過哪些聚類演算法,解釋密度聚類演算法。

k-means演算法,聚類效能的度量一般分為兩類,一類是聚類結果與某個參考模型比較(外部指標),另外是直接考察聚類結果(內部指標)。後者通常有DB指數和DI,DB指數是對每個類,找出類內平均距離/類間中心距離最大的類,然後計算上述值,並對所有的類求和,越小越好。類似k-means的演算法僅在類中資料構成簇的情況下表現較好,密度聚類演算法從樣本密度的角度考察樣本之間的可連線性,並基於可連線樣本不斷擴充套件聚類蔟得到最終結果。DBSCAN(density-based spatial clustering of applications with noise)是一種著名的密度聚類演算法,基於一組鄰域引數進行刻畫,包括鄰域,核心物件(鄰域內至少包含個物件),密度直達(j由i密度直達,表示j在i的鄰域內,且i是一個核心物件),密度可達(j由i密度可達,存在樣本序列使得每一對都密度直達),密度相連(xi,xj存在k,i,j均有k可達),先找出樣本中所有的核心物件,然後以任一核心物件作為出發點,找出由其密度可達的樣本生成聚類蔟,直到所有核心物件被訪問過為止。

39、 聚類演算法中的距離度量有哪些?

聚類演算法中的距離度量一般用閩科夫斯基距離,在p取不同的值下對應不同的距離,例如p=1的時候對應曼哈頓距離,p=2的情況下對應歐式距離,p=inf的情況下變為切比雪夫距離,還有jaccard距離,冪距離(閩科夫斯基的更一般形式),餘弦相似度,加權的距離,馬氏距離(類似加權)作為距離度量需要滿足非負性,同一性,對稱性和直遞性,閩科夫斯基在p>=1的時候滿足讀來那個性質,對於一些離散屬性例如{飛機,火車,輪船}則不能直接在屬性值上計算距離,這些稱為無序屬性,可以用VDM(Value Diffrence Metrix)

40、解釋貝葉斯公式和樸素貝葉斯分類
41、 L1和L2正則化的作用
42、餘弦距離是什麼