1. 程式人生 > >機器學習常見演算法總結(面試用)

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

樸素貝葉斯

參考[1]

事件A和B同時發生的概率為在A發生的情況下發生B或者在B發生的情況下發生A

P(A∩B)=P(A)∗P(B|A)=P(B)∗P(A|B)

所以有:

P(A|B)=P(B|A)∗P(A)P(B)

對於給出的待分類項,求解在此項出現的條件下各個目標類別出現的概率,哪個最大,就認為此待分類項屬於哪個類別

工作原理

1、假設現在有樣本x=(a1,a2,a3,…an)這個待分類項(並認為x裡面的特徵獨立)

2、再假設現在有分類目標Y={y1,y2,y3,y4..yn}

3、那麼max(P(y1|x),P(y2|x),P(y3|x)..P(yn|x))就是最終的分類類別

4、而P(yi|x)=p(x|yi)∗P(yi)P(x)

5、因為x對於每個分類目標來說都一樣,所以就是求max(P(x|yi)∗p(yi))

6、P(x|yi)∗p(yi)=p(yi)∗∏i(P(ai|yi))

7、而具體的p(ai|yi)和p(yi)都是能從訓練樣本中統計出來

  • p(ai|yi)表示該類別下該特徵出現的概率

  • p(yi)表示全部類別中這個這個類別出現的概率

8、好的,就是這麼工作的^_^

工作流程

1、準備階段

確定特徵屬性,並對每個特徵屬性進行適當劃分,然後由人工對一部分待分類項進行分類,形成訓練樣本。

2、訓練階段

計算每個類別在訓練樣本中的出現頻率及每個特徵屬性劃分對每個類別的條件概率估計

3、應用階段

使用分類器進行分類,輸入是分類器和待分類樣本,輸出是樣本屬於的分類類別

屬性特徵

1、特徵為離散值時直接統計即可(表示統計概率)

2、特徵為連續值的時候假定特徵符合高斯分佈:g(x,n,u)

那麼p(ak|yi)=g(xk,ni,ui)

Laplace校準(拉普拉斯校驗)

當某個類別下某個特徵劃分沒有出現時,會有P(a|y)=0,就是導致分類器質量降低,所以此時引入Laplace校驗,就是對沒類別下所有劃分的計數加1。

遇到特徵之間不獨立問題

參考改進的貝葉斯網路,使用DAG來進行概率圖的描述

優缺點

樸素貝葉斯的優點:

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

缺點:

對輸入資料的表達形式很敏感(離散、連續,值極大極小之類的)。

邏輯迴歸和線性迴歸

LR迴歸是一個線性的二分類模型,主要是計算在某個樣本特徵下事件發生的概率,比如根據使用者的瀏覽購買情況作為特徵來計算它是否會購買這個商品,抑或是它是否會點選這個商品。然後LR的最終值是根據一個線性和函式再通過一個sigmod函式來求得,這個線性和函式權重與特徵值的累加以及加上偏置求出來的,所以在訓練LR時也就是在訓練線性和函式的各個權重值w。

hw(x)=11+e−(wTx+b)

關於這個權重值w一般使用最大似然法來估計,假設現在有樣本{xi,yi},其中xi表示樣本的特徵,yi∈{0,1}表示樣本的分類真實值,yi=1的概率是pi,則yi=0的概率是1−pi,那麼觀測概率為:

p(yi)=pyii∗(1−pi)1−yi

則最大似然函式為:

∏(hw(xi)yi∗(1−hw(xi))1−yi)

對這個似然函式取對數之後就會得到的表示式

L(w)=∑i(yi∗loghw(xi)−(1−yi)∗log(1−hw(xi)))=∑i(yi∗(wTxi)−log(1+ewTxi))

估計這個L(w)的極大值就可以得到w的估計值。

實際操作中一般會加個負號 改為求最小

所以求解問題就變成了這個最大似然函式的最優化問題,這裡通常會取樣隨機梯度下降法和擬牛頓迭代法來進行優化

梯度下降法

LR的損失函式為:

J(w)=−1NN∑i=1(yi∗log(hw(xi))+(1−yi)∗log(1−hw(xi)))

這樣就變成了求min(J(w))

其更新w的過程為

w:=w−α∗▽J(w)w:=w−α∗1N∗N∑i=1(hw(xi)−yi)∗xi)

