第一章还是较基础,首先提到的就是 梯度下降法
(1)theta_j := theta_j - apha * J’/theta_j’
J 是最小二乘法得到的 预测值和真实值之间的差异,越小越好,故(1)式中为减号
J’ /theta_j’ 一般会化成较简略的形势,比如最小二乘法的会化简为 (h(theta) - y) * theta_j,罗辑回归一般能化简为相同格式,不过符号相反,为 (y - h(theta)) * theta_j,不过逻辑回归是使用最大似然算法,求的是最大值,故theta_j := theta_j + apha * J’/theta_j’,最后的格式可以完全一样。
这就是梯度下降法,初始化固定一组 theta,选定迭代步长apha, 即可迭代,下一个点产生时是沿着梯度直线方向
当然会有一些矩阵法,直接通过矩阵运算得到
theta = (X ^T X) ^−1X^ T y
牛顿法,,,
θ := θ − f(θ) / f ′ (θ)
不过这个是求最小值的,逻辑回归的问题需要再度求导,即
θ := θ − ℓ ′ (θ) /ℓ ′′(θ)
最后得到的简略式为
θ := θ − H ^−1∇θℓ(θ).
H 为hessian矩阵
Hij = ∂ 2 ℓ(θ) / ∂θi∂θj
问题,如果用牛顿法求最小二乘法的收敛,直接使用 θ := θ − f(θ) / f ′ (θ) := θ − J(θ) / J ′ (θ)即可?
牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。
根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
wiki上给的图很形象,我就直接转过来了:
红色的牛顿法的迭代路径,绿色的是梯度下降法的迭代路径。
三次收敛的逼近的每一步需要解三次方程,涉及的计算量比二次的大很多,相比收敛速度的提升不划算。
牛顿法用曲面达到局部最优:我的理解是牛顿法求的是当前点的导数,然后对导数再求导,意义就是看这个导数的变化率。
应该都是可以解决问题的,暂且不表,已经关注一篇知乎文章
多分类求解
1…k 个分类 ;每个分类对应一组参数 theta_i; 记住下面的公式即可
仍然使用最大似然函数 求的l(theta)
好吧,知道怎么做了吧, 牛顿法,梯度下降法都扔过来吧,hessian矩阵的牛顿;;;;嗷嗷 这个就是传说中的 soft max