[Coursera] 機器學習入門
@斯坦福公開課 Machine Learning 學習筆記
基本思想
機器學習(machine learning)是一種方法或算法,它能夠通過“學習”,來解決一些特定的問題。
接下來,我將以具體的實例,闡述機器學習的產生和設計過程。
以認人識物爲例,只要你告訴一個之前不知道蘋果的人“這是蘋果,那是蘋果,那也是蘋果”,當你再拿一個新的蘋果,問他是什麼,他便能夠回答出“這是蘋果”。
這對於人來說,是一個很自然,不需要什麼努力就能完成的任務,但這對機器卻不是。如果要讓機器能夠認出這個蘋果,我們要先思考 “我們人,是怎麼認出這個蘋果的”。
將認蘋果的過程抽象出來,我們可以得到以下過程:
即人眼看到蘋果,獲取蘋果的圖像傳遞給大腦,大腦對圖像進行判斷,得出結果。將此過程再抽象擴展,我們得到更一般的過程。
即給定一個或多個輸入,通過一個處理器處理,得到一個或多個輸出。
此即人對此類問題處理方法的概況,也即“人是怎麼認出蘋果來的”。同時,這個過程也給了我們要讓機器認出蘋果的方法。即解決兩個問題:
- 如何獲取輸入
- 如何處理輸入,並給出輸出
不同的問題有不同的獲取輸入的辦法,以認蘋果爲例,利用數碼照相機對蘋果成像得到照片(即一系列像素)即可作爲輸入。通常來說,輸入的獲取較爲容易(當然也不全是這樣),而處理部分則相對困難。
對於處理,也有很多不同的辦法,其主要思想在於構造一個函數,能夠將不同輸入映射到不同的輸出上去。
然而我們不可能針對每個問題都設計一個算法,認蘋果一個,認桃子一個這樣做,我們需要讓機器學習,讓它自己設計出這個“算法”,我們要做的就是
- 提供給機器學習的辦法
- 提供給機器評估算法好壞的辦法
至此,我們最初“讓機器認物品(蘋果)”這個問題就轉換爲,如何讓機器通過一系列輸入,在這個例子中爲物品的照片,學習出識別的算法 和 如何評估算法的優劣,好讓機器調整算法。
至此,我們便清楚了機器學習究竟在做什麼以及它大體上是如何做的。
下面簡單介紹一種模型:
解決模型
線性迴歸
線性迴歸分爲單變量線性迴歸和多變量線性迴歸。其中單變量線性迴歸就是大家初高中求迴歸直線基本一樣,而多變量就是將回歸直線擴展到平面,空間,高維空間。
我們知道線性迴歸就是用一個線性函數去擬合給定的一個數據集,就像這樣。
(圖片來自CS229)
我們求線性迴歸就是要求那些參數
它通過一個給定的初始參數,利用一個評估函數指導如何修正參數,不斷迭代,從而求出最終參數。
評估函數(cost function):
一些建議
複習線性代數
機器學習的絕大多數算法,都要利用矩陣向量化(vectorization)來加快運算速度,所以一定要熟練掌握將各種加法乘法運算,轉換爲矩陣運算。
如
編程語言的選擇
初學者不必強求自己實現各種機器學習算法,可以多利用現有的第三方庫。
不建議一開始就用 Java, C#, C, C++ 進行學習,甚至Python也不要
建議使用 matlab 或 octave
它們只需簡單的幾行代碼就能實現複雜的功能。