吳恩達機器學習第二周課後感:線性回歸
來自專欄 課後有感
目錄
一、主要內容
二、個人感受
三、實際應用
正文
一、主要內容
1.Linear Regression with Multiple Variables
《Environment Setup Instructions》
不需要。首先我在讀本科的時候有接觸過MATLAB,並不是很喜歡。現在工作上又是以python為主,我個人是實用主義,有用了再去學,畢竟自學速度快,也不怕。而且在這門課最主要的還是要學好理論。即使是為了復現課程,python綽綽有餘。
《Multivariate Linear Regression》
Multiple Features
Multiple Features:多特徵,也就是說一個模型之中有非常多的項,可以理解為多元一次方程。
在之後的表達中n來表示有多少個特徵(或變數),m來表示有多少個數值,這樣一來就可以用一個矩陣來表示所有的數字了。
Gradient Descent for Multiple Variables
通過求和的形式,依次算出猜想與實際之間的差值,通過公式算出Cost Function。後通過不斷賦值的形式再不斷更新梯度,從而達到梯度下降的效果。
Feature Scaling
由於對兩個不同數值跨度的變數進行梯度下降的處理會有難度,所以我們可以通過縮放比例的方法,使兩個值變得更加容易處理。
比如房屋面子可能會是從0到2000的跨度,房間數量可能是從0到5的跨度。如果將這兩個值畫成圖表,會形成一個很窄的橢圓形,梯度下降的難度會提高。當按比例對兩個值進行處理之後,圖表會變成相對圓潤的橢圓形,處理就容易得多。
Mean Normalization
通過對變數進行處理(主要在平均數上),使其跨度的平均值盡量保持在0上。
被處理過後的房屋面積和房價跨度都可以在-0.5到0.5之間,那麼所畫出的圖像就可以相當圓潤了。
Learning Rate
Learning Rate:學習率,每次迭代梯度下降值的效率。
確保梯度下降正確工作有一種相當實用的辦法:分別迭代Cost Function,100次、200次、300次、400次甚至更多,如果Cost Function的最小值在不斷下降,就說明在正確工作。當迭代的值達到一定數量之後,效果不再明顯(邊際效應?)。當Cost Function不降反升的時候,最好的辦法是選擇更小的學習率。
Features and Polynomial Regression
Feature:特徵,也就是模型中的變數。
Polynomial Regression:多項式回歸,不同於線性回歸的變數只能是一次項,可能是1/2一次方,這個項也可能是2次方,甚至是3次方。
特徵在處理上可以有很多種方式,可以只是單純的使用已知的變數。也可以使用課程中的處理方法,當我們有長度和寬度的時候,可以長乘以寬,得到面積,作為我們的第三個變數。
《Computing Parameters Analytically》
Normal Equation
Normal Equation:正規方程,將所有值的偏導置為0後為各個值依次求解,以求出最優解。
不同於梯度下降的迭代求解,正規方程使用的是解析的方法,一步到位。Feature Scaling在正規方程中並不必須。當特徵數量很大的情況下,正規方程的效率會很低O(n^3)。
Normal Equation Noninvertibility
當遇到不可逆矩陣的時候(不常見),可以簡化一下特徵,在可以的情況下甚至可以刪除一些不是很必要的特徵。
2.Octave/Matlab Tutorial
不需要。利用同《Environment Setup Instructions》。
二、個人感受
先說一下這周專欄準備的感受。在周一的時候,我已經將左右的框架都準備好,自以為只要將內容填充進去就萬事大吉。但是我遠遠低估了知識類專欄的難度。雖然本周大部分內容都是如何安裝軟體的編譯環境以及編程的一些教學,所以專業知識相對還是比較少的,但即使是這麼少的內容,準備起來也沒有那麼的容易。為了可以盡量做到言簡意賅的表達,我需要反覆觀看視頻,有幾十秒我看了五遍。下周在準備的時候,應該盡量用到上周提到的Coursera的碎片化性質。上午看一個視頻,下午看一個視頻,然後總結到草稿上。下周有11個視頻,周日上午正好可以將課程內容總結完成。而且時間跨度大,可以消化並且總結想法,就這麼定了。
這周的內容上,也是貫徹了吳恩達為了普及機器學習降低門檻的宗旨,非常簡單。基本上自己看上一到兩遍就可以用自己的語言複述出來了。線性代數的重要程度的確很高,其實從多項式這個標題出現的時候就應該有所警覺了。當我看到polynomial的時候,再一次回想起被線性代數的陰霾統治的那個學期。當然,感謝吳恩達降低的難度,基本上對於矩陣有所了解就可以無縫銜接上述的機器學習的知識了。
梯度下降在這一周正是奠定了全部的基礎。這一周已經講完了比例縮放和學習速率,在未來的課程中所涉及的內容也都只是上述內容的變體,不會有太大的障礙(我個人最大的毛病就是輕敵,被打臉無數次,就是不長記性。真理是「戰略上藐視敵人,戰術上重視敵人」)。
對於正軌方程,我最大的感受是,在大數據時代,這個方法應該會被遺棄。因為大數據的大不僅僅是數據量的大,也包括特徵量的大。比如Kaggle上房價預測的比賽中,官方可以提供的特徵量可以淹沒一整個版面。如果使用運算效率這麼低的演算法,很難做到領先一步,甚至會拖整個項目的後腿。
三、實際應用
2017年11月5日
這周的演算法,依舊非常基礎。不過,還是有一些可以想像的空間,因為所有的數據在範例中都是由矩陣來表示的,所以傳統公司所使用的SQL數據,都有非常大的玩弄空間。我自己本身有記錄身體特徵的習慣,雖然數據量不大,但是範式被我整理的還算可以,不過有些文字還是需要繼續整理一下。因為記錄的時間還不到一年,我個人認為還是不夠,等我記錄五年之後,我最想做的就是可以預測口腔潰瘍發生的時間,這樣可以提前吃一些維生素,或者找一些方法短時間內提高新陳代謝,這樣就可以免受皮肉之苦了,畢竟當我知道口腔潰瘍是不治之症的時候內心是崩潰的。
推薦閱讀:
※Hidden Markov Model(隱馬爾可夫模型(Discrete))
※機器學習速成課程 使用 TensorFlow API
※人人都懂EM演算法
※反向傳播演算法和梯度下降理解
TAG:機器學習 |