常見面試題 機器學習篇

2021-10-01 21:45:03 字數 4439 閱讀 2009

傳統的機器學習演算法:svm,lr,softmax,決策樹,隨機森林,gbdt,xgboost,adaboost,bp神經網路、樸素貝葉斯這些都必須自己手推一次或者多次;

深度學習方面:cnn、rnn、lstm、常用啟用函式(tanh、relu等)、adam優化函式、梯度消失原理或者結構應該能手畫出來。

nlp方面:強烈建議tf-idf、textrank、word2vec、注意力機制、transformer都應該非常熟悉。

一、模型和演算法篇(週六)

1)邏輯回歸:

1. 手推lr,對並每一步進行解釋,引入sigmoid,邏輯回歸的公式,極大似然,求解引數時的梯度下降法;

2. 多分類問題怎麼處理(ovr-??)

2)svm

1. svm的原理

2. svm為什麼採用間隔最大化?

當訓練資料線性可分時,存在無窮個分離超平面可以將兩類資料正確分開。利用間隔最大化求得最優分離超平面,這時解是唯一的。另一方面,此時的分隔超平面所產生的分類結果對未知例項的泛化能力最強。

3. svm怎麼處理過擬合?

解決的辦法是為svm引入鬆弛變數,在svm公式中的目標函式加上鬆弛變數的平方和,並求最小值。這樣就達到了乙個平衡:既希望鬆弛變數存在以解決異常點問題,又不希望鬆弛變數太大導致分類解決太差。

4. svm有哪些可以調節的引數?

c:懲罰係數,即對誤差的寬容度,c越高,說明越不能容忍誤差,容易過擬合。c越小,容易欠擬合,c過大或過小,泛化能力變差;

分類演算法具有樣本權重class_weight:指定樣本各類別的權重,主要是為了防止訓練集某些類別的樣本過多,導致訓練的決策過於偏向這些類別。這裡可以自己指定各個樣本的權重,或者用"balanced",如果使用"balanced",則演算法會自己計算權重,樣本量少的類別所對應的樣本權重會高。當然,如果你的樣本類別分布沒有明顯的偏倚,則可以不管這個引數,選擇預設的「none」;

正則化引數penalty:僅僅對線性擬合有意義,可以選擇l1或l2,預設是l2正則化。如果我們需要產生稀疏化的係數的時候,用l1

5. 常用的svm核函式,什麼是核函式,為什麼要用核函式,核函式怎麼選擇?

常用核函式有:

a. 線性核函式:沒有專門需要設定的引數;

b. 多項式核函式:有三個引數。-d用來設定最高次項次數,預設值是3。-g用來設定核函式中的gamma引數,也是公式中的gamma,預設值是1/k。-r用來設定核函式中的coef0,也就是公式中的第二個r,預設值是0。

c. rbf(高斯)核函式:有乙個引數,-g用來設定很函式中的gamma引數設定,也就是公式中的gamma,預設值是1/k(k是特徵數);

d. sigmoid核函式:有兩個引數,-g用來設定gamma,-r用來設定核函式中的coef0,也就是公式中的第二個r,預設值是0.

gamma的物理意義:

核函式主要從訓練集樣本、特徵量上進行考慮。

6. svm和lr的異同點:

相同點:

1)如果不考慮核函式,都是線性分類器,本質上都是求乙個最佳分類超平面;

2)都是監督學習演算法;

3)都是判別模型:判別模型會生成乙個表示p的判別函式,而生成模型先計算聯合概率p,然後通過貝葉斯公式轉化為條件概率。簡單說,在計算判別模型時,不會計算聯合概率,而在計算生成模型時,必須先計算聯合概率。

不同點:

1)loss function不同:lr基於概率理論,通過極大似然估計的方法估計出引數的值;svm基於幾何間隔最大化原理,認為存在最大幾何間隔的分類面為最優分類面;

2)svm只考慮區域性的邊界線附近的點,而lr考慮全域性(遠離的點對邊界線的確定也起作用)

3)在解決非線性問題時,svm採用核函式的機制,而lr通常不採用核函式的方法;

4)線性svm依賴資料表達的距離測度,所以需要對資料做normalization,而lr不受其影響;

5)svm的損失函式自帶正則(損失函式中的1/2||w||^2項),這就是為什麼svm是結構風險最小化演算法的原因。而lr必須另外在損失函式上新增正則項。

7. 如何使用svm處理多分類問題?

兩種辦法:

ovr(one vs rest)

ovo(one-vs-one)

8. svm損失函式;

9. svm軟間隔和硬間隔

10. 為什麼svm對缺失資料敏感?

這裡說的缺失資料是指缺失某些特徵資料,向量資料不完整。svm沒有處理缺失值的策略(決策樹有)。而svm希望樣本在特徵空間中線性可分,所以特徵空間的好壞對svm的效能很重要,缺失特徵資料將影響訓練結果的好壞。

