機器學習-筆記2

 上一篇筆記實際上是在看過網易公開課上的課程後寫的,程序甚至數據等等都是本身在沒有什麼資料的狀況下編出來的,如今轉戰coursera.org平臺,一樣的老師,幾乎一樣的課程,但毫無疑問coursera上的用戶體驗好多了,包括一個課程須要的quiz,exercise,wiki甚至一個小型的bbs,上面能發現來自世界各地的與你一塊兒學習的人,建了一個QQ羣,就聚集了來自許多地方的中國人,甚至包括來自HK,臺灣,USA,UK的華人,感受很新鮮。算法

 

秉着認真的態度,我有從新學習了看過的課程,許多以前不明白的地方引刃而解,系統地完成了第一個program exercise,感受頗有收穫,顧做筆記2.
exercise主要仍是對liner regression 的代碼化,但代碼,怎麼說,由於是按照給出的格式寫的,因此更加規範化了。
ex1主要是對針對一元一次函數的擬合,主要須要完成的函數包括數組


plotData(X, y);
computeCost(X, y, theta);
gradientDescent(X, y, theta, alpha, iterations);app


完成起來難度不大,但第一次交沒過,緣由是我本身修改了alpha的值,致使雖然答案正確可是過程變化趨勢不正確,後修改過之。後面針對多features的擬合其實和這個能夠用同一套代碼,就隨便貼貼吧。機器學習


J =(X*theta-y)’*(X*theta-y)/2/m; 這是computeCost中的主要代碼,由於文檔建議Octave儘可能不要用枚舉,隨意我採用了矩陣的方式。ide


theta_temp=theta;
for j=1:size(X,2)
for i=1:m
theta_temp(j)=theta_temp(j)+alpha/m*(y(i)-X(i,:)*theta)*X(i,j);
end
end
theta=theta_temp;wordpress

補註:在這以前沒看V號課程視頻,因此這裏仍是有些複雜,最後我所有把它矩陣化了,結果一句就足夠了:函數

theta=theta-alpha/m*X’*(X*theta-y);學習

不得不感嘆線性代數的簡便性啊
這是gradientDescent中的主要代碼部分,由於要simultaneously decrease theta,因此得用臨時數組存起來,固然之前也長幹這事,並無什麼難度ui


下面是效果圖

最後還實踐了Normal Equations,主要就是一個公式的應用

不得不說Normal Equations確實要快不少,可是正如課上講到的,之後將會有許多機器學習算法不能用到它。我的感受matlab上的擬合就是用的Normal Equations來實現的。
總的來講,exercise的難度不大,但倒是我第一次提交exercise,想在也算熟悉了coursera上的流程了。有些貪多報了三門課,準備之後再學Model Thinking,怕實在吃不消,我會堅持下去嗎,固然,我會堅持下去。spa

相關文章
相關標籤/搜索