0
我是機器學習新手,我試圖通過梯度下降對f(x)= kx進行線性迴歸。 而爲什麼梯度下降這種簡單的線性迴歸工作?
d(f(x)-y)^2/dk
=2(f(x)-y) * d(kx-y)/dk
=2x(f(x)-y)
=2x(kx-y)
因此,通過k = k - rate * 2x(kx-y)
更新K,通過梯度下降。
而這正是它是怎麼說的教科書上,所以我想這將工作:-(
from random import uniform
k,k0=uniform(-100,100),uniform(-100,100)
for _ in range(10):
x=uniform(-100,100)
k=k-0.01*x*(k*x-k0*x)
print k,k0
可悲的是,輸出:在鐓粗速度
-2639.75970458 -72.294275335
56444.9277867 -72.294275335
-350533.559366 -72.294275335
-315222.824967 -72.294275335
26481249.7869 -72.294275335
25795070.4808 -72.294275335
-329558179.012 -72.294275335
22212688252.9 -72.294275335
-2.2317104093e+11 -72.294275335
1.61788553661e+12 -72.294275335
k
偏離k0
:-(
我已經閱讀了wiki,谷歌和這個頁面右側推薦的問題,但不知道:-(Tnanks很多
我看到unutbu已經很好地回答了你的問題,但我只想補充一點,這是對'種子()'隨機數生成器非常有用。當數字不斷變化時,試圖調試使用隨機數的程序可能會很煩人。 :)你可以提供'random.seed()'作爲種子,例如數字或字符串;如果你省略了種子或者提供'None',那麼它會以系統時間(這是默認種子)播種。 – 2014-09-20 11:26:41