有監督學習和無監督學習的區別
- 有監督學習:對具有標記的訓練樣本進行學習,以盡可能對訓練樣本集外的數據進行分類預測。(LR,SVM,BP,RF,GBRT)
- 無監督學習:對未標記的樣本進行訓練學習,比發現這些樣本中的結構知識。(KMeans,DL)
正則化
正則化是針對過擬合而提出的,以為在求解模型最優的是一般優化最小的經驗風險,現在在該經驗風險上加入模型復雜度這一項(正則化項是模型參數向量的范數),並使用一個rate比率來權衡模型復雜度與以往經驗風險的權重,如果模型復雜度越高,結構化的經驗風險會越大,現在的目標就變為了結構經驗風險的最優化,可以防止模型訓練過度復雜,有效的降低過擬合的風險。
奧卡姆剃刀原理,能夠很好的解釋已知數據並且十分簡單才是最好的模型。
過擬合
如果一味的去提高訓練數據的預測能力,所選模型的復雜度往往會很高,這種現象稱為過擬合。所表現的就是模型訓練時候的誤差很小,但在測試的時候誤差很大。
產生的原因
- 因為參數太多,會導致我們的模型復雜度上升,容易過擬合
- 權值學習迭代次數足夠多(Overtraining),擬合了訓練數據中的噪聲和訓練樣例中沒有代表性的特征.
解決方法
- 交叉驗證法
- 減少特征
- 正則化
- 權值衰減
- 驗證數據
泛化能力
泛化能力是指模型對未知數據的預測能力
生成模型和判別模型
- 生成模型:由數據學習聯合概率分布P(X,Y),然后求出條件概率分布P(Y|X)作為預測的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。(朴素貝葉斯)
生成模型可以還原聯合概率分布p(X,Y),並且有較快的學習收斂速度,還可以用於隱變量的學習 - 判別模型:由數據直接學習決策函數Y=f(X)或者條件概率分布P(Y|X)作為預測的模型,即判別模型。(k近鄰、決策樹)
直接面對預測,往往准確率較高,直接對數據在各種程度上的抽象,所以可以簡化模型
線性分類器與非線性分類器的區別以及優劣
如果模型是參數的線性函數,並且存在線性分類面,那么就是線性分類器,否則不是。
常見的線性分類器有:LR,貝葉斯分類,單層感知機、線性回歸
常見的非線性分類器:決策樹、RF、GBDT、多層感知機
SVM兩種都有(看線性核還是高斯核)
- 線性分類器速度快、編程方便,但是可能擬合效果不會很好
- 非線性分類器編程復雜,但是效果擬合能力強
特征比數據量還大時,選擇什么樣的分類器?
線性分類器,因為維度高的時候,數據一般在維度空間里面會比較稀疏,很有可能線性可分
對於維度很高的特征,你是選擇線性還是非線性分類器?
理由同上
對於維度極低的特征,你是選擇線性還是非線性分類器?
非線性分類器,因為低維空間可能很多特征都跑到一起了,導致線性不可分
ill-condition病態問題
訓練完的模型測試樣本稍作修改就會得到差別很大的結果,就是病態問題(這簡直是不能用啊)
L1和L2正則的區別,如何選擇L1和L2正則
他們都是可以防止過擬合,降低模型復雜度
- L1是在loss function后面加上 模型參數的1范數(也就是|xi|)
-
L2是在loss function后面加上 模型參數的2范數(也就是sigma(xi^2)),注意L2范數的定義是sqrt(sigma(xi^2)),在正則項上沒有添加sqrt根號是為了更加容易優化
-
L1 會產生稀疏的特征
- L2 會產生更多地特征但是都會接近於0
L1會趨向於產生少量的特征,而其他的特征都是0,而L2會選擇更多的特征,這些特征都會接近於0。L1在特征選擇時候非常有用,而L2就只是一種規則化而已。
特征向量的歸一化方法
- 線性函數轉換,表達式如下:y=(x-MinValue)/(MaxValue-MinValue)
- 對數函數轉換,表達式如下:y=log10 (x)
- 反余切函數轉換 ,表達式如下:y=arctan(x)*2/PI
- 減去均值,乘以方差:y=(x-means)/ variance
特征向量的異常值處理
- 用均值或者其他統計量代替
越小的參數說明模型越簡單
過擬合的,擬合會經過曲面的每個點,也就是說在較小的區間里面可能會有較大的曲率,這里的導數就是很大,線性模型里面的權值就是導數,所以越小的參數說明模型越簡單。
追加:這個其實可以看VC維相關的東西感覺更加合適
svm中rbf核函數與高斯和函數的比較
高斯核函數好像是RBF核的一種
KMeans初始類簇中心點的選取
選擇批次距離盡可能遠的K個點
首先隨機選取一個點作為初始點,然后選擇距離與該點最遠的那個點作為中心點,再選擇距離與前兩個點最遠的店作為第三個中心店,以此類推,直至選取大k個
選用層次聚類或者Canopy算法進行初始聚類
ROC、AUC
ROC和AUC通常是用來評價一個二值分類器的好壞
ROC曲線
曲線坐標上:
- X軸是FPR(表示假陽率-預測結果為positive,但是實際結果為negitive,FP/(N))
- Y軸式TPR(表示真陽率-預測結果為positive,而且的確真實結果也為positive的,TP/P)
那么平面的上點(X,Y):
- (0,1)表示所有的positive的樣本都預測出來了,分類效果最好
- (0,0)表示預測的結果全部為negitive
- (1,0)表示預測的錯過全部分錯了,分類效果最差
- (1,1)表示預測的結果全部為positive
針對落在x=y上點,表示是采用隨機猜測出來的結果
ROC曲線建立
一般默認預測完成之后會有一個概率輸出p,這個概率越高,表示它對positive的概率越大。
現在假設我們有一個threshold,如果p>threshold,那么該預測結果為positive,否則為negitive,按照這個思路,我們多設置幾個threshold,那么我們就可以得到多組positive和negitive的結果了,也就是我們可以得到多組FPR和TPR值了
將這些(FPR,TPR)點投射到坐標上再用線連接起來就是ROC曲線了
當threshold取1和0時,分別得到的就是(0,0)和(1,1)這兩個點。(threshold=1,預測的樣本全部為負樣本,threshold=0,預測的樣本全部為正樣本)
AUC
AUC(Area Under Curve)被定義為ROC曲線下的面積,顯然這個面積不會大於1(一般情況下ROC會在x=y的上方,所以0.5<AUC<1).
AUC越大說明分類效果越好
為什么要使用ROC和AUC
因為當測試集中的正負樣本發生變化時,ROC曲線能基本保持不變,但是precision和recall可能就會有較大的波動。
http://www.douban.com/note/284051363/?type=like
測試集和訓練集的區別
訓練集用於建立模型,測試集評估模型的預測等能力
優化Kmeans
使用kd樹或者ball tree(這個樹不懂)
將所有的觀測實例構建成一顆kd樹,之前每個聚類中心都是需要和每個觀測點做依次距離計算,現在這些聚類中心根據kd樹只需要計算附近的一個局部區域即可
數據挖掘和機器學習的區別
機器學習是數據挖掘的一個重要工具,但是數據挖掘不僅僅只有機器學習這一類方法,還有其他很多非機器學習的方法,比如圖挖掘,頻繁項挖掘等。感覺數據挖掘是從目的而言的,但是機器學習是從方法而言的。
備注
題目主要來源於網絡,答案主要來源於網絡或者《統計學習方法》,還有自己一小部分的總結,如果錯誤之處敬請指出
如果想要了解關於常見模型的東東可以看這篇機器學習常見算法個人總結(面試用)文章