最近在跟臺大的這個課程,以爲不錯,想把學習筆記發出來跟你們分享下,有錯誤但願你們指正。算法
一機器學習是什麼?編程
感受和 Tom M. Mitchell的定義幾乎一致,機器學習
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.函數
簡而言之,就是咱們想要機器在某些方面有提升(如搜索排名的質量,即NDCG提升),就給機器一些數據(用戶的點擊數據等各類)而後讓機器得到某些經驗(Learning to rank的一種模型,也就是數學公式)。這裏有點須要強調,那就是提升指標,必需要有某種指標能夠量化這種提升,這點仍是很關鍵的,工業界作機器學習,首先關注data,其次就是有無成型的measurement,可使Precision/Recall,也能夠是NDCG等。學習
二何時能夠用機器學習?spa
其實就三要素:3d
編程很難作到能夠有多種,大部分緣由是系統太複雜,很難用Rule-based的東西去解決,例如搜索排名,如今影響排名的因素有超多幾百種,不可能去想出這些因素的規則,所以,這時候用機器學習就是恰到好處。特別是移動互聯網的今天,用戶更容易接觸互聯網,產生的數據愈來愈多,那麼要找到某些不容易實現的規律,用機器學習就是很好的了,這也是爲啥機器學習這麼火,其實我學機器學習不只僅是一種投資(確定它將來的發展前途),我想作的事情還有一點,就是經過它更深入的理解人腦的學習過程,提升本身的學習效率和思惟能力。orm
三具體如何用機器學習?blog
輸入是兩個:1 data;2 假設集合。Data如何使用?經過提取出feature vector來使用,也就是那個training examples,假設集合是用來選取最終f的。也就是說,輸出就是f(或近似f)。ci
四第一個機器學習算法:PLA(Perceptron Learning Algorithm)
課程講述這個算法的整體思路以下(典型的提出問題,分析問題以及解決問題):
這個算法本質上是線性分類器,針對給定的feature vector給出Yes 或者 No的回答
下面是用這個算法去解決信用卡問題的數學抽象:
這裏的思想在於樸素的把從用戶信息抽出來的一些feature(年齡等)量化並組成vector,而後乘以一個權重向量,並設定一個閾值,大於這個閾值就表示好,小於表示很差,很明顯這個式子的未知變量有兩個(實際只有一個):
作一點小小的變形使得式子更加緊湊,
還有就是從這個模型能夠知道,regression model也能夠解決classification問題,轉化的思想。下面是這個算法的核心,定義了學習目標以後,如何學習?這裏的學習是,如何獲得最終的直線去區分data?
這個算法的精髓之處在於如何作到"作錯能改",其循環是不斷遍歷feature vector,找到錯誤的點(Yn和當前Wt*Xn不符合),而後校訂Wt,那麼爲何要這樣校訂?由於這樣能夠保證Wt愈來愈靠近perfect直線Wf(ps.暫時沒想到正向思惟是如何獲得這個式子的)課程像大多數課本同樣,用逆向思惟給予介紹,就是在給定這樣可以作的狀況下去證實,即證實爲何這樣作能夠不斷接近目標,以及最終必定會中止?
下面道出了PLA終止的條件:
這個是比較容易想到的,若是不能用直線去區分data(線性不可分),確定是解決不了的,因此必需要知足線性可分,其實問題的關鍵在於如何方便的知道某些數據是否線性可分?這個在課程中目前沒有涉及,一種簡單的解決方法是畫出來,直觀的去看,這個我以爲不是好方法。
這兩頁PPT比較複雜,其實就是在利用條件證實,下面從新組織下給出思路,由於Latex用中文不太爽,就用英文了:
五 PLA的優缺點
爲了應對Noisy,咱們不可能獲得完美的直線,那麼怎麼衡量當前獲得的直線可以知足要求呢?憑直覺,咱們知道若是當前直線犯錯越少越好(對全部data),因而有了下面的改進算法,Pocket PLA,本質上就是在改錯的時候多作一步 -- 判斷當前改正犯的錯是否比以前更小,也就是貪心選擇
上了一週臺大的這個課程感受老師仍是很負責任,特別是循循善誘的教學方式真正是站在學生的角度考慮問題,更重要的是,我很欣賞課程的脈絡,其由幾個關鍵問題引出整套課程,這和《如何閱讀一本書》裏面帶着問題閱讀很像,其實學習也是如此,這點必須贊一下,也作個小廣告,目前你們都在推薦Ng教授的課程,我以爲這個課程也值得推薦。
參考資料:
注:除了證實,其餘授課ppt都來源於課程