傳統的機器學習演算法: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...