機器學習常見算法我的總結(面試用)

機器學習常見算法我的總結(面試用)面試

樸素貝葉斯

參考[1]算法

事件A和B同時發生的機率爲在A發生的狀況下發生B或者在B發生的狀況下發生A
[Math Processing Error]服務器

因此有:
[Math Processing Error]
對於給出的待分類項,求解在此項出現的條件下各個目標類別出現的機率,哪一個最大,就認爲此待分類項屬於哪一個類別網絡

工做原理機器學習更多實戰案例詳解
假設如今有樣本[Math Processing Error]這個待分類項(並認爲[Math Processing Error]裏面的特徵獨立)
再假設如今有分類目標[Math Processing Error]
那麼[Math Processing Error]就是最終的分類類別
而[Math Processing Error]
由於[Math Processing Error]對於每一個分類目標來講都同樣,因此就是求[Math Processing Error]
[Math Processing Error]
而具體的[Math Processing Error]和[Math Processing Error]都是能從訓練樣本中統計出來
[Math Processing Error]表示該類別下該特徵出現的機率
[Math Processing Error]表示所有類別中這個這個類別出現的機率
好的,就是這麼工做的_架構

工做流程框架

準備階段
肯定特徵屬性,並對每一個特徵屬性進行適當劃分,而後由人工對一部分待分類項進行分類,造成訓練樣本。
訓練階段
計算每一個類別在訓練樣本中的出現頻率及每一個特徵屬性劃分對每一個類別的條件機率估計
應用階段
使用分類器進行分類,輸入是分類器和待分類樣本,輸出是樣本屬於的分類類別
屬性特徵
特徵爲離散值時直接統計便可(表示統計機率)
特徵爲連續值的時候假定特徵符合高斯分佈:[Math Processing Error]
那麼[Math Processing Error]
Laplace校準(拉普拉斯校驗)
當某個類別下某個特徵劃分沒有出現時,會有[Math Processing Error],就是致使分類器質量下降,因此此時引入Laplace校驗,就是對沒類別下全部劃分的計數加1。運維

遇到特徵之間不獨立問題
參考改進的貝葉斯網絡,使用DAG來進行機率圖的描述機器學習

優缺點
樸素貝葉斯的優勢:機器學習更多實戰案例詳解分佈式

對小規模的數據表現很好,適合多分類任務,適合增量式訓練。函數

缺點:
對輸入數據的表達形式很敏感(離散、連續,值極大極小之類的)。
邏輯迴歸和線性迴歸
參考[2,3,4]

LR迴歸是一個線性的二分類模型,主要是計算在某個樣本特徵下事件發生的機率,好比根據用戶的瀏覽購買狀況做爲特徵來計算它是否會購買這個商品,抑或是它是否會點擊這個商品。而後LR的最終值是根據一個線性和函數再經過一個sigmoid函數來求得,這個線性和函數權重與特徵值的累加以及加上偏置求出來的,因此在訓練LR時也就是在訓練線性和函數的各個權重值w。

[Math Processing Error]
關於這個權重值w通常使用最大似然法來估計,假設如今有樣本[Math Processing Error],其中[Math Processing Error]表示樣本的特徵,[Math Processing Error]表示樣本的分類真實值,[Math Processing Error]的機率是[Math Processing Error],則[Math Processing Error]的機率是[Math Processing Error],那麼觀測機率爲:
[Math Processing Error]

機器學習更多實戰案例詳解

則最大似然函數爲:
[Math Processing Error]
對這個似然函數取對數以後就會獲得的表達式
[Math Processing Error]

估計這個[Math Processing Error]的極大值就能夠獲得[Math Processing Error]的估計值。

實際操做中通常會加個負號 改成求最小

因此求解問題就變成了這個最大似然函數的最優化問題,這裏一般會採樣隨機梯度降低法和擬牛頓迭代法來進行優化

梯度降低法

LR的損失函數爲:
[Math Processing Error]

這樣就變成了求[Math Processing Error]
其更新w的過程爲

[Math Processing Error]

其中[Math Processing Error],直到[Math Processing Error]不能再小時中止

