線性迴歸例子:訓練集,預測價格。x->h->y。h是函數。完成了x到有的映射。x是房子大小,y是房子價格。h是訓練集產生的一個函數。h最初是一個假設,如何表示這個假設h,並不斷的修改爲爲最佳的假設。此處假設h(x)=θ0+θ1x.線性函數產生.不斷的經過x值和y值肯定兩個參數的值.假設了幾個θ0和θ1的值.算法
儘可能使得對於給定的x值,h(x)接近給定的y值。會更合理的預測y值。機器學習
最小化問題。關於θ0和θ1的最小化。訓練集中,對全部x,使得∑(h(x)-y)^2最小,從而使得(1/2m)*∑(h(x)-y)^2最小。方差和最小。有個詞來着,統計學上學過的。就是直觀上預測y值最準的。函數
定義代價函數J(θ0,θ1)=(1/2m)*∑(h(x)-y)^2。平方偏差代價函數。衆多代價函數之一。對大多數問題,特別是迴歸問題,是一個合理的選擇,也是解決迴歸問題最經常使用的手段。學習
代價函數的工做原理。擬合數據的直線。θ0=0時,J(θ1)與θ1的函數關係能直觀顯示直線擬合度的好壞。如二次函數。對於大多數θ0和θ1都不爲0 的狀況,會是一個3d曲面圖。也就是碗型立體圖。等高線圖是曲面圖和不一樣高度水平截面的交線,具備相同結果值的不一樣變量值的集合。中心點是最低點,計算出的最小的值點,最好的擬合點。最簡單的線性函數處理求值就到了三維,再高就真的是矩陣論了。3d
梯度降低算法求代價函數J最小值。計算量小了不少,普遍應用在機器學習衆多領域。能夠解決更通常的問題,好比多個θ值時求J。具體使用:初始化θ0和θ1爲0.求出J,而後一點點變化,直到求出J的最小值,或局部最小值。如丘陵圖。一步一想的小碎步,往降低最快的方向邁步。同時計算θ0和θ1,同時更新θ0和θ1。更新是一種梯度降低中經常使用的方法。θj := θj - α(δJ(θ0,θ1)/δθj) (for j=0 and j =1).θ0和θ1都用上一輪的數算好了之後再同時給這倆賦予新值。α爲降低速率,控制步幅。變量
梯度降低算法過程當中的意義:無數的二次函數的偏導數。降低速度。α大於0,導數大於零,則說明函數在上升,θj減去這個正值則左移,向降低方向定位,接近最小值。這本就是J(θ)與θ的函數關係呀。α的取值過小會降低太慢,步數太多。α的取值太大會可能越過最低點致使沒法找到最低點,甚至發散,沒法收斂。原理
假設將θ1初始化在局部最低點,切線斜率爲0,θ1再也不改變。保持在這裏。θ0會逐步過來的, 只在一個方向上變化了。曲線愈來愈平緩,導數絕對值愈來愈小,θ更新幅度愈來愈小,,步幅愈來愈小。這也是梯度降低自動採起較小的幅度。不必另外減少α。方法
綜上能夠得出第一個機器學習算法:線性迴歸算法。統計