之前通過看臺大的公開課視頻《機器學習基石》來學習, 但是發現看的看的有些懵, 感覺自己還是看書自學比較好, 不過視頻也算我的“引路人”, 讓我對機器學習有了一個大概的認識, 對我現在“啃書”有著很大的幫助。 今天早上七點起床, 七點半到圖書館開始學習, 那麼從今天開始就要開始苦讀《Python大戰機器學習》以及周志華老師的《機器學習》了, 希望能在讀研之前的三個月時間有所斬獲吧。
這本書封皮就是使用的西瓜, 學習使用的栗子也是西瓜, 看來周志華老師很喜歡吃西瓜……
我們在挑選好的西瓜時,
我們可以把機器學習分成收集、分析、預測三個階段。 這些階段所面對的物件都是資料, 也就是說機器學習是圍繞資料展開的。
1.元素、稱謂
首先把我們的資料分放在一起, 稱之為:
D = {x1,x2,x3}—— 資料集。
其中每一個x都是一個一個西瓜的資訊, 稱為樣本(sample)例如:
x1(色澤=烏黑, 根蒂=捲曲, 敲聲=渾濁)
每一個都是三維向量, 我們稱d=3,3是樣本維數。
假設三維坐標系, X軸是顏色, 相當於一個色譜, 不同顏色對應不同數值;Y軸是根蒂、Z軸是敲聲。 這樣, 每一個西瓜在坐標系中都有自己的位置。
這三個維度張開形成一個三維空間,
X:樣本空間、輸入空間。
而每一個資料都會對應一個結果, 好瓜或者壞瓜, 我們稱之為:
label 標記。
我們把label的集合稱為:
Y:標記空間、輸出空間。
(xi, yi)表示第i個樣例, 既有資料又有結果, 我們稱之為樣例(example)。
2.目的
我們的目的是研究一個學習演算法(學得模型)以用來匹配當前訓練所使用的的資料且可以預測以後的瓜是好是壞, 換句話說, 我們是在茫茫多的演算法當中尋找一個接近“真理”的演算法, 可以準確的預測。
我們把每一個演算法稱為h:假設。
這個茫茫多的演算法放在一起, 稱之為:假設空間。
把接近真理的判斷瓜是好是壞的方法稱為:
g:ground-truth。
這樣一來, 我們的目的就是在hypothesis set中尋找一個無限接近真理g的h。 我們把h→g的逼真程度, 或者學得模型對除了訓練資料集以外的新樣本的適應能力,
泛化能力指學得模型對新樣本的適應能力, 能力越強則越能準確地預測瓜是好是壞, 則h越接近g, 那麼h越是可以代表更廣泛的樣本、樣例, 也就是說我們從特殊的樣本獲得了一個一般的規律, 我們將這個過程稱為歸納。
歸納(induction)、演繹(deduction):
歸納是獲得學得模型, 演繹就是預測。
歸納學習有廣義學習:相當於從樣例中學習;狹義學習:要求從訓練資料集中得出一個概念(concept)。
給概念舉個例子:色澤鮮亮、根蒂捲曲、敲聲渾濁的瓜是好瓜。
我們要獲得一個泛化性能好、語義明確的概念是很難的, 而且現實當中我們也基本使用的是“黑箱模型”(不在乎內部是如何運作的,
3.得出學得模型的過程
學習過程看作一個從hypothesis set中選出匹配訓練集的假設, 但是選出的假設有可能不止一個, 如果有多個假設匹配訓練資料集, 我們就將這多個假設放到一起, 稱為:版本空間(version space)或hypothesis set。
版本空間中的假設可能對同一個樣本x有不同的判定y, 但對於一個學習演算法而言, 必須要產生一個學得模型, 此時演算法本身的“偏好”就顯得尤為重要。 對於某種類型假設的偏好, 稱為:歸納偏好。 這個歸納偏好對於每一個演算法來講都是必須的。 可以將歸納偏好看作是在假設空間中選擇假設的啟發式、“價值觀”。
“奧卡姆剃刀”原則:如有多個假設與觀察一致, 則選擇最簡單的那個假設。
例如在三維空間中訓練資料集的點可以被一條直線全部經過, 也可以被一條七拐八拐的曲線全部經過, 那麼我們就選擇簡單的直線。
但這個假設是否簡單也有著不同的詮釋, 如何判定, 需要借助其它機制, 例如在上面的例子中, 用幾何圖形的方程來判定是否簡單。
但是, 如果一個演算法A在某一問題上比演算法B好, 則必然存在另一個問題B更好, 這就是NFL定理(No Free Lunch Theorem):無關A、B有多好多壞, 其期望性能是相同的。 但前提是所有問題出現的機會相等, 或者所有問題同等重要。
一看這個定理, 所有的演算法的期望性能都一樣, 那麼一個經過幾年研究的演算法跟胡思亂想的一個“點子”的效果一樣, 那我們還研究什麼啊!?
但是我們要明確一點的是:現實生活中,問題各種各樣,情況各不相同,所有問題出現機會相等,所有問題同等重要這種情況是不存在的。所以NFL定理的寓意在於:補課脫離現實具體問題,空談演算法好壞是無意義的。
學習演算法自身的歸納偏好與問題是否匹配,具有決定性作用。
4.一些概念
如若我們研究的是離散值,我就稱為:分類
研究連續值:回歸
不給標記進行自分類:聚類
二分類任務:結果標記只有兩種情況,例如好、壞,Y = {-1,+1} 負類(negative)、正類(positive)
多分類任務:| Y | > 2
回歸任務: Y = R,R為實數集
監督學習(supervised learning):分類、回歸。在喂給機器資料時候,明確告訴機器,這個資料的類別,或者label。
半監督學習(semi-supervised ):是告訴一部分資料的類別樣本,大部分的資料要考機器自己分類。
無監督學習(unsupervised learning):聚類。完全不告訴機器類別,完全靠機器自己。
聚類:不知label,不知類別,可以更好的瞭解資料內在、潛在的規律,在自分類後,每一類稱為簇(cluster)
增強學習(reinforcement learning):機器一部分一部分漸進學習。比如,訓練狗狗坐下,我們說“坐下”,但狗狗剛開始聽不懂,有可能開始pees,這種情況下,我們無法直接告訴它坐下是什麼樣的動作(難道我們要親自示範麼),所以我們可以採用側面告知,一部分一部分的交給它。這個過程是怎樣實現的呢?我們可以利用獎懲。當他做錯動作的時候,我們給他懲罰,比如打他一下(殘忍。。),這樣在進行了很多錯的動作後終究會做出對的動作坐下,當它做對的時候給她獎勵。這個過程就是,一步一步的認知動作是錯的,從而接近對的動作。
那我們還研究什麼啊!?但是我們要明確一點的是:現實生活中,問題各種各樣,情況各不相同,所有問題出現機會相等,所有問題同等重要這種情況是不存在的。所以NFL定理的寓意在於:補課脫離現實具體問題,空談演算法好壞是無意義的。
學習演算法自身的歸納偏好與問題是否匹配,具有決定性作用。
4.一些概念
如若我們研究的是離散值,我就稱為:分類
研究連續值:回歸
不給標記進行自分類:聚類
二分類任務:結果標記只有兩種情況,例如好、壞,Y = {-1,+1} 負類(negative)、正類(positive)
多分類任務:| Y | > 2
回歸任務: Y = R,R為實數集
監督學習(supervised learning):分類、回歸。在喂給機器資料時候,明確告訴機器,這個資料的類別,或者label。
半監督學習(semi-supervised ):是告訴一部分資料的類別樣本,大部分的資料要考機器自己分類。
無監督學習(unsupervised learning):聚類。完全不告訴機器類別,完全靠機器自己。
聚類:不知label,不知類別,可以更好的瞭解資料內在、潛在的規律,在自分類後,每一類稱為簇(cluster)
增強學習(reinforcement learning):機器一部分一部分漸進學習。比如,訓練狗狗坐下,我們說“坐下”,但狗狗剛開始聽不懂,有可能開始pees,這種情況下,我們無法直接告訴它坐下是什麼樣的動作(難道我們要親自示範麼),所以我們可以採用側面告知,一部分一部分的交給它。這個過程是怎樣實現的呢?我們可以利用獎懲。當他做錯動作的時候,我們給他懲罰,比如打他一下(殘忍。。),這樣在進行了很多錯的動作後終究會做出對的動作坐下,當它做對的時候給她獎勵。這個過程就是,一步一步的認知動作是錯的,從而接近對的動作。