梯度降低法的最大問題就是會陷入局部最優,而且每次在對當前樣本計算cost的時候都須要去遍歷所有樣本才能獲得cost值,這樣計算速度就會慢不少(雖然在計算的時候能夠轉爲矩陣乘法去更新整個w值)機器學習更多實戰案例詳解

因此如今好多框架(mahout)中通常使用隨機梯度降低法,它在計算cost的時候只計算當前的代價,最終cost是在所有樣本迭代一遍之求和得出,還有他在更新當前的參數w的時候並非依次遍歷樣本,而是從全部的樣本中隨機選擇一條進行計算,它方法收斂速度快(通常是使用最大迭代次數),而且還能夠避免局部最優,而且還很容易並行(使用參數服務器的方式進行並行)
[Math Processing Error]
這裏SGD能夠改進的地方就是使用動態的步長
[Math Processing Error]
其餘優化方法
擬牛頓法(記得是須要使用Hessian矩陣和cholesky分解)
BFGS
L-BFGS

優缺點:無需選擇學習率α,更快,可是更復雜

關於LR的過擬合問題:
若是咱們有不少的特性,在訓練集上擬合得很好,可是在預測集上卻達不到這種效果

減小feature個數(人工定義留多少個feature、算法選取這些feature)
正則化(爲了方便求解,L2使用較多)
添加正則化以後的損失函數爲: [Math Processing Error]
同時w的更新變爲[Math Processing Error]
注意:這裏的[Math Processing Error]不受正則化影響
p範數的求解:
[Math Processing Error]
關於LR的多分類:softmax
假設離散型隨機變量Y的取值集合是{1,2,..,k},則多分類的LR爲
[Math Processing Error]

這裏會輸出當前樣本下屬於哪一類的機率,而且知足所有機率加起來=1

關於softmax和k個LR的選擇
若是類別之間是否互斥(好比音樂只能屬於古典音樂、鄉村音樂、搖滾月的一種)就用softmax
不然類別以前有聯繫(好比一首歌曲可能有影視原聲,也可能包含人聲,或者是舞曲),這個時候使用k個LR更爲合適

優缺點:
Logistic迴歸優勢:

實現簡單;
分類時計算量很是小,速度很快,存儲資源低;

缺點:

容易欠擬合,通常準確度不過高機器學習更多實戰案例詳解
只能處理兩分類問題(在此基礎上衍生出來的softmax能夠用於多分類),且必須線性可分;
ps 另外LR還能夠參考這篇以及多分類能夠看這篇,softmax能夠看這篇

KNN算法

給一個訓練數據集和一個新的實例,在訓練數據集中找出與這個新實例最近的k個訓練實例,而後統計最近的k個訓練實例中所屬類別計數最多的那個類,就是新實例的類

三要素:
k值的選擇
距離的度量(常見的距離度量有歐式距離,馬氏距離等)
分類決策規則 (多數表決規則)

k值的選擇
k值越小代表模型越複雜,更加容易過擬合
可是k值越大,模型越簡單,若是k=N的時候就代表不管什麼點都是訓練集中類別最多的那個類
因此通常k會取一個較小的值,而後用過交叉驗證來肯定
這裏所謂的交叉驗證就是將樣本劃分一部分出來爲預測樣本,好比95%訓練,5%預測,而後k分別取1,2,3,4,5之類的,進行預測,計算最後的分類偏差,選擇偏差最小的k

KNN的迴歸機器學習更多實戰案例詳解
在找到最近的k個實例以後,能夠計算這k個實例的平均值做爲預測值。或者還能夠給這k個實例添加一個權重再求平均值,這個權重與度量距離成反比(越近權重越大)。

優缺點:
KNN算法的優勢:

思想簡單,理論成熟,既能夠用來作分類也能夠用來作迴歸;
可用於非線性分類;
訓練時間複雜度爲O(n);
準確度高,對數據沒有假設,對outlier不敏感;

缺點:

計算量大;
樣本不平衡問題(即有些類別的樣本數量不少,而其它樣本的數量不多);
須要大量的內存;

KD樹

