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

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

时间:2017-08-10 22:53来源:本港台直播 作者:118开奖 点击:
注意:通过对函数取对数,我们便得到了对数似然值(log-likelihood),我们确保我们的目标函数是严格的凸函数(这是一项附加条件),这意味着它有一个

注意:通过对函数取对数,我们便得到了对数似然值(log-likelihood),我们确保我们的目标函数是严格的凸函数(这是一项附加条件),这意味着它有一个全局最大值。

数学:单变量的牛顿法

在我们最大化对数似然函数之前,需要介绍一下牛顿法。

牛顿法是迭代式的方程求解方法;它是用来求解多项式函数的根的方法。在简单的、单变量的情况下,牛顿法可以通过以下步骤来实现;

求取函数 f(x) 在点 (xn,yn) 处的切线:

求取点 x_n+1, 处的切线的在 x 轴的截距:

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

求出 x 截距处的 y 值

如果 yn+1−yn≈0:返回 yn+1,因为我们的结果已经收敛了!

否则,更新点 (xn,yn),继续迭代:

下面的动图有助于我们可视化这个方法:

如果你能够更详细地理解上述算法,你将看到这个可以归结为:

任何一位通过高中数学考试的人都能够理解上面的内容。但是我们如何将其推广到多变量的「n 维」情况中呢?

数学:N 维问题中的牛顿法

说到 n 维情况,我们用一个叫做梯度的偏微分向量来代替单变量微分。

如果这个概念对你而言有些模糊,那么请复习一下梯度的知识。

所以在多变量的形式中,我们的更新规则变成了参数 x^ 的向量减去 f(x^),如下所示:

注意: f(xn)f′(xn) 中的 f′(xn) 变成了 ∇f(x^n)^(−1),j2直播,因为我们将标量 f(xn) 推广到了多变量的情况下,将它变成了梯度的倒数 ∇f(x^n)^(−1)。

数学:用牛顿法最大化对数似然函数

我们要最大化假设函数 hθ(x) 的对数似然值ℓ(θ)。

为了最大化我们的函数,我们要找到函数 f ℓ(θ) 的偏微分,并且将它设为 0,然后从中求出 θ1 和 θ2,来得到微分的临界点。这个临界点就是对数似然函数的最大值点。

注意:因为对数似然函数是严格的凸函数,所以我们会有一个全局最大值。这意味着我们只有一个临界点,所以通过上述方法得到的解就是我们的唯一解。

这应该听起来很熟悉。我们寻求使偏微分为 0 的 θ1 和 θ2。我们找到了梯度向量的根。我们可以使用牛顿法来做这件事!回想一下牛顿法的更新步骤:

我们可以用梯度来代替 f(x^n),这样就得到了:

那么上面的「?」指的是什么呢?直觉告诉我们,我们需要对梯度向量求导,就像我们之前对 f(x^n) 所做的微分一样。

开始进入海森矩阵(The Hessian)。

数学:海森矩阵

从关于多元微分的预备知识中可以得知,我们应该知道去求解一个函数的「二阶」导数,我们针对每一个参数再给每个一阶偏导数求偏导数。如果我们有 n 个参数,那么我们就会有 n^2 个二阶偏导数。

结果就是,海森矩阵是一个 n*n 的二阶偏导方阵。

在我们的情况中,一共有两个参数 (θ1,θ2),因此我们的海森矩阵形式如下:

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

数学:将所有的放在一起

将海森矩阵替换在牛顿法的更新步骤中,我们得到了如下所示的内容:

注意:我们取了海森矩阵的逆矩阵,而不是它的倒数,因为它是一个矩阵。

为了简单起见,这篇文章省略了对梯度和海森矩阵进行求导的实际过程。要理解后面的求导过程可以参考下面的资源:

1. 我们的对数似然函数的梯度的导数(Derivation of the Gradient of our Log-Likelihood), 吴恩达课程笔记 17-18 页

2. 海森矩阵的求解其实相当直接,如果你曾经计算过梯度,你会在吴恩达课件笔记中「对 sigmoid 函数求导 g′(z)」那一部分看到。

ℓ(θ) 的梯度是:

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

ℓ(θ) 的海森矩阵是:

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

其中:

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

实现牛顿法

我们从定义假设函数开始,它就是 sigmoid 函数:

def sigmoid(x, Θ_1, Θ_2): z = (Θ_1*x + Θ_2).astype("float_") return 1.0 / (1.0 + np.exp(-z))

然后定义我们的对数似然函数 ℓ(θ):

def log_likelihood(x, y, Θ_1, Θ_2): sigmoid_probs = sigmoid(x, Θ_1, Θ_2) return np.sum(y * np.log(sigmoid_probs) + (1 - y) * np.log(1 - sigmoid_probs))

最后,我们实现对对数似然函数的梯度求解和海森矩阵求解:

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