看了coursea的機(jī)器學(xué)習(xí)課,知道了梯度下降法。一開始只是對其做了下簡單的了解。隨著內(nèi)容的深入,發(fā)現(xiàn)梯度下降法在很多算法中都用的到,除了之前看到的用來處理線性模型,還有BP神經(jīng)網(wǎng)絡(luò)等。于是就有了這篇文章。

本文主要講了梯度下降法的兩種迭代思路,隨機(jī)梯度下降(Stochastic gradient descent)和批量梯度下降(Batch gradient descent)。以及他們在python中的實現(xiàn)。

梯度下降法

梯度下降是一個最優(yōu)化算法,通俗的來講也就是沿著梯度下降的方向來求出一個函數(shù)的極小值。那么我們在高等數(shù)學(xué)中學(xué)過,對于一些我們了解的函數(shù)方程,我們可以對其求一階導(dǎo)和二階導(dǎo),比如說二次函數(shù)。可是我們在處理問題的時候遇到的并不都是我們熟悉的函數(shù),并且既然是機(jī)器學(xué)習(xí)就應(yīng)該讓機(jī)器自己去學(xué)習(xí)如何對其進(jìn)行求解,顯然我們需要換一個思路。因此我們采用梯度下降,不斷迭代,沿著梯度下降的方向來移動,求出極小值。

此處我們還是用coursea的機(jī)器學(xué)習(xí)課中的案例,假設(shè)我們從中介那里拿到了一個地區(qū)的房屋售價表,那么在已知房子面積的情況下,如何得知房子的銷售價格。顯然,這是一個線性模型,房子面積是自變量x,銷售價格是因變量y。我們可以用給出的數(shù)據(jù)畫一張圖。然后,給出房子的面積,就可以從圖中得知房子的售價了。

移動開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

現(xiàn)在我們的問題就是,針對給出的數(shù)據(jù),如何得到一條最擬合的直線。

對于線性模型,如下。