KD樹是一個二叉樹,表示對K維空間的一個劃分,能夠進行快速檢索(那KNN計算的時候不須要對全樣本進行距離的計算了)

構造KD樹
在k維的空間上循環找子區域的中位數進行劃分的過程。
假設如今有K維空間的數據集[Math Processing Error],[Math Processing Error]
首先構造根節點,以座標[Math Processing Error]的中位數b爲切分點,將根結點對應的矩形局域劃分爲兩個區域,區域1中[Math Processing Error],區域2中[Math Processing Error]
構造葉子節點,分別以上面兩個區域中[Math Processing Error]的中位數做爲切分點,再次將他們兩兩劃分,做爲深度1的葉子節點,(若是a2=中位數,則a2的實例落在切分面)
不斷重複2的操做,深度爲j的葉子節點劃分的時候,索取的[Math Processing Error] 的[Math Processing Error],直到兩個子區域沒有實例時中止

KD樹的搜索機器學習更多實戰案例詳解
首先從根節點開始遞歸往下找到包含x的葉子節點,每一層都是找對應的xi
將這個葉子節點認爲是當前的「近似最近點」
遞歸向上回退,若是以x圓心,以「近似最近點」爲半徑的球與根節點的另外一半子區域邊界相交,則說明另外一半子區域中存在與x更近的點,則進入另外一個子區域中查找該點而且更新」近似最近點「
重複3的步驟,直到另外一子區域與球體不相交或者退回根節點
最後更新的」近似最近點「與x真正的最近點
KD樹進行KNN查找
經過KD樹的搜索找到與搜索目標最近的點,這樣KNN的搜索就能夠被限制在空間的局部區域上了,能夠大大增長效率。

KD樹搜索的複雜度
當實例隨機分佈的時候,搜索的複雜度爲log(N),N爲實例的個數,KD樹更加適用於實例數量遠大於空間維度的KNN搜索,若是實例的空間維度與實例個數差很少時,它的效率基於等於線性掃描。

後來本身有實現過KD樹,能夠看KNN算法中KD樹的應用

SVM、SMO

對於樣本點[Math Processing Error]以及svm的超平面:[Math Processing Error]
函數間隔:[Math Processing Error]
幾何間隔:[Math Processing Error],其中[Math Processing Error]爲[Math Processing Error]的L2範數,幾何間隔不會由於參數比例的改變而改變
svm的基本想法就是求解能正確劃分訓練樣本而且其幾何間隔最大化的超平面。

線性SVM問題機器學習更多實戰案例詳解
先來看svm的問題:
[Math Processing Error]
那麼假設[Math Processing Error]
則將問題轉爲:

[Math Processing Error]
因爲[Math Processing Error]的成比例增減不會影響實際間距,因此這裏的取[Math Processing Error],又由於[Math Processing Error]
因此最終的問題就變爲了
[Math Processing Error]
這樣就變成了一個凸的二次規劃化,能夠將其轉換爲拉格朗日函數,而後使用對偶算法來求解

對偶求解

引進拉格朗日乘子[Math Processing Error],定義拉格朗日函數:
[Math Processing Error]
根據對偶性質 原始問題就是求對偶問題的極大極小
[Math Processing Error]

先求L對[Math Processing Error]的極小,再求對[Math Processing Error]的極大。
求[Math Processing Error],也就是至關於對[Math Processing Error]求偏導而且另其等於0
[Math Processing Error]

代入後可得
[Math Processing Error]

求[Math Processing Error]對[Math Processing Error]的極大,便是對偶問題:
[Math Processing Error]

將求最大轉爲求最小,獲得等價的式子爲:
[Math Processing Error]
假如求解出來的[Math Processing Error]爲[Math Processing Error]
則獲得最優的[Math Processing Error]分別爲
[Math Processing Error]

因此,最終的決策分類面爲
[Math Processing Error]

也就是說,分類決策函數只依賴於輸入[Math Processing Error]與訓練樣本的輸入的內積

ps:上面介紹的是SVM的硬間距最大化,還有一種是軟間距最大化,引用了鬆弛變量[Math Processing Error],則次svm問題變爲:
[Math Processing Error]

