監督學習多用來解決分類問題,輸入的數據由特征和標簽兩部分構成。我們由淺入深地介紹一些經典的有監督的機器學習算法。
這里介紹一些比較簡單容易理解的處理線性分類問題的算法。
線性可分&線性不可分
首先,什么是線性分類問題?線性分類問題是指,根據標簽確定的數據在其空間中的分布,可以使用一條直線(或者平面,超平面)進行分割。如下圖就是一個線性分類問題。這樣的問題也叫做線性可分的。
當然,也存在着許多線性不可分的情況,例如下圖所示
解決線性不可分問題往往相對復雜,我們從簡單的線性可分問題開始探討。
最簡單的線性分類器——決策樹樁
線性分類器,簡單來說就是一些可以用來解決線性可分問題的機器學習算法,這些算法生成的模型往往都是一個線性函數,因此不一定能很好的解決線性不可分的問題。
決策樹樁,可以說是最簡單的線性分類器了,它的分類原理很簡單:
1、決定一個閾值
2、大於這個閾值的是第一類,小於這個閾值的是第二類。(等於閾值的情況任意取舍即可)
決策樹樁能解決的問題很有限,但是也並不是全無用途。例如我們對如下數據進行分類
數據:5個拉拉隊員的數據
拉拉隊員 | 身高 | 體重 | 性別 |
1 | 170 | 55 | 男 |
2 | 160 | 45 | 女 |
3 | 180 | 65 | 男 |
4 | 165 | 50 | 女 |
5 | 170 | 50 | 女 |
如果說我們想根據拉拉隊員的身高體重隊其性別進行分類,那么很明顯,體重大於50的都是男隊員,小於或等於50的都是女隊員。因此決策樹樁是完全可以解決這個問題的,那么剩下的工作就是如何讓機器根據這些數據自己學習到合適的閾值。設計出來的算法就是決策樹樁的學習算法了。
為此我們將問題更加細化一下,我們使用體重作為特征(X),性別作為標簽進行分類(Y = 1 判斷性別為男,Y = 0判斷為女)
決策樹樁的模型是一個一維的線性模型,因此其模型函數可以看做是 f(x) = (x - t), 其中t是閾值,我們規定,當f(x)>0時, 預測Y = 1,否則,預測Y = 0。為了找到一個合適的t使用最簡單的線性搜索就可以解決。算法如下:
input: 特征x,真實標簽Y,學習步長L
L = 1; minErr = 99999;
for t = min(x) to max(x) by L do
numErr = numberOfErrors(t)
if numErr <= minErr
minErr = numErr
tbest = t
end if
end for
return tbest
在這個算法中,我們從x的最小值開始搜索,直到x的最大值。每次更新t時給t增加L這么大。numberOfErrors 函數用來統計我們在t作為閾值的情況下,分類的錯誤數目,這樣搜索了一遍后,就能找到一個錯誤最少的tbest作為我們決策樹樁的閾值。
其中學習步長L的作用十分重要,如果L過大的話,可能會不小心錯過最優解,但是L過小的話,又會導致算法運行時間過長。因此調整一個合適的L值是十分必要的。