我正在尝试实现一种算法来找到函数的最小值。
在转向 sigmoid 激活函数之前,我试图了解线性回归。
通常,梯度下降算法用于找到算法收敛的最小值,但线性模型还有其他一些方法。
假设我有两个向量:
x=[1,2,3,4,5,6,7,8,9,10,11,12]
y=[2.3,2.33,2.29,2.3,2.36,2.4,2.46,2.5,2.48,2.43,2.38,2.35]
在这些点之间,我想添加一个带有最小二乘的线性分隔符。
假设我有一些不完美的线性函数:
据我所知,有两种方法可以找到它:
和梯度下降算法:
尽管对于线性模型,求导数是微不足道的,因此不需要第二种方法。
现在我在 Python 中使用了向量的第一个方程:
w = ((np.transpose(x)*x)**-1)*np.transpose(x)*y
不幸的是,输出无关紧要:
[ 2.3, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]
然后我尝试在 Python 中使用第二种方法进行 500 次迭代:
for i in range(1,5000):
x_old = x_new
x_new = x_old - v*dydx
print("x_new = {0} - {1}({2}) = {3}".format(x_old, v, dydx, x_new))
但是,我不确定如何知道它何时达到收敛点。
如何将这些方法正确用于线性模型?如果是这样,它们如何用于更复杂的模型,例如逻辑回归?



