好程式設計師Python培訓分享機器學習面試題一
好程式設計師Python 培訓分享機器學習面試題一: 1. 有監督學習和無監督學習有什麼區別?
有監督學習:對具有標記的訓練樣本進行學習,以儘可能對訓練樣本集外的資料進行分類預測。(LR,SVM,BP,RF,GBDT )
無監督學習:對未標記的樣本進行訓練學習,比發現這些樣本中的結構知識。(KMeans,DL)
2. 什麼是正則化?
正則化是針對過擬合而提出的,以為在求解模型最優的是一般最佳化最小的經驗風險,現在在該經驗風險上加入模型複雜度這一項(正則化項是模型引數向量的範數),並使用一個rate 比率來權衡模型複雜度與以往經驗風險的權重,如果模型複雜度越高,結構化的經驗風險會越大,現在的目標就變為了結構經驗風險的最最佳化,可以防止模型訓練過度複雜,有效的降低過擬合的風險。
奧卡姆剃刀原理,能夠很好的解釋已知資料並且十分簡單才是最好的模型。
3. 什麼是生成模型和判別模型?
生成模型:由資料學習聯合機率分佈P(X,Y) ,然後求出條件機率分佈 P(Y|X) 作為預測的模型,即生成模型: P(Y|X)= P(X,Y)/ P(X) 。(樸素貝葉斯、 Kmeans )
生成模型可以還原聯合機率分佈p(X,Y) ,並且有較快的學習收斂速度,還可以用於隱變數的學習
判別模型:由資料直接學習決策函式Y=f(X) 或者條件機率分佈 P(Y|X) 作為預測的模型,即判別模型。( k 近鄰、決策樹、 SVM )
直接面對預測,往往準確率較高,直接對資料在各種程度上的抽象,所以可以簡化模型
4. 線性分類器與非線性分類器的區別以及優劣
如果模型是引數的線性函式,並且存線上性分類面,那麼就是線性分類器,否則不是。
常見的線性分類器有:LR, 貝葉斯分類,單層感知機、線性迴歸
常見的非線性分類器:決策樹、RF 、 GBDT 、多層感知機
SVM 兩種都有 ( 看線性核還是高斯核 )
線性分類器速度快、程式設計方便,但是可能擬合效果不會很好
非線性分類器程式設計複雜,但是效果擬合能力強
5. 特徵比資料量還大時,選擇什麼樣的分類器?
線性分類器,因為維度高的時候,資料一般在維度空間裡面會比較稀疏,很有可能線性可分
對於維度很高的特徵,你是選擇線性還是非線性分類器?
理由同上
對於維度極低的特徵,你是選擇線性還是非線性分類器?
非線性分類器,因為低維空間可能很多特徵都跑到一起了,導致線性不可分
下面是吳恩達的見解:
1. 如果 Feature 的數量很大,跟樣本數量差不多,這時候選用 LR 或者是 Linear Kernel 的 SVM
2. 如果 Feature 的數量比較小,樣本數量一般,不算大也不算小,選用 SVM+Gaussian Kernel
3. 如果 Feature 的數量比較小,而樣本數量很多,需要手工新增一些 feature 變成第一種情況
6. 為什麼一些機器學習模型需要對資料進行歸一化?
歸一化化就是要把你需要處理的資料經過處理後(透過某種演算法)限制在你需要的一定範圍內。
1 )歸一化後加快了梯度下降求最優解的速度。等高線變得顯得圓滑,在梯度下降進行求解時能較快的收斂。如果不做歸一化,梯度下降過程容易走之字,很難收斂甚至不能收斂
2 )把有量綱表示式變為無量綱表示式 , 有可能提高精度。一些分類器需要計算樣本之間的距離(如歐氏距離),例如 KNN 。如果一個特徵值域範圍非常大,那麼距離計算就主要取決於這個特徵,從而與實際情況相悖(比如這時實際情況是值域範圍小的特徵更重要)
3) 邏輯迴歸等模型先驗假設資料服從正態分佈。
7. 哪些機器學習演算法不需要做歸一化處理?
機率模型不需要歸一化,因為它們不關心變數的值,而是關心變數的分佈和變數之間的條件機率,如決策樹、rf 。而像 adaboost 、 gbdt 、 xgboost 、 svm 、 lr 、 KNN 、 KMeans 之類的最最佳化問題就需要歸一化。
8. 標準化與歸一化的區別
簡單來說,標準化是依照特徵矩陣的列處理資料,其透過求z-score 的方法,將樣本的特徵值轉換到同一量綱下。歸一化是依照特徵矩陣的行處理資料,其目的在於樣本向量在點乘運算或其他核函式計算相似性時,擁有統一的標準,也就是說都轉化為“單位向量”。規則為 l2 的歸一化公式如下:
9. 隨機森林如何處理缺失值
方法一(na.roughfix )簡單粗暴,對於訓練集 , 同一個 class 下的資料,如果是分類變數缺失,用眾數補上,如果是連續型變數缺失,用中位數補。
方法二(rfImpute )這個方法計算量大,至於比方法一好壞?不好判斷。先用 na.roughfix 補上缺失值,然後構建森林並計算 proximity matrix ,再回頭看缺失值,如果是分類變數,則用沒有缺失的觀測例項的 proximity 中的權重進行投票。如果是連續型變數,則用 proximity 矩陣進行加權平均的方法補缺失值。然後迭代 4-6 次,這個補缺失值的思想和 KNN 有些類似 12 。
10. 如何進行特徵選擇?
特徵選擇是一個重要的資料預處理過程,主要有兩個原因:一是減少特徵數量、降維,使模型泛化能力更強,減少過擬合; 二是增強對特徵和特徵值之間的理解
常見的特徵選擇方式:
1. 去除方差較小的特徵
2. 正則化。 1 正則化能夠生成稀疏的模型。 L2 正則化的表現更加穩定,由於有用的特徵往往對應係數非零。
3. 隨機森林,對於分類問題,通常採用基尼不純度或者資訊增益,對於迴歸問題,通常採用的是方差或者最小二乘擬合。一般不需要 feature engineering 、調參等繁瑣的步驟。它的兩個主要問題, 1 是重要的特徵有可能得分很低(關聯特徵問題), 2 是這種方法對特徵變數類別多的特徵越有利(偏向問題)。
4. 穩定性選擇。是一種基於二次抽樣和選擇演算法相結合較新的方法,選擇演算法可以是迴歸、 SVM 或其他類似的方法。它的主要思想是在不同的資料子集和特徵子集上執行特徵選擇演算法,不斷的重複,最終彙總特徵選擇結果,比如可以統計某個特徵被認為是重要特徵的頻率(被選為重要特徵的次數除以它所在的子集被測試的次數)。理想情況下,重要特徵的得分會接近 100% 。稍微弱一點的特徵得分會是非 0 的數,而最無用的特徵得分將會接近於 0 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2698439/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Python培訓分享Python程式設計師面試技巧程式設計師Python面試
- 好程式設計師web前端培訓分享Vue面試題程式設計師Web前端Vue面試題
- 好程式設計師Java培訓分享Mybatis面試題集合程式設計師JavaMyBatis面試題
- 好程式設計師Java培訓分享Java面試題集合篇一程式設計師Java面試題
- 好程式設計師Web前端培訓分享jQuery面試題梳理程式設計師Web前端jQuery面試題
- 好程式設計師Java培訓分享實用的Redis面試題一程式設計師JavaRedis面試題
- 好程式設計師web前端培訓分享JS面試題總結一程式設計師Web前端JS面試題
- 好程式設計師Java培訓分享Java面試題集合篇二程式設計師Java面試題
- 好程式設計師web前端培訓分享Vue面試題1.程式設計師Web前端Vue面試題
- 好程式設計師Java培訓分享22道Spring Boot面試題!程式設計師JavaSpring Boot面試題
- 好程式設計師Java培訓分享Java中級面試題合集程式設計師Java面試題
- 好程式設計師web前端培訓分享HTML/CSS部分面試題程式設計師Web前端HTMLCSS面試題
- 好程式設計師web前端培訓分享學習JavaScript程式設計師Web前端JavaScript
- 好程式設計師Python培訓分享如何寫Python裝飾器程式設計師Python
- 好程式設計師Python培訓分享Python面試寶典之基礎篇-03程式設計師Python面試
- 好程式設計師Python培訓分享學Python要注意什麼程式設計師Python
- 好程式設計師web前端培訓分享React學習筆記(一)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享JavaScript學習指南程式設計師Web前端JavaScript
- 好程式設計師Java培訓分享Java面試題之Java集合篇三程式設計師Java面試題
- 好程式設計師Python培訓分享四款Python程式庫程式設計師Python
- 好程式設計師Python培訓分享numpy簡介程式設計師Python
- 好程式設計師Python培訓分享Python生成器與迭代器程式設計師Python
- 好程式設計師Java培訓分享面試Java的注意事項程式設計師Java面試
- 好程式設計師Java培訓分享面試Java要注意什麼程式設計師Java面試
- 好程式設計師web前端培訓分享面試題Session、Cookie基礎知識程式設計師Web前端面試題SessionCookie
- 好程式設計師web前端培訓分享node學習筆記程式設計師Web前端筆記
- 好程式設計師Python培訓分享Python如何呼叫RPC介面程式設計師PythonRPC
- 好程式設計師Python培訓分享Python配置gRPC環境程式設計師PythonRPC
- 好程式設計師Python培訓分享Python異常處理程式設計師Python
- 好程式設計師Python培訓分享零基礎Python爬蟲學習線路程式設計師Python爬蟲
- 好程式設計師大資料培訓分享大資料面試寶典一程式設計師大資料面試
- 好程式設計師Java培訓分享如何避開面試中的“坑”程式設計師Java面試
- 好程式設計師Java培訓分享Java多執行緒常見面試問題程式設計師Java執行緒面試
- 好程式設計師web前端培訓分享HTMLCSS學習筆記BFC程式設計師Web前端HTMLCSS筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記Promise程式設計師Web前端JavaScript筆記Promise
- 好程式設計師web前端培訓分享JavaScript學習筆記cookie程式設計師Web前端JavaScript筆記Cookie
- 好程式設計師Java培訓分享學習Java需要哪些基礎程式設計師Java
- 好程式設計師web前端培訓分享JavaScript學習筆記SASS程式設計師Web前端JavaScript筆記