機器學習
一、機器學習概念
啥是機器學習
機器學習:假設用P來評估計算機程式在某任務類T上的效能,若一個程式通過利用經驗E在T中任務上獲得了效能改善,則關於T和P,該程式對E進行了學習
通俗講:通過計算的方式,利用經驗來改善系統自身效能
研究主要內容:“學習演算法”--> 從資料中產生模型的演算法
基本術語
- 模型(model):全域性性結果;模式(mode):區域性性結果
- 資料集(data set):記錄的集合(機器學習開源資料集)
- 樣本(sample)、示例(instance):關於一個事件或物件的描述
- 屬性(attribute)、特徵(feature):事件或物件在某方面的表現或性質
- 屬性值(attribute value):屬性的取值
- 屬性空間(attribute space)、樣本空間(sample space):屬性作為座標軸張成的空間
- 特徵向量(feature vector):一個樣本在樣本空間中對應的座標向量
- 維數(dimensionnality):屬性的個數
- 學習(learning)、訓練(training):從資料中學得模型的過程
- 標記(label):關於示例結果的資訊
- 樣例(example):擁有了標記資訊的示例
- 標記空間(label space):所有標記的集合
- 訓練(training)、學習(learning):從資料中學得模型的過程
- 測試(testing):使用訓練得出的模型,對結果進行預測的過程
- 學習任務:
- 泛化能力(generalization ability):訓練得到的模型適用於測試樣本的能力
- 歸納(induction):特殊到一般
- 演繹(deduction):一般到特殊的“特化”(specialization)
- 獨立同分布(independent and identically distributed):獲得的每個樣本都是從這個分佈上取樣獲得的
二、假設空間 & 版本空間
學習過程就是在假設空間中進行搜尋的過程,搜尋的目標是找到與訓練集匹配的假設。
假設空間(hypothesis space):
1. 假設空間的定義
- 標準定義是:由輸入空間到輸出空間的對映的集合;
- 我所理解的是:假設空間由三部分組成
(1) 輸入的訓練資料集中,每一個屬性的所有取值分別組合形成所有可能性結果的集合
(2) 屬性取值至少含一個為“無論去什麼值都合適”(即屬性值為萬用字元“*”)的結果集合
(3) 所有屬性值都無法取到的結果,即為空集,一個假設空間有且僅有一個(若訓練集中包含正例,則在版本空間中,空集的假設不存在)
2. 假設空間的生成
這裡通過《機器學習》周志華原著中表1.1的示例進行闡述。
(1) 每一個屬性的所有取值分別組合形成所有可能性結果。
“色澤” : “青綠”、“烏黑”
“根蒂” : “蜷縮”、“硬挺”、“稍蜷”
“敲聲” : “濁響”、“清脆”、“沉悶”
總共結果個數:\(2*3*3 = 18\)
色澤=青綠,根蒂=蜷縮,敲聲=濁響
色澤=青綠,根蒂=蜷縮,敲聲=清脆
色澤=青綠,根蒂=蜷縮,敲聲=沉悶
色澤=青綠,根蒂=硬挺,敲聲=濁響
色澤=青綠,根蒂=硬挺,敲聲=清脆
色澤=青綠,根蒂=硬挺,敲聲=沉悶
色澤=青綠,根蒂=稍蜷,敲聲=濁響
色澤=青綠,根蒂=稍蜷,敲聲=清脆
色澤=青綠,根蒂=稍蜷,敲聲=沉悶
色澤=烏黑,根蒂=蜷縮,敲聲=濁響
色澤=烏黑,根蒂=蜷縮,敲聲=清脆
色澤=烏黑,根蒂=蜷縮,敲聲=沉悶
色澤=烏黑,根蒂=硬挺,敲聲=濁響
色澤=烏黑,根蒂=硬挺,敲聲=清脆
色澤=烏黑,根蒂=硬挺,敲聲=沉悶
色澤=烏黑,根蒂=稍蜷,敲聲=濁響
色澤=烏黑,根蒂=稍蜷,敲聲=清脆
色澤=烏黑,根蒂=稍蜷,敲聲=沉悶
(2) 屬性取值至少含一個為“無論去什麼值都合適”(即屬性值為萬用字元“*”)的結果集合
“色澤” : “*”,“青綠”、“烏黑”
“根蒂” : “*”,“蜷縮”、“硬挺”、“稍蜷”
“敲聲” : “*”,“濁響”、“清脆”、“沉悶”
總共結果個數:\(3*4*4-18 = 30\) (要減去不含*的項)
色澤=*, 根蒂=*, 敲聲=*
色澤=*, 根蒂=*, 敲聲=濁響
色澤=*, 根蒂=*, 敲聲=清脆
色澤=*, 根蒂=*, 敲聲=沉悶
色澤=*, 根蒂=蜷縮,敲聲=*
色澤=*, 根蒂=蜷縮,敲聲=濁響
色澤=*, 根蒂=蜷縮,敲聲=清脆
色澤=*, 根蒂=蜷縮,敲聲=沉悶
色澤=*, 根蒂=硬挺,敲聲=*
色澤=*, 根蒂=硬挺,敲聲=濁響
色澤=*, 根蒂=硬挺,敲聲=清脆
色澤=*, 根蒂=硬挺,敲聲=沉悶
色澤=*, 根蒂=稍蜷,敲聲=*
色澤=*, 根蒂=稍蜷,敲聲=濁響
色澤=*, 根蒂=稍蜷,敲聲=清脆
色澤=*, 根蒂=稍蜷,敲聲=沉悶
色澤=青綠,根蒂=*, 敲聲=*
色澤=青綠,根蒂=*, 敲聲=濁響
色澤=青綠,根蒂=*, 敲聲=清脆
色澤=青綠,根蒂=*, 敲聲=沉悶
色澤=青綠,根蒂=蜷縮,敲聲=*
色澤=青綠,根蒂=硬挺,敲聲=*
色澤=青綠,根蒂=稍蜷,敲聲=*
色澤=烏黑,根蒂=*, 敲聲=*
色澤=烏黑,根蒂=*, 敲聲=濁響
色澤=烏黑,根蒂=*, 敲聲=清脆
色澤=烏黑,根蒂=*, 敲聲=沉悶
色澤=烏黑,根蒂=蜷縮,敲聲=*
色澤=烏黑,根蒂=硬挺,敲聲=*
色澤=烏黑,根蒂=稍蜷,敲聲=*
(3) 所有屬性值都無法取到的結果,即為空集,一個假設空間有且僅有一個
“色澤” : “Ø”
“根蒂” : “Ø”
“敲聲” : “Ø”
總共結果個數:1
色澤=Ø,根蒂=Ø,敲聲=Ø
綜上所述,假設空間規模大小為
\(18+30+1=49\)
\((2+1)*(3+1)*(3+1)+1=49\)
(色澤兩種取值,根蒂三種取值,敲聲三種取值,再分別加上萬用字元,相乘後,加上Ø取值)
版本空間(version space):
1. 版本空間的定義
- 標準定義:一個與訓練集一致的“假設集合”
- 我的理解是:版本空間是假設空間的子集,包含兩個部分
(1)與正例一致的假設
(2)與反例不一致的假設
2. 版本空間的生成
完整的假設空間:(共49條)
色澤=青綠,根蒂=蜷縮,敲聲=濁響
色澤=青綠,根蒂=蜷縮,敲聲=清脆
色澤=青綠,根蒂=蜷縮,敲聲=沉悶
色澤=青綠,根蒂=硬挺,敲聲=濁響
色澤=青綠,根蒂=硬挺,敲聲=清脆
色澤=青綠,根蒂=硬挺,敲聲=沉悶
色澤=青綠,根蒂=稍蜷,敲聲=濁響
色澤=青綠,根蒂=稍蜷,敲聲=清脆
色澤=青綠,根蒂=稍蜷,敲聲=沉悶
色澤=烏黑,根蒂=蜷縮,敲聲=濁響
色澤=烏黑,根蒂=蜷縮,敲聲=清脆
色澤=烏黑,根蒂=蜷縮,敲聲=沉悶
色澤=烏黑,根蒂=硬挺,敲聲=濁響
色澤=烏黑,根蒂=硬挺,敲聲=清脆
色澤=烏黑,根蒂=硬挺,敲聲=沉悶
色澤=烏黑,根蒂=稍蜷,敲聲=濁響
色澤=烏黑,根蒂=稍蜷,敲聲=清脆
色澤=烏黑,根蒂=稍蜷,敲聲=沉悶
色澤=*, 根蒂=*, 敲聲=*
色澤=*, 根蒂=*, 敲聲=濁響
色澤=*, 根蒂=*, 敲聲=清脆
色澤=*, 根蒂=*, 敲聲=沉悶
色澤=*, 根蒂=蜷縮,敲聲=*
色澤=*, 根蒂=蜷縮,敲聲=濁響
色澤=*, 根蒂=蜷縮,敲聲=清脆
色澤=*, 根蒂=蜷縮,敲聲=沉悶
色澤=*, 根蒂=硬挺,敲聲=*
色澤=*, 根蒂=硬挺,敲聲=濁響
色澤=*, 根蒂=硬挺,敲聲=清脆
色澤=*, 根蒂=硬挺,敲聲=沉悶
色澤=*, 根蒂=稍蜷,敲聲=*
色澤=*, 根蒂=稍蜷,敲聲=濁響
色澤=*, 根蒂=稍蜷,敲聲=清脆
色澤=*, 根蒂=稍蜷,敲聲=沉悶
色澤=青綠,根蒂=*, 敲聲=*
色澤=青綠,根蒂=*, 敲聲=濁響
色澤=青綠,根蒂=*, 敲聲=清脆
色澤=青綠,根蒂=*, 敲聲=沉悶
色澤=青綠,根蒂=蜷縮,敲聲=*
色澤=青綠,根蒂=硬挺,敲聲=*
色澤=青綠,根蒂=稍蜷,敲聲=*
色澤=烏黑,根蒂=*, 敲聲=*
色澤=烏黑,根蒂=*, 敲聲=濁響
色澤=烏黑,根蒂=*, 敲聲=清脆
色澤=烏黑,根蒂=*, 敲聲=沉悶
色澤=烏黑,根蒂=蜷縮,敲聲=*
色澤=烏黑,根蒂=硬挺,敲聲=*
色澤=烏黑,根蒂=稍蜷,敲聲=*
色澤=Ø,根蒂=Ø,敲聲=Ø
(1) 刪除與正例不一致的假設。
正例1:色澤=青綠,根蒂=蜷縮,敲聲=濁響,好瓜=是
要刪除的項:(41項)
2. 色澤=青綠,根蒂=蜷縮,敲聲=清脆
3. 色澤=青綠,根蒂=蜷縮,敲聲=沉悶
4. 色澤=青綠,根蒂=硬挺,敲聲=濁響
5. 色澤=青綠,根蒂=硬挺,敲聲=清脆
6. 色澤=青綠,根蒂=硬挺,敲聲=沉悶
7. 色澤=青綠,根蒂=稍蜷,敲聲=濁響
8. 色澤=青綠,根蒂=稍蜷,敲聲=清脆
9. 色澤=青綠,根蒂=稍蜷,敲聲=沉悶
10. 色澤=烏黑,根蒂=蜷縮,敲聲=濁響
11. 色澤=烏黑,根蒂=蜷縮,敲聲=清脆
12. 色澤=烏黑,根蒂=蜷縮,敲聲=沉悶
13. 色澤=烏黑,根蒂=硬挺,敲聲=濁響
14. 色澤=烏黑,根蒂=硬挺,敲聲=清脆
15. 色澤=烏黑,根蒂=硬挺,敲聲=沉悶
16. 色澤=烏黑,根蒂=稍蜷,敲聲=濁響
17. 色澤=烏黑,根蒂=稍蜷,敲聲=清脆
18. 色澤=烏黑,根蒂=稍蜷,敲聲=沉悶
21. 色澤=*, 根蒂=*, 敲聲=清脆
22. 色澤=*, 根蒂=*, 敲聲=沉悶
25. 色澤=*, 根蒂=蜷縮,敲聲=清脆
26. 色澤=*, 根蒂=蜷縮,敲聲=沉悶
27. 色澤=*, 根蒂=硬挺,敲聲=*
28. 色澤=*, 根蒂=硬挺,敲聲=濁響
29. 色澤=*, 根蒂=硬挺,敲聲=清脆
30. 色澤=*, 根蒂=硬挺,敲聲=沉悶
31. 色澤=*, 根蒂=稍蜷,敲聲=*
32. 色澤=*, 根蒂=稍蜷,敲聲=濁響
33. 色澤=*, 根蒂=稍蜷,敲聲=清脆
34. 色澤=*, 根蒂=稍蜷,敲聲=沉悶
37. 色澤=青綠,根蒂=*, 敲聲=清脆
38. 色澤=青綠,根蒂=*, 敲聲=沉悶
40. 色澤=青綠,根蒂=硬挺,敲聲=*
41. 色澤=青綠,根蒂=稍蜷,敲聲=*
42. 色澤=烏黑,根蒂=*, 敲聲=*
43. 色澤=烏黑,根蒂=*, 敲聲=濁響
44. 色澤=烏黑,根蒂=*, 敲聲=清脆
45. 色澤=烏黑,根蒂=*, 敲聲=沉悶
46. 色澤=烏黑,根蒂=蜷縮,敲聲=*
47. 色澤=烏黑,根蒂=硬挺,敲聲=*
48. 色澤=烏黑,根蒂=稍蜷,敲聲=*
49. 色澤=Ø,根蒂=Ø,敲聲=Ø
刪除後剩餘項:(8項)
1. 色澤=青綠,根蒂=蜷縮,敲聲=濁響
19. 色澤=*, 根蒂=*, 敲聲=*
20. 色澤=*, 根蒂=*, 敲聲=濁響
23. 色澤=*, 根蒂=蜷縮,敲聲=*
24. 色澤=*, 根蒂=蜷縮,敲聲=濁響
35. 色澤=青綠,根蒂=*, 敲聲=*
36. 色澤=青綠,根蒂=*, 敲聲=濁響
39. 色澤=青綠,根蒂=蜷縮,敲聲=*
正例2:色澤=烏黑,根蒂=蜷縮,敲聲=濁響,好瓜=是
要刪除的項:(4項)
1. 色澤=青綠,根蒂=蜷縮,敲聲=濁響
35. 色澤=青綠,根蒂=*, 敲聲=*
36. 色澤=青綠,根蒂=*, 敲聲=濁響
39. 色澤=青綠,根蒂=蜷縮,敲聲=*
刪除後的剩餘項:(4項)
19. 色澤=*, 根蒂=*, 敲聲=*
20. 色澤=*, 根蒂=*, 敲聲=濁響
23. 色澤=*, 根蒂=蜷縮,敲聲=*
24. 色澤=*, 根蒂=蜷縮,敲聲=濁響
(1) 刪除與反例一致的假設。
反例1:色澤=青綠,根蒂=硬挺,敲聲=清脆,好瓜=否
要刪除的項:(1項)
19. 色澤=*, 根蒂=*, 敲聲=*
刪除後的剩餘項:(3項)
20. 色澤=*, 根蒂=*, 敲聲=濁響
23. 色澤=*, 根蒂=蜷縮,敲聲=*
24. 色澤=*, 根蒂=蜷縮,敲聲=濁響
反例2:色澤=烏黑,根蒂=稍蜷,敲聲=沉悶,好瓜=否
要刪除的項:(0項)
最終得到的版本空間:
20. 色澤=*, 根蒂=*, 敲聲=濁響
23. 色澤=*, 根蒂=蜷縮,敲聲=*
24. 色澤=*, 根蒂=蜷縮,敲聲=濁響
三、歸納偏好
歸納偏好(inductive bias)的定義
- 標準定義:機器學習演算法在學習過程中,對某種型別假設的偏好,稱為歸納偏好。
- 我所理解的是:在版本空間所產生的假設集合中,哪一個假設是在版本空間中更好的假設,則在之後的測試過程中選擇時,更偏向於哪個。
任何一個有效的機器學習演算法必有其歸納偏好。若其不存在歸納偏好,則訓練集中假設都“等效”,則在測試過程中,訓練集的假設隨機選擇,得到的結果時好時壞,產生波動,則結果無意義。
“奧卡姆剃刀”(Occam's razor)原則
若有多個假設與觀察一致,則選擇最簡單的那個(使模型結構儘量簡單)。
其實,並不能完全遵循“奧卡姆剃刀”原則,因為對於“模型哪個更簡單?”的定義是模糊的,並沒有一個確切的標準說哪個模型最簡單,並且最簡單的模型一定與問題密切相關。所以,演算法的歸納偏好是否與問題本身相匹配,更直接決定了演算法是否取得更好的效能。
“沒有免費的午餐定理”(No Free Lunch Theorem)
1. 定理內容
- 標準定義:無論學習演算法A多聰明,學習演算法B多笨拙,他們的期望效能相同。
重要前提:所有問題出現的機會相同、或所有問題同等重要。 - 我所認為其本質想闡述的是:一個適合於某問題的演算法,在另一個問題上不一定適合。
其實我們在解決問題的時候,更關注於問題本身,,就當前問題提出解決方法,在存在可能性的範圍內實現“舉一反三”的泛化,而非一味的將當前問題的解決方案適用於其他問題,或者找出兩個及以上弱相關問題之間的通解。
2. 公式推導
這裡的三個公式主要為了證明學習演算法\(ε_a\)與\(ε_b\)在訓練集之外的所有樣本上(測試資料集)的誤差之和即總誤差與學習演算法無關。即對任意的學習演算法,其總誤差相等。
(根據《機器學習》周志華原著公式1.1,1.2,1.3來解釋)
公式1.1:
(1) : 表示學習演算法\(ε_a\)在訓練集之外的所有樣本上的誤差,也即被預測樣本(測試樣本)上的誤差。(ote:off-training error)
我認為這裡的樣本應該包括兩部分:訓練樣本和測試樣本,訓練樣本用於學習得出模型,測試樣本則用來判斷模型是否與問題相匹配。所以,判斷與測試樣本的誤差,可以確定學習演算法的好壞。
:就表示\(x\)屬於整個樣本空間減去訓練樣本,即\(x\)屬於測試樣本空間,是測試樣本空間的其中一項。
(2)\(P(x)\):表示\(x\)在整個樣本空間中出現的概率
例如:(這裡的舉例有待考究,還望指正)
色澤=*,根蒂=蜷縮,敲聲=濁響 在下面的樣本空間中,\(P(x)=3/3=1\)
色澤=*,根蒂=稍蜷,敲聲=濁響 在下面的樣本空間中,\(P(x)=1/3\)
色澤=*, 根蒂=*, 敲聲=濁響
色澤=*, 根蒂=蜷縮,敲聲=*
色澤=*, 根蒂=蜷縮,敲聲=濁響
(3):指示函式,若\(h(x)≠f(x)\)則為1,否則為0,即表示學習演算法基於訓練資料產生的假設是否符合目標函式。
(4):表示演算法\(ε_a\)基於訓練資料\(X\)產生假設\(h\)的概率。因為演算法\(ε_a\)在訓練資料\(X\)上訓練時,產生多種假設,存在其中一種假設\(h\)在訓練資料\(X\)上的條件概率,並且,由演算法\(ε_a\)基於訓練資料\(X\)產生的所有假設的條件概率總和為1。(TODO:這裡的解釋可能需要修改)
(5):因為樣本空間和假設空間是離散的,所以這裡採用求和,而非連續的求積分。
根據條件期望公式,即可得出該式。
公式1.2
(1):表示對所有可能的目標函式\(f\)按均勻分佈對誤差求和。
只要滿足版本空間\(χ\)的假設函式,都可以是目標函式,所以目標函式\(f\)可能不止一個。因為每一個目標函式\(f\)均勻分佈,且是二分類問題(即每一個樣本,都會有兩個不同的目標函式\(f\)),所以對於有\(|χ|\)個樣本的版本空間,則會有\(2^{|χ|}\)個目標函式,但是因為有一半的目標函式\(f\)對\(x\)的預測與\(h(x)\)不一致,即某個假設\(h\)有\(\frac{1}{2}\)的概率與目標函式\(f\)相同。(我認為可以類比滿二叉樹,樹高為\(|χ|\),則樹中結點總數為\({1} \over {2}\)\(2^{|χ|}\))
故\(=\)\({1} \over {2}\)\(2^{|χ|}\)
舉例:
若樣本空間\(χ=\{x_1, x_2\}\),則\(|χ|=2\),所有可能的目標函式\(f\)為:
\(f_1: f_1(x_1)=0,f_1(x_2)=0\)
\(f_2: f_2(x_1)=0,f_2(x_2)=1\)
\(f_3: f_3(x_1)=1,f_3(x_2)=0\)
\(f_4: f_4(x_1)=1,f_4(x_2)=1\)
則總共有\(2^{|χ|}=2^2=4\)個目標函式\(f\)。
若學習產生的假設\(h(x_1)=0\),則僅有\({1}\over{2}\)的\(f\)與之相等,即\(f_1\)和\(f_2\).
所以:\(=\)\({1} \over {2}\)\(2^{|χ|}\)\(=2\)
(2)
這一步其實就是一個求和運算
\((a_1+a_2+...+a_x)(b_1+b_2+...+b_y)(c_1+c_2+...+c_z)=a_1b_1c_1+a_1b_1c_2+...+a_1b_1c_z+a_1b_2c_1+...+a_xb_yc_z\)
(3)
這一步在(1)中已經做過解釋
(4)
這一步其實就是提取公因式
(5)
這一步是因為由演算法\(ε_a\)基於訓練資料\(X\)產生的所有假設的條件概率總和為1
不難看出,所有可能的目標函式\(f\)的總誤差與演算法\(ε_a\)並無關係
公式1.3
在所有可能的目標函式\(f\)均勻分佈的前提下(即問題出現的機會相等,所有問題同等重要),無論學習演算法\(ε_a\)多聰明,\(ε_b\)多笨拙,他們的期望效能(總誤差)相同。
但其實,我們只是假設目標函式\(f\)服從均勻分佈。而真正情況是,對於某一種問題,只有與已有的樣本資料或者現有問題高度擬合的函式,才是真正的目標函式,要實際問題具體分析。
所以,學習演算法與問題的契合程度才是衡量學習演算法優劣的決定性因素。
四、發展歷程
機器學習的發展歷程在Eren Golge部落格中用一張圖具體闡明瞭,在此借鑑引用。
五、應用現狀
(ps:本文完全是個人學習筆記,其中引用了“西瓜書”“南瓜書”的內容,對其進行理解和解釋,若有問題或錯誤,希望各位前輩進行指正)