其他解決是與硬間距的一致~

還有:與分離超平面最近的樣本點稱爲支持向量

損失函數
損失函數爲(優化目標):
[Math Processing Error]

其中[Math Processing Error]稱爲摺頁損失函數,由於:
[Math Processing Error]
爲何要引入對偶算法
對偶問題每每更加容易求解(結合拉格朗日和kkt條件)
能夠很天然的引用核函數(拉格朗日表達式裏面有內積,而核函數也是經過內積進行映射的)

核函數

將輸入特徵x(線性不可分)映射到高維特徵R空間,能夠在R空間上讓SVM進行線性能夠變,這就是核函數的做用機器學習更多實戰案例詳解

多項式核函數:[Math Processing Error]
高斯核函數:[Math Processing Error]
字符串核函數:貌似用於字符串處理等
SVM優缺點
優勢:

使用核函數能夠向高維空間進行映射
使用核函數能夠解決非線性的分類
分類思想很簡單,就是將樣本與決策面的間隔最大化
分類效果較好

缺點:

對大規模數據訓練比較困難
沒法直接支持多分類,可是可使用間接的方法來作
SMO
SMO是用於快速求解SVM的
它選擇凸二次規劃的兩個變量,其餘的變量保持不變,而後根據這兩個變量構建一個二次規劃問題,這個二次規劃關於這兩個變量解會更加的接近原始二次規劃的解,經過這樣的子問題劃分能夠大大增長整個算法的計算速度,關於這兩個變量:

其中一個是嚴重違反KKT條件的一個變量
另外一個變量是根據自由約束肯定,好像是求剩餘變量的最大化來肯定的。
SVM多分類問題

直接法

直接在目標函數上進行修改,將多個分類面的參數求解合併到一個最優化問題中,經過求解該優化就能夠實現多分類(計算複雜度很高,實現起來較爲困難)

間接法

一對多
其中某個類爲一類,其他n-1個類爲另外一個類,好比A,B,C,D四個類,第一次A爲一個類,{B,C,D}爲一個類訓練一個分類器,第二次B爲一個類,{A,C,D}爲另外一個類,按這方式共須要訓練4個分類器,最後在測試的時候將測試樣本通過這4個分類器[Math Processing Error],[Math Processing Error],[Math Processing Error]和[Math Processing Error],取其最大值爲分類器(這種方式因爲是1對M分類,會存在偏置,很不實用)
一對一(libsvm實現的方式)
任意兩個類都訓練一個分類器,那麼n個類就須要n(n-1)/2個svm分類器。
仍是以A,B,C,D爲例,那麼須要{A,B},{A,C},{A,D},{B,C},{B,D},{C,D}爲目標共6個分類器,而後在預測的將測試樣本經過這6個分類器以後進行投票選擇最終結果。(這種方法雖好,可是須要n
(n-1)/2個分類器代價太大,不過有好像使用循環圖來進行改進)
決策樹
決策樹是一顆依託決策而創建起來的樹。

ID3

首先是針對當前的集合,計算每一個特徵的信息增益
而後選擇信息增益最大的特徵做爲當前節點的決策決策特徵
根據特徵不一樣的類別劃分到不一樣的子節點(好比年齡特徵有青年,中年,老年,則劃分到3顆子樹)
而後繼續對子節點進行遞歸,直到全部特徵都被劃分
[Math Processing Error]
一個屬性中某個類別的熵 [Math Processing Error], [Math Processing Error]表示[Math Processing Error]狀況下發生[Math Processing Error]的機率,也便是統計機率。

[Math Processing Error]
整個屬性的熵,爲各個類別的比例與各自熵的加權求和。

[Math Processing Error]
增益表示分類目標的熵減去當前屬性的熵,增益越大,分類能力越強
(這裏前者叫作經驗熵,表示數據集分類C的不肯定性,後者就是經驗條件熵,表示在給定A的條件下對數據集分類C的不肯定性,二者相減叫作互信息,決策樹的增益等價於互信息)。
好比說當前屬性是是否擁有房產,分類是是否能償還債務機器學習更多實戰案例詳解
如今:

