A. 分類演算法 - SVM演算法
SVM的全稱是Support Vector Machine,即支持向量機,主要用於解決模式識別領域中的數據分類問題,屬於有監督學習演算法的一種。SVM要解決的問題可以用一個經典的二分類問題加以描述。如圖1所示,紅色和藍色的二維數據點顯然是可以被一條直線分開的,在模式識別領域稱為線性可分問題。然而將兩類數據點分開的直線顯然不止一條。圖2和3分別給出了A、B兩種不同的分類方案,其中黑色實線為分界線,術語稱為「決策面」。每個決策面對應了一個線性分類器。雖然在目前的數據上看,這兩個分類器的分類結果是一樣的,但如果考慮潛在的其他數據,則兩者的分類性能是有差別的。
之前在b站看到一個非常好的介紹!!十分推薦, 這是傳送門
按照我自己的理解,以二維數據為例,我們喂給模型已經分類好的數據,那麼假設有一線條可以將此部分數據正確劃分為2大部分,這樣可以形成2個等式,即橫線兩邊的數值歸類為1或者-1,一般情況下可以求出最大間隔即無數個解,因此需要一個限定條件求出最優的那條線條。限定方式為:無數個解形成一個解的范圍,距離邊緣相等的那條線條即是最優解。
有時候本來數據的確是可分的,也就是說可以用線性分類SVM的學習方法來求解,但是卻因為混入了異常點,導致不能線性可分,比如下圖,本來數據是可以按下面的實線來做超平面分離的,可以由於一個橙色和一個藍色的異常點導致我們沒法按照線性分類支持向量機方法來分類。
以上討論的都是在線性可分情況進行討論的,但是實際問題中給出的數據並不是都是線性可分的,比如有些數據可能是曲線的。
那麼這種非線性可分的數據是否就不能用SVM演算法來求解呢?答案是否定的。事實上,對於低維平面內不可分的數據,放在一個高維空間中去就有可能變得可分。以二維平面的數據為例,我們可以通過找到一個映射將二維平面的點放到三維平面之中。理論上任意的數據樣本都能夠找到一個合適的映射使得這些在低維空間不能劃分的樣本到高維空間中之後能夠線性可分。
當特徵變數非常多的時候,在高維空間中計算內積的運算量是非常龐大的。考慮到我們的目的並不是為找到這樣一個映射而是為了計算其在高維空間的內積,因此如果我們能夠找到計算高維空間下內積的公式,那麼就能夠避免這樣龐大的計算量,我們的問題也就解決了。實際上這就是我們要找的 核函數 ,即兩個向量在隱式映射後的空間中的內積。
(1)對於邊界清晰的分類問題效果好;
(2)對高維分類問題效果好;
(3)當維度高於樣本數的時候,SVM 較為有效;
(4)因為最終只使用訓練集中的支持向量,所以節約內存
(1)當數據量較大時,訓練時間會較長;
(2)當數據集的噪音過多時,表現不好;
(3)SVM 不直接提供結果的概率估計,它在計算時直接使用 5 倍交叉驗證。
(1)LR 與 SVM 都是分類演算法;
(2)LR 與 SVM 都是監督學習演算法;
(3)LR 與 SVM 都是判別模型;
(4)關於判別模型與生成模型的詳細概念與理解,筆者會在下篇博文給出,這里不詳述。
(5)如果不考慮核函數,LR 與 SVM 都是線性分類演算法,也就是說他們的分類決策面都是線性的
這里需要說明的是,LR 也是可以用核函數的,因在 LR 演算法里,每個樣本點都必須參與決策面的計算過程,也就是說,如果在 LR 里也運用核函數的原理,那麼每個樣本點都必須參與核計算,這帶來的計算復雜度是相當高的。所以在具體應用時,LR 很少運用核函數機制。
(1)損失函數不同;
(2)SVM 只考慮支持向量,而 LR 考慮全局(即遠離的點對邊界線的確定也起作用);
(3)在解決非線性問題時,SVM 採用核函數的機制,而 LR 通常不採用核函數的方法;
(4)SVM 的損失函數就自帶正則(損失函數中的12||w||2項),這就是為什麼 SVM 是結構風險最小化演算法的原因,而 LR 必須另外在損失函數上添加正則項;
(5)LR是參數模型,SVM是非參數模型,本質不同。
(6)在訓練集較小時,SVM 較適用,而 LR 需要較多的樣本。
(1)LR 與線性回歸都是廣義的線性回歸;
(2)線性回歸模型的優化目標函數是最小二乘,而 LR 則是似然函數;
(3)線性回歸在整個實數域范圍內進行預測,敏感度一致,而分類范圍,需要在[0,1]。邏輯回歸就是一種減小預測范圍,將預測值限定為[0,1]間的一種回歸模型,因而對於這類問題來說,邏輯回歸的魯棒性比線性回歸的要好。
(4)邏輯回歸的模型本質上是一個線性回歸模型,邏輯回歸都是以線性回歸為理論支持的。但線性回歸模型無法做到 sigmoid 的非線性形式,sigmoid 可以輕松處理 0/1 分類問題。
(5)線性回歸主要做預測,LR 主要做分類(如二分類);
B. 常見的監督學習演算法
K-近鄰演算法,決策樹,樸素貝葉斯,邏輯回歸這些都是比較常見的。所有的回歸演算法和分類演算法都屬於監督學習。
在機器學習中,無監督學習就是聚類,事先不知道樣本的類別,通過某種辦法,把相似的樣本放在一起歸位一類;而監督型學習就是有訓練樣本,帶有屬性標簽,也可以理解成樣本有輸入有輸出。
回歸和分類的演算法區別在於輸出變數的類型,定量輸出稱為回歸,或者說是連續變數預測;定性輸出稱為分類,或者說是離散變數預測。
C. 數據挖掘-決策樹演算法
決策樹演算法是一種比較簡易的監督學習分類演算法,既然叫做決策樹,那麼首先他是一個樹形結構,簡單寫一下樹形結構(數據結構的時候學過不少了)。
樹狀結構是一個或多個節點的有限集合,在決策樹里,構成比較簡單,有如下幾種元素:
在決策樹中,每個葉子節點都有一個類標簽,非葉子節點包含對屬性的測試條件,用此進行分類。
所以個人理解,決策樹就是 對一些樣本,用樹形結構對樣本的特徵進行分支,分到葉子節點就能得到樣本最終的分類,而其中的非葉子節點和分支就是分類的條件,測試和預測分類就可以照著這些條件來走相應的路徑進行分類。
根據這個邏輯,很明顯決策樹的關鍵就是如何找出決策條件和什麼時候算作葉子節點即決策樹終止。
決策樹的核心是為不同類型的特徵提供表示決策條件和對應輸出的方法,特徵類型和劃分方法包括以下幾個:
注意,這些圖中的第二層都是分支,不是葉子節點。
如何合理的對特徵進行劃分,從而找到最優的決策模型呢?在這里需要引入信息熵的概念。
先來看熵的概念:
在數據集中,參考熵的定義,把信息熵描述為樣本中的不純度,熵越高,不純度越高,數據越混亂(越難區分分類)。
例如:要給(0,1)分類,熵是0,因為能明顯分類,而均衡分布的(0.5,0.5)熵比較高,因為難以劃分。
信息熵的計算公式為:
其中 代表信息熵。 是類的個數, 代表在 類時 發生的概率。
另外有一種Gini系數,也可以用來衡量樣本的不純度:
其中 代表Gini系數,一般用於決策樹的 CART演算法 。
舉個例子:
如果有上述樣本,那麼樣本中可以知道,能被分為0類的有3個,分為1類的也有3個,那麼信息熵為:
Gini系數為:
總共有6個數據,那麼其中0類3個,佔比就是3/6,同理1類。
我們再來計算一個分布比較一下:
信息熵為:
Gini系數為:
很明顯,因為第二個分布中,很明顯這些數偏向了其中一類,所以 純度更高 ,相對的信息熵和Gini系數較低。
有了上述的概念,很明顯如果我們有一組數據要進行分類,最快的建立決策樹的途徑就是讓其在每一層都讓這個樣本純度最大化,那麼就要引入信息增益的概念。
所謂增益,就是做了一次決策之後,樣本的純度提升了多少(不純度降低了多少),也就是比較決策之前的樣本不純度和決策之後的樣本不純度,差越大,效果越好。
讓信息熵降低,每一層降低的越快越好。
度量這個信息熵差的方法如下:
其中 代表的就是信息熵(或者其他可以度量不純度的系數)的差, 是樣本(parent是決策之前, 是決策之後)的信息熵(或者其他可以度量不純度的系數), 為特徵值的個數, 是原樣本的記錄總數, 是與決策後的樣本相關聯的記錄個數。
當選擇信息熵作為樣本的不純度度量時,Δ就叫做信息增益 。
我們可以遍歷每一個特徵,看就哪個特徵決策時,產生的信息增益最大,就把他作為當前決策節點,之後在下一層繼續這個過程。
舉個例子:
如果我們的目標是判斷什麼情況下,銷量會比較高(受天氣,周末,促銷三個因素影響),根據上述的信息增益求法,我們首先應該找到根據哪個特徵來決策,以信息熵為例:
首先肯定是要求 ,也就是銷量這個特徵的信息熵:
接下來,就分別看三個特徵關於銷量的信息熵,先看天氣,天氣分為好和壞兩種,其中天氣為好的條件下,銷量為高的有11條,低的有6條;天氣壞時,銷量為高的有7條,銷量為低的有10條,並且天氣好的總共17條,天氣壞的總共17條。
分別計算天氣好和天氣壞時的信息熵,天氣好時:
根據公式 ,可以知道,N是34,而天氣特徵有2個值,則k=2,第一個值有17條可以關聯到決策後的節點,第二個值也是17條,則能得出計算:
再計算周末這個特徵,也只有兩個特徵值,一個是,一個否,其中是有14條,否有20條;周末為是的中有11條銷量是高,3條銷量低,以此類推有:
信息增益為:
另外可以得到是否有促銷的信息增益為0.127268。
可以看出,以周末為決策,可以得到最大的信息增益,因此根節點就可以用周末這個特徵進行分支:
注意再接下來一層的原樣本集,不是34個而是周末為「是」和「否」分別計算,為是的是14個,否的是20個。
這樣一層一層往下遞歸,直到判斷節點中的樣本是否都屬於一類,或者都有同一個特徵值,此時就不繼續往下分了,也就生成了葉子節點。
上述模型的決策樹分配如下:
需要注意的是,特徵是否出現需要在分支當中看,並不是整體互斥的,周末生成的兩個分支,一個需要用促銷來決策,一個需要用天氣,並不代表再接下來就沒有特徵可以分了,而是在促銷決策層下面可以再分天氣,另外一遍天氣決策下面可以再分促銷。
決策樹的模型比較容易解釋,看這個樹形圖就能很容易的說出分類的條件。
我們知道屬性有二元屬性、標稱屬性、序數屬性和連續屬性,其中二元、標稱和序數都是類似的,因為是離散的屬性,按照上述方式進行信息增益計算即可,而連續屬性與這三個不同。
對於連續的屬性,為了降低其時間復雜度,我們可以先將屬性內部排序,之後取相鄰節點的均值作為決策值,依次取每兩個相鄰的屬性值的均值,之後比較他們的不純度度量。
需要注意的是,連續屬性可能在決策樹中出現多次,而不是像離散的屬性一樣在一個分支中出現一次就不會再出現了。
用信息熵或者Gini系數等不純度度量有一個缺點,就是會傾向於將多分支的屬性優先分類——而往往這種屬性並不是特徵。
例如上面例子中的第一行序號,有34個不同的值,那麼信息熵一定很高,但是實際上它並沒有任何意義,因此我們需要規避這種情況,如何規避呢,有兩種方式:
公式如下:
其中k為劃分的總數,如果每個屬性值具有相同的記錄數,則 ,劃分信息等於 ,那麼如果某個屬性產生了大量劃分,則劃分信息很大,信息增益率低,就能規避這種情況了。
為了防止過擬合現象,往往會對決策樹做優化,一般是通過剪枝的方式,剪枝又分為預剪枝和後剪枝。
在構建決策樹時,設定各種各樣的條件如葉子節點的樣本數不大於多少就停止分支,樹的最大深度等,讓決策樹的層級變少以防止過擬合。
也就是在生成決策樹之前,設定了決策樹的條件。
後剪枝就是在最大決策樹生成之後,進行剪枝,按照自底向上的方式進行修剪,修剪的規則是,評估葉子節點和其父節點的代價函數,如果父節點的代價函數比較小,則去掉這個葉子節點。
這里引入的代價函數公式是:
其中 代表的是葉子節點中樣本個數, 代表的是該葉子節點上的不純度度量,把每個葉子節點的 加起來,和父節點的 比較,之後進行剪枝即可。
D. 自主學習演算法和機器學習的區別
自主學習演算法和機器學習的區別?
一、指代不同
1、機器學習演算法:是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、演算法復雜度理論等多門學科。
2、深度學習:是機器學習(ML, Machine Learning)領域中一個新的研究方向,它被引入機器學習使其更接近於最初的目標人工智慧。
二、學習過程不同
1、機器學習演算法:學習系統的基本結構。環境向系統的學習部分提供某些信息,學習部分利用這些信息修改知識庫,以增進系統執行部分完成任務的效能,執行部分根據知識庫完成任務,同時把獲得的信息反饋給學習部分。
2、深度學習:通過設計建立適量的神經元計算節點和多層運算層次結構,選擇合適的輸人層和輸出層,通過網路的學習和調優,建立起從輸入到輸出的函數關系,雖然不能100%找到輸入與輸出的函數關系,但是可以盡可能的逼近現實的關聯關系。三、應用不同
1、機器學習演算法::數據挖掘、計算機視覺、自然語言處理、生物特徵識別、搜索引擎、醫學診斷、DNA序列測序、語音和手寫識別、戰略游戲和機器人運用。
2、深度學習:計算機視覺、語音識別、自然語言處理等其他領域。