其中α為步長,直到J(w)不能再小時停止

梯度下降法的最大問題就是會陷入區域性最優,並且每次在對當前樣本計算cost的時候都需要去遍歷全部樣本才能得到cost值,這樣計算速度就會慢很多(雖然在計算的時候可以轉為矩陣乘法去更新整個w值)

所以現在好多框架(mahout)中一般使用隨機梯度下降法,它在計算cost的時候只計算當前的代價,最終cost是在全部樣本迭代一遍之求和得出,還有他在更新當前的引數w的時候並不是依次遍歷樣本,而是從所有的樣本中隨機選擇一條進行計算,它方法收斂速度快(一般是使用最大迭代次數),並且還可以避免區域性最優,並且還很容易並行(使用引數伺服器的方式進行並行)

w:=w−α∗(hw(xj)−yj)∗xi);j∈1 Nandrandomly

這裡SGD可以改進的地方就是使用動態的步長

α=0.04∗(1.0+n+i)+r

其他優化方法

  • 擬牛頓法(記得是需要使用Hessian矩陣和cholesky分解)

  • BFGS

  • L-BFGS

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

關於LR的過擬合問題:

如果我們有很多的特性,在訓練集上擬合得很好,但是在預測集上卻達不到這種效果

1、減少feature個數(人工定義留多少個feature、演算法選取這些feature)

2、正則化(為了方便求解,L2使用較多)

  • 新增正則化之後的損失函式為: J(w)=−1N∑Ni=1(yi∗log(hw(xi))+(1−yi)∗log(1−hw(xi)))+λ||w||2

  • 同時w的更新變為w:=w−α∗(hw(xj)−yj)∗xi)−2α∗wj

  • 注意:這裡的w0不受正則化影響

關於LR的多分類:softmax

假設離散型隨機變數Y的取值集合是{1,2,..,k},則多分類的LR為

P(Y=a|x)=exp(wa∗x)(∑ki=1(wi∗x));1<a<k

這裡會輸出當前樣本下屬於哪一類的概率,並且滿足全部概率加起來=1

關於softmax和k個LR的選擇

如果類別之間是否互斥(比如音樂只能屬於古典音樂、鄉村音樂、搖滾月的一種)就用softmax

否則類別之前有聯絡(比如一首歌曲可能有影視原聲,也可能包含人聲,或者是舞曲),這個時候使用k個LR更為合適

優缺點:

Logistic迴歸優點:

1、實現簡單;

2、分類時計算量非常小,速度很快,儲存資源低;

缺點:

1、容易欠擬合,一般準確度不太高

2、只能處理兩分類問題(在此基礎上衍生出來的softmax可以用於多分類),且必須線性可分;

ps 另外LR還可以參考這篇以及多分類可以看這篇

KNN演算法

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

三要素:

1、k值的選擇

2、距離的度量(常見的距離度量有歐式距離,馬氏距離等)

3、分類決策規則 (多數表決規則)

k值的選擇

1、k值越小表明模型越複雜,更加容易過擬合

2、但是k值越大,模型越簡單,如果k=N的時候就表明無論什麼點都是訓練集中類別最多的那個類

所以一般k會取一個較小的值,然後用過交叉驗證來確定

這裡所謂的交叉驗證就是將樣本劃分一部分出來為預測樣本,比如95%訓練,5%預測,然後k分別取1,2,3,4,5之類的,進行預測,計算最後的分類誤差,選擇誤差最小的k

KNN的迴歸

在找到最近的k個例項之後,可以計算這k個例項的平均值作為預測值。或者還可以給這k個例項新增一個權重再求平均值,這個權重與度量距離成反比(越近權重越大)。

優缺點:

KNN演算法的優點:

1、思想簡單,理論成熟,既可以用來做分類也可以用來做迴歸;

2、可用於非線性分類;

3、訓練時間複雜度為O(n);

4、準確度高,對資料沒有假設,對outlier不敏感;

缺點:

1、計算量大;

2、樣本不平衡問題(即有些類別的樣本數量很多,而其它樣本的數量很少);

3、需要大量的記憶體;

KD樹

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

構造KD樹

在k維的空間上迴圈找子區域的中位數進行劃分的過程。

假設現在有K維空間的資料集T={x1,x2,x3,…xn},xi={a1,a2,a3..ak}