有用房產爲7個,4個能償還債務,3個沒法償還債務
而後無房產爲3個,其中1個能償還債務,2個沒法償還債務
而後
有房子的熵:[Math Processing Error]
無房子的熵:[Math Processing Error]
分類的熵:[Math Processing Error]
最終的增益=[Math Processing Error] 最大越好

關於損失函數
設樹的葉子節點個數爲[Math Processing Error],[Math Processing Error]爲其中一個葉子節點,該葉子節點有[Math Processing Error]個樣本,其中[Math Processing Error]類的樣本有[Math Processing Error]個,[Math Processing Error]爲葉子節點上的經驗熵,則損失函數定義爲
[Math Processing Error]

其中
[Math Processing Error]

代入能夠獲得
[Math Processing Error]
[Math Processing Error]爲正則化項,[Math Processing Error]是用於調節比率
決策樹的生成只考慮了信息增益

C4.5
它是ID3的一個改進算法,使用信息增益率來進行屬性的選擇
[Math Processing Error]

優缺點:
準確率高,可是子構造樹的過程當中須要進行屢次的掃描和排序,因此它的運算效率較低

Cart
分類迴歸樹(Classification And Regression Tree)是一個決策二叉樹,在經過遞歸的方式創建,每一個節點在分裂的時候都是但願經過最好的方式將剩餘的樣本劃分紅兩類,這裏的分類指標:

分類樹:基尼指數最小化(gini_index)
迴歸樹:平方偏差最小化
分類樹:

首先是根據當前特徵計算他們的基尼增益機器學習更多實戰案例詳解
選擇基尼增益最小的特徵做爲劃分特徵
從該特徵中查找基尼指數最小的分類類別做爲最優劃分點
將當前樣本劃分紅兩類,一類是劃分特徵的類別等於最優劃分點,另外一類就是不等於
針對這兩類遞歸進行上述的劃分工做,直達全部葉子指向同同樣本目標或者葉子個數小於必定的閾值
gini用來度量分佈不均勻性(或者說不純),整體的類別越雜亂,GINI指數就越大(跟熵的概念很類似)
[Math Processing Error]
[Math Processing Error]當前數據集中第i類樣本的比例
gini越小,表示樣本分佈越均勻(0的時候就表示只有一類了),越大越不均勻
基尼增益[Math Processing Error]
表示當前屬性的一個混亂 [Math Processing Error]表示當前類別佔全部類別的機率
最終Cart選擇GiniGain最小的特徵做爲劃分特徵

以ID3中的貸款的那棵樹爲樣例:
基尼指數有房產:[Math Processing Error]
基尼指數無房產:[Math Processing Error]
基尼增益爲:[Math Processing Error]
迴歸樹:

迴歸樹是以平方偏差最小化的準則劃分爲兩塊區域

遍歷特徵計算最優的劃分點s,
使其最小化的平方偏差是:[Math Processing Error]
計算根據s劃分到左側和右側子樹的目標值與預測值之差的平方和最小,這裏的預測值是兩個子樹上輸入xi樣本對應[Math Processing Error]的均值
找到最小的劃分特徵j以及其最優的劃分點s,根據特徵j以及劃分點s將現有的樣本劃分爲兩個區域,一個是在特徵j上小於等於s,另外一個在在特徵j上大於s
[Math Processing Error]
進入兩個子區域按上述方法繼續劃分,直到到達中止條件
這裏面的最小化我記得可使用最小二乘法來求

關於剪枝:用獨立的驗證數據集對訓練集生長的樹進行剪枝(過後剪枝)。

中止條件
直到每一個葉子節點都只有一種類型的記錄時中止,(這種方式很容易過擬合)
另外一種時當葉子節點的記錄樹小於必定的閾值或者節點的信息增益小於必定的閾值時中止
關於特徵與目標值
特徵離散 目標值離散:可使用ID3,cart
特徵連續 目標值離散:將連續的特徵離散化 可使用ID3,cart
特徵離散 目標值連續
決策樹的分類與迴歸

分類樹

