機器學習演算法工程師面試集錦(更新中)

2021-09-23 20:27:26 字數 3217 閱讀 7945

參考資料

class sklearn.tree.decisiontreeclassifier(criterion=『gini』, splitter=『best』, max_depth=none, min_samples_split=2,min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=none, random_state=none, max_leaf_nodes=none,min_impurity_split=1e-07, class_weight=none, presort=false)

重要的引數

criterion:規定了該決策樹所採用的的最佳分割屬性的判決方法,有兩種:「gini」,「entropy」。

max_depth:限定了決策樹的最大深度,對於防止過擬合非常有用。

min_samples_leaf:限定了葉子節點包含的最小樣本數,這個屬性對於防止資料碎片問題很有作用。

min_weight_fraction_leaf: 這個值限制了葉子節點所有樣本權重和的最小值,如果小於這個值,則會和兄弟節點一起被剪枝。 預設是0,就是不考慮權重問題。一般來說,如果我們有較多樣本有缺失值,或者分類樹樣本的分布類別偏差很大,就會引入樣本權重,這時我們就要注意這個值了。

min_samples_split:部節點再劃分所需最小樣本數。這個值限制了子樹繼續劃分的條件,如果某節點的樣本數少於min_samples_split,則不會繼續再嘗試選擇最優特徵來進行劃分。 預設是2.如果樣本量不大,不需要管這個值。如果樣本量數量級非常大,則推薦增大這個值。我之前的乙個專案例子,有大概10萬樣本,建立決策樹時,我選擇了min_samples_split=10。可以作為參考。

參考部落格

確定最優劃分特徵的方法是整個決策樹的關鍵部分。最優劃分特徵的選擇基於乙個目標:使得**後各個節點資料的「純度」最高。即盡量使得通過該特徵進行分類後的分支節點所包含的樣本屬於同一類別。選擇乙個合適的特徵作為判斷節點,可以快速的分類,減少決策樹的深度。

預剪枝:當**點對應的增益值不再增加時停止**。優點是計算時間上能保證最優

後剪枝:生成決策樹後,遞迴的進行剪枝,剪去那些增益為負的葉子結點。優點是保證決策樹最優,缺點是比預剪枝計算複雜度高

根據資訊增益決策劃分節點時特徵選擇方法是:對訓練資料集d,計算其每個特徵的資訊增益,並比較它們的大小,選擇資訊增益最大的特徵。

資訊增益用在id3決策樹中,資訊增益是依據熵的變化值來決定的值。

以資訊增益作為劃分資料集的特徵,存在偏向於選擇去取值較多的特徵的問題,這時候可以使用資訊增益比對這一問題進行修正。c4.5決策樹正是基於資訊增益比進行特徵的選擇進行結點的分割。

cart樹分為回歸樹和分類樹,cart分類樹結點選擇特徵進行**時選擇特徵的方法就是基尼指數。

參考部落格

原因:方法:voting,bagging,boosting,stacking

boosting演算法是一種把若干個分類器集成為乙個分類器的方法

gradient boosting 在迭代的時候選擇梯度下降的方向來保證最後的結果最好。

損失函式用來描述模型的「靠譜」程度,假設模型沒有過擬合,損失函式越大,模型的錯誤率越高.

如果我們的模型能夠讓損失函式持續的下降,則說明我們的模型在不停的改進,而最好的方式就是讓損失函式在其梯度方向上下降。

給定訓練樣本集s,其中x和y分別對應於正例樣本和負例樣本; t為訓練的最大迴圈次數;

初始化樣本權重為1/n ,即為訓練樣本的初始概率分布;

第一次迭代:

(1) 訓練樣本的概率分布相當下,訓練弱分類器;

(2) 計算弱分類器的錯誤率;

(3) 選取合適閾值,使得誤差最小;

(4) 更新樣本權重;

經t次迴圈後,得到t個弱分類器,按更新的權重疊加,最終得到的強分類器。

參考部落格1、 參考知乎2

步驟1:讀取想分類的資料集d

步驟2:找到兩個平行超平面,可以劃分資料並且兩平面之間沒有資料點。

步驟3:兩個超平面之間的距離最大化

k均值聚類(k-means clustering)

高斯混合模型(gmm)

自組織對映神經網路(som)

原型聚類、密度聚類以及層次聚類

(1) 隨機選取k個中心點;

(2) 在第j次迭代中,對於每個樣本點,選取最近的中心點,歸為該類;

(3) 更新中心點為每類的均值;

(4) j

空間複雜度o(n)

時間複雜度o(ikn)

其中n為樣本點個數,k為中心點個數,i為迭代次數

k值確定

法1:(輪廓係數)在實際應用中,由於kmean一般作為資料預處理,或者用於輔助分聚類貼標籤。所以k一般不會設定很大。可以通過列舉,令k從2到乙個固定值如10,在每個k值上重複執行數次kmeans(避免區域性最優解),並計算當前k的平均輪廓係數,最後選取輪廓係數最大的值對應的k作為最終的集群數目。

法2:(calinski-harabasz準則)

其中ssb是類間方差, ,m為所有點的中心點,mi為某類的中心點;

ssw是類內方差,;

(n-k)/(k-1)是複雜度;

比率越大,資料分離度越大.

法3:肘部法則

也稱手肘法。嘗試不同的k值,橫軸為k,縱軸為誤差平方和定義的損失函式,該法認為拐點就是k的最佳值。

法4:gap statistic

不需肉眼判斷,找到最大的gap statistic對應的k

參考部落格

pca是比較常見的線性降維方法,通過線性投影將高維資料對映到低維資料中,所期望的是在投影的維度上,新特徵自身的方差盡量大,方差越大特徵越有效,盡量使產生的新特徵間的相關性越小。具體操作為對所有的樣本進行中心化操作,計算樣本的協方差矩陣,然後對協方差矩陣做特徵值分解,取最大的n個特徵值對應的特徵向量構造投影矩陣。

lda 的全稱是 linear discriminant analysis (線性判別分析),它是一種有監督學習方法。lda 的原理是:將帶上類標的例項資料,通過投影的方法,投影到維度更低的空間中,使得投影後的點,會形成按類別區分開。同乙個類別的例項,在投影後的空間中將會更接近.

部分答案**

機器學習演算法工程師面試 總綱

二.資料輸入 三.特徵工程 四.模型構建 2.線性分類器 3.概率圖 4.聚類 5.回歸分析 6.其他 五.模型評估與驗證 六.面試問題 資料結構 演算法 數學基礎 計算機系統 程式設計 參考文件 bprnn cnnsnn gansvm s3vm tsvm logisitic regression ...

機器學習演算法工程師面試問題

手寫二叉樹前序遍歷 劍指offer青蛙跳台階問題 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法?我 採用遞迴的方式做,f n f n 1 f n 2 n 3 f 1 1 f 2 2 面試官 如果不利用遞迴方式怎麼做?我 構建乙個vector向量,1,2,3...

演算法工程師《機器學習基礎》

機器學習基礎 邏輯回歸,svm,決策樹 1 邏輯回歸和svm的區別是什麼?各適用於解決什麼問題?2 linear svm 和 線性回歸 有什麼異同?答案 基礎知識 3 支援向量機屬於神經網路範疇嗎?4 如何理解決策樹的損失函式?5 各種機器學習的應用場景分別是什麼?例如,k近鄰,貝葉斯,決策樹,sv...