1、首先構造根節點,以座標a1的中位數b為切分點,將根結點對應的矩形局域劃分為兩個區域,區域1中a1<b,區域2中a1>b

2、構造葉子節點,分別以上面兩個區域中a2的中位數作為切分點,再次將他們兩兩劃分,作為深度1的葉子節點,(如果a2=中位數,則a2的例項落在切分面)

3、不斷重複2的操作,深度為j的葉子節點劃分的時候,索取的ai 的i=j%k+1,直到兩個子區域沒有例項時停止

KD樹的搜尋

1、首先從根節點開始遞迴往下找到包含x的葉子節點,每一層都是找對應的xi

2將這個葉子節點認為是當前的“近似最近點”

3、遞歸向上回退,如果以x圓心,以“近似最近點”為半徑的球與根節點的另一半子區域邊界相交,則說明另一半子區域中存在與x更近的點,則進入另一個子區域中查詢該點並且更新”近似最近點“

4、重複3的步驟,直到另一子區域與球體不相交或者退回根節點

5、最後更新的”近似最近點“與x真正的最近點

KD樹進行KNN查詢

通過KD樹的搜尋找到與搜尋目標最近的點,這樣KNN的搜尋就可以被限制在空間的區域性區域上了,可以大大增加效率。

KD樹搜尋的複雜度

當例項隨機分佈的時候,搜尋的複雜度為log(N),N為例項的個數,KD樹更加適用於例項數量遠大於空間維度的KNN搜尋,如果例項的空間維度與例項個數差不多時,它的效率基於等於線性掃描。

相關推薦

機器學習常見演算法總結試用

樸素貝葉斯 參考[1] 事件A和B同時發生的概率為在A發生的情況下發生B或者在B發生的情況下發生A P(A∩B)=P(A)∗P(B|A)=P(B)∗P(A|B) 所以有: P(A|B)=P(B|A)∗P(A)P(B) 對於給出的待分

機器學習常見演算法總結+ 試題

1.http://kubicode.me/2015/08/16/Machine%20Learning/Algorithm-Summary-for-Interview/ 2.http://kubicode.me/2015/08/16/Machine%20Learning/Co

機器學習常見演算法總結(二)

5. Adaboost adaboost演算法通俗地講,就是在一個數據集上的隨機資料使用一個分類訓練多次,每次對分類正確的資料賦權值較小,同時增大分類錯誤的資料的權重,如此反覆迭代,直到達到所需的要求。Adaboost演算法步驟如下: 步驟1. 首先初

機器學習經典演算法總結3——特徵選擇

一、特徵的分類1. 相關特徵:對當前學習任務有用的屬性。2. 無關特徵:對當前學習任務沒有用的屬性。3. 冗餘特徵:包含的資訊能從其他特徵中推演出來,冗餘特徵有時候不起作用,有時候則是有益的,對應了學習任務所需的“中間變數”。二、特徵選擇1. 概念:從給定的特徵集合中選擇出相

機器學習常見演算法及原理總結乾貨

樸素貝葉斯 參考[1] 事件A和B同時發生的概率為在A發生的情況下發生B或者在B發生的情況下發生A P(A∩B)=P(A)∗P(B|A)=P(B)∗P(A|B) 所以有: P(A|B)=P(B|A)∗P(A)P(B) 對於給出的待分類項,求解在此項出現的條件下各個目標類別出

機器學習面試常見總結持續更新

1、邏輯迴歸(LR)損失函式為什麼使用最大似然估計而不用最小二乘法?連結:https://www.zhihu.com/question/65350200/answer/266277291首先,機器學習的損失函式是人為設計的,用於評判模型好壞(對未知的預測能力)的一個標準、尺子

機器學習常見演算法優缺點總結

K近鄰:演算法採用測量不同特徵值之間的距離的方法進行分類。 優點: 1.簡單好用,容易理解,精度高,理論成熟,既可以用來做分類也可以用來做迴歸; 2.可用於數值型資料和離散型資料; 3.訓練時間

【整理自用】統計學習機器學習常見演算法整理更新

K近鄰法 詳見《統計學習》P53頁。 程式碼收藏90Zeng的部落格Kd樹的c++實現。 在利用kd樹搜尋最鄰近點的時候有一句話: 當前最近點一定存在於該結點一個子結點對應的區域,檢查子結點的父結點的另一子結點對應的區域是否有更近的點。具體做法是,