輸出葉子節點中所屬類別最多的那一類
迴歸樹
輸出葉子節點中各個樣本值的平均值
理想的決策樹
葉子節點數儘可能少
葉子節點的深度儘可能小(太深可能會過擬合)
解決決策樹的過擬合
剪枝
前置剪枝:在分裂節點的時候設計比較苛刻的條件,如不知足則直接中止分裂(這樣幹決策樹沒法到最優,也沒法獲得比較好的效果)
後置剪枝:在樹創建完以後,用單個節點代替子樹,節點的分類採用子樹中主要的分類(這種方法比較浪費前面的創建過程)
交叉驗證
隨機森林

優缺點機器學習更多實戰案例詳解
優勢:

計算量簡單,可解釋性強,比較適合處理有缺失屬性值的樣本,可以處理不相關的特徵;
缺點:
單顆決策樹分類能力弱,而且對連續值變量難以處理;
容易過擬合(後續出現了隨機森林,減少了過擬合現象);
隨機森林RF
隨機森林是有不少隨機得決策樹構成,它們之間沒有關聯。獲得RF之後,在預測時分別對每個決策樹進行判斷,最後使用Bagging的思想進行結果的輸出(也就是投票的思想)

學習過程
如今有N個訓練樣本,每一個樣本的特徵爲M個,須要建K顆樹
從N個訓練樣本中有放回的取N個樣本做爲一組訓練集(其他未取到的樣本做爲預測分類,評估其偏差)
從M個特徵中取m個特徵左右子集特徵(m<<M)
對採樣的數據使用徹底分裂的方式來創建決策樹,這樣的決策樹每一個節點要麼沒法分裂,要麼全部的樣本都指向同一個分類
重複2的過程K次,便可創建森林
預測過程
將預測樣本輸入到K顆樹分別進行預測
若是是分類問題,直接使用投票的方式選擇分類頻次最高的類別
若是是迴歸問題,使用分類以後的均值做爲結果
參數問題
這裏的通常取m=sqrt(M)
關於樹的個數K,通常都須要成百上千,可是也有具體的樣本有關(好比特徵數量)
樹的最大深度,(太深可能可能致使過擬合??)
節點上的最小樣本數、最小信息增益
泛化偏差估計
使用oob(out-of-bag)進行泛化偏差的估計,將各個樹的未採樣樣本做爲預測樣本(大約有36.8%),使用已經創建好的森林對各個預測樣本進行預測,預測完以後最後統計誤分得個數佔總預測樣本的比率做爲RF的oob誤分率。

學習算法
ID3算法:處理離散值的量
C45算法:處理連續值的量
Cart算法:離散和連續 二者都合適?
關於CART
Cart能夠經過特徵的選擇迭代創建一顆分類樹,使得每次的分類平面能最好的將剩餘數據分爲兩類

[Math Processing Error],表示每一個類別出現的機率和與1的差值,
分類問題:[Math Processing Error]
迴歸問題:[Math Processing Error]
查找最佳特徵f已經最佳屬性閾值th 小於th的在左邊,大於th的在右邊子樹

優缺點
可以處理大量特徵的分類,而且還不用作特徵選擇
在訓練完成以後能給出哪些feature的比較重要
訓練速度很快
很容易並行
實現相對來講較爲簡單
GBDT
GBDT的精髓在於訓練的時候都是以上一顆樹的殘差爲目標,這個殘差就是上一個樹的預測值與真實值的差值。

好比,當前樣本年齡是18歲,那麼第一顆會去按18歲來訓練,可是訓練完以後預測的年齡爲12歲,差值爲6,
因此第二顆樹的會以6歲來進行訓練,假如訓練完以後預測出來的結果爲6,那麼兩棵樹累加起來就是真實年齡了,
可是假如第二顆樹預測出來的結果是5,那麼剩餘的殘差1就會交給第三個樹去訓練。
Boosting的好處就是每一步的參加就是變相了增長了分錯instance的權重,而對已經對的instance趨向於0,這樣後面的樹就能夠更加關注錯分的instance的訓練了

