從監督學習說起:算法模型有哪幾種?

  • 時間:2018-06-28 21:34 作者:Hank__ 來源:Hank__ 閱讀:354
  • 掃一掃,手機訪問
摘要:監督學習(supervised learning),主要處理兩類問題:回歸、分類,分別對應著定量輸出和定性輸出。什么叫回歸(regression)簡單地說,就是由已知數據通過計算得到一個明確的值(value),像y=f(x)就是典型的回歸關系。說的很多的線性回歸(Linear Regression)

監督學習(supervised learning),主要處理兩類問題:回歸、分類,分別對應著定量輸出和定性輸出。

什么叫回歸(regression)

簡單地說,就是由已知數據通過計算得到一個明確的值(value),像y=f(x)就是典型的回歸關系。說的很多的線性回歸(Linear Regression)就是根據已有的數據返回一個線性模型,大家初高中學了那么久的y=ax+b就是一種線性回歸模型。

光說理論意義不大,比方:和小冰聊天的過程,她根據你說的話返回一個字符串(一句話),她返回這句話的過程其實就是一個回歸的過程。

什么叫分類(classify)

由已知數據(已標注的)通過計算得到一個類別。比方:現在知道小曹182cm,平均每厘米質量為1kg,通過計算得到重量為182kg,這個過程叫回歸。根據計算結果我們得出一個結論,小曹是個胖紙,這個過程就屬于分類。

這里要特別注意:監督學習常使用的“邏輯回歸(Logistic Regression)”屬于典型的分類方法,而不是回歸。

算法模型

接下來一起理解幾個監督學習中主要的算法模型:

K—近鄰算法(k-Nearest Neighbor)

決策樹(Decision Tree)

樸素貝葉斯(Naive Bayes)

1. 近鄰算法

近鄰算法聽起來很高大上,但其實思想很簡單,讓我們先來建立一個模型。

K-近鄰算法里的K,是人為設定的一個值,圖中的K就是3,那么被框住的三個同學就都算小曹的“鄰居”。有句老話說得好啊,人以類聚,物以群分,小曹的體重一定和附近的人差不多,我們就取三個人的平均值110kg作為小曹的體重,不是鄰居的同學們就不考慮了。這是近鄰算法的回歸模型。

好了,假如是近鄰算法的分類模型呢?

應該不使用我說了吧,小曹的三個鄰居都胖,所以小曹也一定胖。

這就是K-近鄰算法的核心思想,由K確定“近鄰”的范圍,由近鄰的數值和屬性得出特定未知變量的數值和屬性。

當然了,這個模型是簡化之后的,在實際解決的時候,數據的分布都是經過了解決,按肯定規則在某個特征空間規律分布的(不是我這樣亂畫的),只有這樣“近鄰”才有意義。

特別的,當K值過大的是時候會欠擬合(underfitting),K值過小的時候會過擬合(overfitting)。欠擬合和過擬合在后文解釋,想深入理解算法能在文末查看參考資料。

2. 決策樹

決策樹,就是N個“if”和“then”搭配組成的集合,通過屢次決策返回某一特征/類別,以結果的高純度為目標。決策樹只需理解幾個名詞(熵、信息增益、信息增益率),一個模型(特征選擇、生成決策樹、剪枝)和三個算法(ID3、C4.5、CART)。

熵的概念大家高中物理課都學過,它的大小代表了一個系統的混亂程度。決策樹系統內的熵表示每一條分支結果的純度,決策樹能說是一個分類的過程,每一類的特征越顯著,每一個類別內的數據越類似,熵就越小,純度就越高。

信息增益(使用于ID3)是針對節點設定的,節點就是某個屬性的分類器,經過這個節點分類后,決策樹的熵越小,說明這個節點的信息增益越大。很好了解,我們選擇節點一定要選擇可以讓系統純度更高的那個。但是問題來了,按照這個規則選取節點的話,總會偏向數量較多的那部分數據。

所以專家們又提出了信息增益比(使用于C4.5),使用熵減的比率來判斷節點的屬性,在肯定程度上校對了偏向數量較多的問題。

該說人話了,下面舉個栗子來說明一下上述三個名詞。

假設我們要通過一個模型來判斷一個人是不是RICH。

這就是一個簡單的二分決策樹模型,二分就是指一個節點(判斷的圈圈)只分出兩個類別,判斷yes or not。

熵就是我們判斷出來的結果準不精確,從這個模型來看,熵一定是很大的,由于有很多因素沒有加入進來考慮,比方:他是不是有過去的存款,家庭是不是有遺產等等。假如在某個分類下窮人里混進了很多有錢人,就說明它的熵大;嵯禂凳褂糜贑ART(Classification And Regression Tree),和熵的意義類似。

信息增益簡單地說,就是某一個屬性的判斷,可以把多少人分開。比方說:假如設定判斷的屬性為月可支配收入>3000可以讓分類到RICH的窮人最少,我們就說它是一個信息增益很大的節點。

