python - 为什么这种带有梯度下降的简单线性回归不起作用?

标签 python machine-learning linear-regression

我是机器学习新手,我正在尝试通过梯度下降对 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 - rates * 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、Google 以及本页右侧推荐的问题,但不知道:-( 思考了很多

最佳答案

减小“学习率”(例如 0.01),增大迭代次数 N:

from random import uniform
learning_rate = 0.0001
N = 100
k, k0 = uniform(-100, 100), uniform(-100, 100)
for _ in range(N):
    x = uniform(-100, 100)
    k = k - learning_rate * x * (k * x - k0 * x)
    print k, k0

关于python - 为什么这种带有梯度下降的简单线性回归不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25947715/

相关文章:

python - 使用 Python random.shuffle 随机播放列表的最大长度?

python - 如何修复 : module 'tensorflow' has no attribute 'Session'

python - 如何使用多个分类变量以 Python R 风格创建预测模型

r - 如何有效地推断多个变量的缺失数据

pandas - numpy 数组的维度不匹配

python - 切片 DataFrameGroupBy 对象

python - 如何获得分类模型的预测概率?

python - 如何提取Matlab的datenum的小数部分?

python - 是否有任何 python 机器学习库可以返回线性 svm 的系数或几何边距?

java - 多重回归