Shrinkage
Shrinkage認爲,每次走一小步逐步逼近的結果要比每次邁一大步逼近結果更加容易避免過擬合。
[Math Processing Error]
就像咱們作互聯網,老是先解決60%用戶的需求湊合着,再解決35%用戶的需求,最後才關注那5%人的需求,這樣就能逐漸把產品作好.

調參
樹的個數 100~10000
葉子的深度 3~8
學習速率 0.01~1
葉子上最大節點樹 20
訓練採樣比例 0.5~1
訓練特徵採樣比例 sqrt(num)
優缺點:
優勢:

精度高
能處理非線性數據
能處理多特徵類型
適合低維稠密數據
缺點:
並行麻煩(由於上下兩顆樹有聯繫)
多分類的時候 複雜度很大
BP
最小二乘法
最小二乘法是一種數學的優化技術,經過求最小化平方偏差來尋找最佳的函數匹配
假設如今有二維的觀測數據[Math Processing Error],求[Math Processing Error]的擬合。

現設[Math Processing Error] 若是有[Math Processing Error]能獲得[Math Processing Error]最小,則該線比較理想
因此先變爲求[Math Processing Error] ,這個與[Math Processing Error]等價
而[Math Processing Error]
那麼現設[Math Processing Error]求其最小便可

上述就是最小二乘原則,估計[Math Processing Error]的方法稱爲最小二乘法

先求[Math Processing Error]對[Math Processing Error]的偏導:
[Math Processing Error]

[Math Processing Error]

現設:
[Math Processing Error]

則代入上述偏導:
[Math Processing Error]

求該行列式:
[Math Processing Error]

因此有惟一解

最後記:
[Math Processing Error]

[Math Processing Error]
百度文庫-最小二乘法

EM

EM用於隱含變量的機率模型的極大似然估計,它通常分爲兩步:第一步求指望(E),第二步求極大(M),
若是機率模型的變量都是觀測變量,那麼給定數據以後就能夠直接使用極大似然法或者貝葉斯估計模型參數。
可是當模型含有隱含變量的時候就不能簡單的用這些方法來估計,EM就是一種含有隱含變量的機率模型參數的極大似然估計法。

應用到的地方:混合高斯模型、混合樸素貝葉斯模型、因子分析模型

Bagging
從N樣本中有放回的採樣N個樣本
對這N個樣本在全屬性上創建分類器(CART,SVM)
重複上面的步驟,創建m個分類器
預測的時候使用投票的方法獲得結果
Boosting
boosting在訓練的時候會給樣本加一個權重,而後使loss function儘可能去考慮那些分錯類的樣本(好比給分錯類的樣本的權重值加大)

凸優化
在機器學習中每每是最終要求解某個函數的最優值,可是通常狀況下,任意一個函數的最優值求解比較困難,可是對於凸函數來講就能夠有效的求解出全局最優值。

凸集
一個集合C是,當前僅當任意x,y屬於C且[Math Processing Error],都有[Math Processing Error]屬於C
用通俗的話來講C集合線段上的任意兩點也在C集合中

凸函數
一個函數f其定義域(D(f))是凸集,而且對任意x,y屬於D(f)和[Math Processing Error]都有
[Math Processing Error]

用通俗的話來講就是曲線上任意兩點的割線都在曲線的上方

常見的凸函數有:

指數函數[Math Processing Error]
負對數函數[Math Processing Error]
開口向上的二次函數等
凸函數的斷定:

若是f是一階可導,對於任意數據域內的x,y知足[Math Processing Error]
若是f是二階可導,
凸優化應用舉例
SVM:其中由[Math Processing Error] 轉向[Math Processing Error]
最小二乘法?
LR的損失函數[Math Processing Error]

※更多文章和資料|點擊後方文字直達 ↓↓↓
100GPython自學資料包
阿里雲K8s實戰手冊
[阿里雲CDN排坑指南]CDN
ECS運維指南
DevOps實踐手冊
Hadoop大數據實戰手冊
Knative雲原生應用開發指南
OSS 運維實戰手冊
雲原生架構白皮書
Zabbix企業級分佈式監控系統源碼文檔

相關文章
相關標籤/搜索