3)樹模型

0.決策樹怎麼剪枝?

1. gbdt與xgboost的區別:

改進之處:

1)顯式地將樹模型的複雜度作為正則項加入了損失函式中;

2)公式推導裡用到了二階導數,而gbdt只用到一階;

3)使用了column(feature) sampling來防止過擬合,借鑑了rf的思想;

4)data事先排好序並以block的形式儲存,利於平行計算;

5)gbdt以cart樹作為基分類器,而xgboost還支援線性分類器;

6)shrinkage(縮減),相當於學習率(xgboost中的eta)。xgboost在進行完一次迭代後,會將葉子節點的權重乘上該係數,主要是為了削弱每棵樹的影響,讓後面有更大的學習空間。實際應用中,一般把eta設定的小一點,然後迭代次數設定得大一點。

2. xgboost如何解決缺失值問題

xgboost把缺失值當做稀疏矩陣來對待,本身在節點**時不考慮缺失值的數值。缺失值資料會被分到左子樹和右子樹分別計算損失,選擇較優的那乙個。如果訓練中沒有資料缺失,**時出現了資料缺失,那麼預設被分類到右子樹。

3. xgboost中的樹剪枝

4.誤差分析(bagging是為了降低偏差,所以rf中決策樹用較深的,boosting為了降低方差,所以gbdt中決策樹用較淺的)

5. 泰勒公式xgboost中為什麼沒有三階導數(因為泰勒展開最高二階,高階都是零)

6. bagging和boosting的區別:這個具體化就是rf和gbdt的區別:a.樣本選擇方式 b.樣例權重 c.**函式 d. 平行計算

7. xgboost多分類,引數怎麼設定:multi:softmax

資料不平衡的時候,xgboost可以直接訓練嗎?會不會有影響:會有影響,需要做取樣,

講一下xgboost的推導,大概講講就好;

8.4)神經網路

1. rnn原理

2.交叉熵與softmax;

3. 神經網路處理過擬合的方法

5)整合學習

1.有哪幾種方式

6)其他

1. 分類和聚類的區別

2. knn與k-means的區別;

4. l1正則和l2正則的區別

5. 樣本不均衡問題:負例取樣、smote演算法怎麼做;

6.什麼情況會導致過擬合?

7. 有序資料和無序資料的處理

二、資料結構與演算法篇(週日上午)

1. 氣泡排序演算法(排序演算法)、手寫快排,講原理,最好、最壞時間複雜度、空間複雜度

2 寫乙個快排,說一下快排主要快哉**:快在它的思想是分而治之的思想,其實東西都是這個思想,例如分布式、hadoop等。

3. 手寫二分查詢演算法(查詢演算法)

三、大資料篇(週日晚上)

1. 說說hadoop的原理:大資料這塊的東西還是好好看一下,因為現在搞演算法,搞機器學習、深度學習都是在大資料的背景下的,所以這以後是乙個基本的技能,面試官問的也比較多。

hadoop的原理就是分而治之

map-reduce是幹什麼:

2. 有乙個1t大小的每行只有乙個詞彙的文字,怎麼統計詞的個數

這個問題其實就是考察大資料處理中map-reduce的原理了,原理很簡單,就是「分———合」的思想,就是對hdfs上的資源進行分片,map階段將資料分成key-value對,然後在reduce階段再對key對應的value進行計數。這樣就統計出了詞的個數。

四、nlp篇

1. word2vec和glove的區別,

2. 模型輸入是只有word2vec嗎?用別人訓練好的word2vec來訓練你的模型有沒有影響?

3. 了解過transformer嗎

4. 你覺得bert的優點是什麼,說一說transformer、rnn、cnn這些模型的優缺點,比較一下這三種特徵抽取器;

5. 

機器學習常見面試題

判別方法 由資料直接學習決策函式 y f x 或者由條件分布概率 p y x 作為 模型,即判別模型。生成方法 由資料學習聯合概率密度分布函式 p x,y 然後求出條件概率分布p y x 作為 的模型,即生成模型。由生成模型可以得到判別模型,但由判別模型得不到生成模型。常見的判別模型有 k近鄰 sv...

常見面試題

1.get和post的區別 1 本質區別 get是向伺服器請求資料,post是向伺服器傳送資料。2 伺服器獲取值的方式 get方式提交的資料,伺服器端使用request.querystring獲取變數的值。post方式提交的資料,伺服器端使用request.form獲取資料。3 安全性 get安全效...

常見面試題

1 一行 實現1 100之和 lst i for i in range 1,101 print sum lst 2 如何在乙個函式內部修改全域性變數?在函式內部新增 global 變數名 這樣就可以在本地作用域定義全域性作用域了 name 大明 def eat name1 global name n...