本來一個RICH圈圈里有100個窮人,占圈圈里總人數的1%,我們認為分出這個圈圈節點的信息增益很高。這個情況下,用信息增益和信息增益比的效果,是差不多的。

但假如現在我們不止采使用二分法,ID3(使用信息增益)算法很可可以選擇“身份證號”作為判斷節點,這樣分類出來的每一個小圈圈的熵都將極高(由于一個圈圈只有一個人),但這樣的分類是沒有意義的(過擬合)。

優化后的C4.5算法(采使用信息增益比)就是為了防止這種情況發生,在原來的信息增益基礎上除以熵,可以夠“懲罰”上面發生的情況,讓節點的選取更加正當。

到這里我們已經搞清楚了三個名詞、兩個算法(ID3、C4.5)和一個模型里的兩步(特征選擇和生成決策樹)了。還剩下剪枝和CART算法。

前面的ID3和C4.5都能對決策樹進行多分,但是CART只可以進行二分決策樹的生成,它能創立分類樹(得到一個類別)和回歸樹(得到一個值)。

CART算法采使用GINI指數來進行特征選擇(也就是節點判斷屬性確實認),GINI指數是度量數據劃分的不純度,是介于0~1之間的數。GINI值越小,表明樣本集合的純凈度越高,GINI值越大表明樣本集合的類別越雜亂。(和熵類似)

看上面的圖,這也能是CART算法的生成模式。

當我們判斷的最終結果不止兩個的時候,可可以這棵樹就會變得很龐大(節點和圈圈都很多),這個時候就需要“剪枝”——去掉多余的節點。

剪枝方法有兩種:預剪枝和后剪枝。

預剪枝即在決策樹生成前,通過肯定規則,避免某些節點的生成;

后剪枝則是在決策樹生成之后進行剪枝。

預剪枝的好處就是省事,但是由于事前確定的規則,可可以沒有考慮到少量特定且重要的情況下的數據,有可可以導致欠擬合。

后剪枝可以夠讓決策樹擁有更好的擬合度,但是相對消耗的時間也更多,過程更復雜。

再提一下“隨機森林(Random Forest)”。我們知道,三個臭皮匠,頂個諸葛亮。有時候一顆決策樹不可以對數據做出最精確的分類,這個時候我們通過肯定的規則生成很多顆決策樹,讓所有的決策樹解決同一組數據,經過解決之后這樣往往可以得到更準確的結果。人多力量大,不外如是。

3. 樸素貝葉斯

樸素貝葉斯(Naive Bayes)中的“樸素”,表示所有特征變量間相互獨立,不會影響彼此。主要思想就是:假如有一個需要分類的數據,它有少量特征,我們看看這些特征最多地出現在哪些類別中,哪個類別相應特征出現得最多,就把它放到哪個類別里;驹磉是來自貝葉斯定理。

這樣看起來感覺這個方法賊簡單,其實真的很簡單。(盡管看了我不知道多久才看懂)。

比方說:我們要判斷一個長得像膠囊(特征1),通體黃色(特征2),穿著背帶褲(特征3),有點智障(特征4)的東西屬于什么類別,我們經過遍歷(把所有類別和類別包含的所有特征看一遍),發現小黃人(某個類別)出現這些特征的頻率很高,那我們得出一個結論,他們是小黃人。

但是樸素貝葉斯方法對特征的劃分很敏感,比方說:假如我們沒有“長得像膠囊”這一項特征,那它即可可以是很多東西了…

最后讓我們來使用兩張圖解釋一下過擬合和欠擬合。

  • 全部評論(0)
最新發布的資訊信息
【系統環境|服務器應用】在CentOS 7上如何安裝Gogs 0.11.53(2020-02-10 10:14)
【系統環境|】淘碼庫,據消息稱已被調查。淘碼庫源碼網,已經無法訪問!(2020-01-14 04:13)
【系統環境|服務器應用】Discuz隱藏后臺admin.php網址修改路徑(2019-12-16 16:48)
【系統環境|服務器應用】2020新網站如何讓百度快速收錄網站首頁最新方法,親測有用!免費(2019-12-16 16:46)
【系統環境|服務器應用】Discuz發布帖子時默認顯示第一個主題分類的修改方法(2019-12-09 00:13)
【系統環境|軟件環境】Android | App內存優化 之 內存泄漏 要點概述 以及 處理實戰(2019-12-04 14:27)
【系統環境|軟件環境】MySQL InnoDB 事務(2019-12-04 14:26)
【系統環境|軟件環境】vue-router(單頁面應用控制中心)常見用法(2019-12-04 14:26)
【系統環境|軟件環境】Linux中的Kill命令(2019-12-04 14:26)
【系統環境|軟件環境】Linux 入門時必學60個文件解決命令(2019-12-04 14:26)
手機二維碼手機訪問領取大禮包
返回頂部
3d开机号查询