本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

如何通过牛顿法解决Logistic回归问题(3)

时间:2017-08-10 22:53来源:本港台直播 作者:118开奖 点击:
def gradient(x, y, Θ_1, Θ_2): sigmoid_probs = sigmoid(x, Θ_1, Θ_2) return np.array([[np.sum((y - sigmoid_probs) * x), np.sum((y - sigmoid_probs) * 1)]]) def hessian(x, y, Θ_1, Θ_2): sigmoid_prob

def gradient(x, y, Θ_1, Θ_2): sigmoid_probs = sigmoid(x, Θ_1, Θ_2) return np.array([[np.sum((y - sigmoid_probs) * x), np.sum((y - sigmoid_probs) * 1)]]) def hessian(x, y, Θ_1, Θ_2): sigmoid_probs = sigmoid(x, Θ_1, Θ_2) d1 = np.sum((sigmoid_probs * (1 - sigmoid_probs)) * x * x) d2 = np.sum((sigmoid_probs * (1 - sigmoid_probs)) * x * 1) d3 = np.sum((sigmoid_probs * (1 - sigmoid_probs)) * 1 * 1) H = np.array([[d1, d2],[d2, d3]]) return H

实现了上述 4 个数学过程之后,我们就使用牛顿法创建我们的外部 while 循环,直到结果在最大值的地方达到收敛。

def newtons_method(x, y): """ :param x (np.array(float)): Vector of Boston House Values in dollars :param y (np.array(boolean)): Vector of Bools indicting if house has > 2 bedrooms: :returns: np.array of logreg's parameters after convergence, [Θ_1, Θ_2] """ # Initialize log_likelihood & parameters Θ_1 = 15.1 Θ_2 = -.4 # The intercept term Δl = np.Infinity l = log_likelihood(x, y, Θ_1, Θ_2) # Convergence Conditions δ = .0000000001 max_iterations = 15 i = 0 while abs(Δl) > δ and i < max_iterations: i += 1 g = gradient(x, y, Θ_1, Θ_2) hess = hessian(x, y, Θ_1, Θ_2) H_inv = np.linalg.inv(hess) # @ is syntactic sugar for np.dot(H_inv, g.T)⊃1; Δ = H_inv @ g.T ΔΘ_1 = Δ[0][0] ΔΘ_2 = Δ[1][0] # Perform our update step Θ_1 += ΔΘ_1 Θ_2 += ΔΘ_2 # Update the log-likelihood at each iteration l_new = log_likelihood(x, y, Θ_1, Θ_2) Δl = l - l_new l = l_new return np.array([Θ_1, Θ_2])

可视化牛顿法

让我们看一下当我们把在对数似然曲面上使用牛顿法的每一次迭代都画出来的时候会发生什么?

如何通过牛顿法解决Logistic回归问题

注意:第一次迭代是红色的,第二次是橙色的...... 最后一次迭代是紫色的。

在这幅图中,可以确认我们的「紫色区就是最大值」,我们成功地收敛了!

如何通过牛顿法解决Logistic回归问题

可视化我们的解

通常,为了可视化一个 1 维数据集,你会把所有的点在数字轴上画出来,并在数字轴的某处设置一个界限。然而这里的问题是所有的数据点都被混在一起了。

所以,我们在 x 轴将它们展开,并将这些点用颜色来标记。我们也画出了 3 条界线来区分房产的百分比——正如图例解释的一样。

如何通过牛顿法解决Logistic回归问题

结论

我们介绍了一些新主题,包括海森矩阵、对数似然以及 sigmoid 函数。将这些方法结合在一起,我们就能实现用牛顿法来解决 logistic 回归问题。

尽管这些概念促使形成了实现我们的解决方案的具体化的基础,但是我们仍然需要注意那些能够导致牛顿法发散的地方,这些内容超出了本文所要讨论的范围,但是你可以阅读更多发散资料。

原文链接:

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容