機器學習基本概念總結轉載

9.png png log images es2017 enter 08-18 機器學習 style 機器學習基本概念總結(轉載)

輕松入門機器學習之概念總結

消息 目的 作者 固定 erp 效率 dev 常用 度量 歡迎大家前往雲加社區,獲取更多騰訊海量技術實踐幹貨哦~ 作者:許敏 接上篇:機器學習概念總結筆記(一) 8)邏輯回歸 logistic回歸又稱logistic回歸分析,是一種廣義的線性回歸分析模型,常用於數據挖掘

吳恩達《機器學習》課程總結7正則化

額外 分享 哪些 TP 回歸 分享圖片 表現 例子 兩個 7.1過擬合的問題 訓練集表現良好,測試集表現差。魯棒性差。以下是兩個例子(一個是回歸問題,一個是分類問題) 解決辦法: (1)丟棄一些不能幫助我們正確預測的特征。可以使用工選擇保留哪些特征,或者使用一些模型選擇

吳恩達《機器學習》課程總結15異常檢測

是否 5.6 問題 com 結果 平移 分享 出現問題 計算過程 15.1問題的動機 將正常的樣本繪制成圖表(假設可以),如下圖所示: 當新的測試樣本同樣繪制到圖標上,如果偏離中心越遠說明越可能不正常,使用某個可能性閾值,當低於正常可能性閾值時判斷其為異常,然後做進一步的

機器學習技法筆記總結SVM系列總結及實戰

機器學技法筆記總結(一)SVM系列總結及實戰 1、原理總結 在機器學習課程的第1-6課,主要學習了SVM支援向量機。 SVM是一種二類分類模型。它的基本模型是在特徵空間中尋找間隔最大化的分離超平面的線性分類器。 (1)當訓練樣本線性可分時,通過硬間隔最大化,學習

機器學習經典演算法總結 一.線性迴歸

一.基本形式 hθ(x)=θ0+θ1x1+θ2x2+....+θnxn=θTxh_θ(x)=θ_0+θ_1x_1+θ_2x_2+....+θ_nx_n=θ^Txhθ​(x)=θ0​+θ1​x1​+θ2​x2​+....+θn​xn​=θTx 二.損失函式 最常用

機器學習常見演算法分類,演算法優缺點彙總

  機器學習無疑是當前資料分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的演算法。本文為您總結一下常見的機器學習演算法,以供您在工作和學習中參考。        機器學習的演算法很多。很多時候困惑人們都是,很多演算

機器學習整合演算法總結

一.Voting 思想:選取多個分類器,少數服從多數 二.Bagging 特點: 放回抽樣 方法: 1.放回抽樣訓練集 2.Outofbagging:放回抽樣中總有一部分資料沒被抽到,可將這部分作為驗證集 3.隨機取樣特徵 4.隨機取樣特徵+隨機取樣訓練集,如隨機森林 隨機森林 優點 可

機器學習基本演算法總結4

機器學習基本演算法總結 ☞其他工具 程式碼在這,基於python3(原書程式碼是python2) 這裡只是一個總結,原書已經講解很清楚了,不清楚的直接看程式碼 目錄 ========================== 一、預測數

機器學習演算法思想極簡版

讀到的一篇不錯的文章,拿來和大家分享一下。 轉自–頭條公眾號–極數蝸牛 (1)線性迴歸 迴歸最早是由高爾頓研究子女身高與父母身高遺傳關係提出的,發現子女平均身高總是向中心迴歸而得名。其實“一分辛苦一分才”中就蘊含了線性迴歸演算法思想,比較簡單表現出才能與辛

步步學習之用python實戰機器學習1-kNN K-NearestNeighbors演算法a

我最近才開始接觸機器學習,我大學數學學的幾乎忘了,最近才接觸python。所以我以一個完全初學者角度來學習機器學習。 我主要用的書籍就是machine learning in action (機器學習實戰)這本書。我主要是用文中已有的程式碼來講解機器學習。 同時對程式碼進行

資料探勘與機器學習基本演算法總結

在這種學習模式下,輸入資料作為對模型的反饋,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入資料直接反饋到模型,模型必須對此立刻作出調整。常見的應用場景包括動態系統以及機器人控制等。常見演算法包括Q-Learning以及時間差學習(Temporal difference le