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
:-(출력 작동 생각한 방법을 정확하게 : 열받은 속도 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
벗어난를 :-(
나는 이미 wiki, google 및이 페이지의 오른쪽에 추천 된 질문을 읽었지만 잘 모르겠다 .-- Tanks a lot
내가 unutbu 멋지게 당신의 질문에 대답했다고 볼 수 있지만, 난 그냥 씨앗()'난수 생성기'에 유용 것을 추가 할 것입니다. 숫자가 계속 변경 될 때 난수를 사용하는 프로그램을 디버깅하는 것은 성가신 일입니다. :)'random.seed()'에 해시 가능 객체를 시드 (예 : 숫자 또는 문자열)로 제공 할 수 있습니다. 시드를 생략하거나'None'을 제공하면 시스템 시간 (기본 시드)이 시드됩니다. –