吳恩達機器學習:線性迴歸
首先說一些關於課程的題外話。對於 Ng 的這個課程,筆者沒有選擇在 Coursera 上學習課程,一來是因為 Coursera 有自己的課程週期,但這個週期不一定適合所有人。其次 Coursera 的課程作業是使用 Octave 語言,而筆者個人覺得不管是學習還是未來使用 Python 都會是更合適的語言。所以最筆者選擇了 課程視訊 + Python 實現作業 的形式。
點選 課程視訊 你就能不間斷地學習 Ng 的課程,關於課程作業的 Python 程式碼已經放到了 Github 上,點選 課程程式碼 就能去 Github 檢視( 無法訪問 Github 的話可以點選 Coding 檢視 ),程式碼中的錯誤和改進歡迎大家指出。
以下是 Ng 機器學習課程第一週的筆記。
機器學習
什麼是機器學習?Arthur Samuel 給出的一個非正式定義是:不通過明確地程式設計,使計算機擁有通過學習解決問題的能力。
機器學習的演算法包括 監督學習,無監督學習,強化學習,推薦系統等。我們第一週學習的 線性迴歸 屬於 監督學習。
迴歸問題
學習的目的是為了解決問題。迴歸問題是非常常見的一類問題,目的是為了找尋變數之間的關係。比如要從資料中找尋房屋面積與價格的關係,年齡與身高的關係,氣體壓力和體積的關係等等。而機器學習要做的正是要讓機器自己來學習這些關係,併為對未知的情況做出預測。
監督學習的工作方式
首先要有一個訓練資料集( Training Set ),其中包含資料對應問題的正確結果。通過我們的學習演算法 ( Learning Algorithm ) 學習訓練資料集,最終獲得一個函式 ( Hypothesis ),這個函式就是我們需要的 預測函式
對於 線性迴歸 ,我們的 Hypothesis 就是:
其中的 就是學習演算法需要學習的引數,而 是我們對於問題所選取的特徵。
代價函式
那麼如何學習 預測函式 中的 呢?我們需要引入 代價函式 的概念,它的作用是評估真實與預測值之間的差異。一旦有了這個函式,學習演算法的目標就是找到 使得這個函式的值儘可能的小。對於 線性迴歸,我們使用的 代價函式 是:
其中 是樣本數, 是訓練資料集已知答案,上標 表示第幾組訓練資料,代價函式 是關於 的函式。當然為了是表達更簡潔、編寫的程式更加清晰,我們通常會使用它的矩陣表達:
式中 為所有訓練特徵資料組成的矩陣, 為訓練資料集已知答案的列向量: