从零开始学习机器学习(三)逻辑回归 Logistic Regression

上一部分,我介绍了感知机Perceptron,从零开始学习机器学习(二)感知器 Perceptron_UnicornH!XD的博客-CSDN博客接下来,我将介绍逻辑回归。本篇论文以公式为主,公式推导居多。

逻辑回归 Logistic Regression

逻辑回归虽然 称为回归,但也是一个分类模型,而且常用于二分类任务。

逻辑回归假设输出是通过以下算法从输入生成的: 给定输入 x 以及参数(w,x_0)

(1)计算z = w^tx + w_0

(2)应用逻辑函数z 得到 h = Logistic(z)

(3)在0和1之间均匀的生成一个随机数, r \in (0,1)

(4) \left\{\begin{matrix} &If \, \, \, \, r<h , y=1 \\ & If \,\, \, \, r>h , y=0 \end{matrix}\right.

由于最终的输出取决于第三步中生成的数,因此这是一个概率算法。

关于逻辑回归的分布函数, 

                                                h = \frac{1}{1+exp(-z)},\, \, \, \, \left\{\begin{matrix} & z \rightarrow \infty: h\rightarrow 1 \\ & \, \, \, z \rightarrow -\infty: h\rightarrow 0 \\ & z =0: h=0.5 & \end{matrix}\right.

  如图是一个逻辑回归函数,训练这样一个模型,我们需要:

(1)数据集 D = \{(x_1,y_1),(x_2,y_2),...(x_n, y_n)\} 输入是x,输出是y

(2)一个可以从数据集D更新回归参数w的算法。通产使用最大似然估计 Maximum Likelihood Estimation 来更新参数。最大似然函数是给定一个基本概率模型 p_\theta (d) 和一个特定参数集 \theta的数据集发生的概率。

给定回归参数 w可以将似然函数定义为,:

                        ​​​​​​​        ​​​​​​​        ​​​​​​​ L(w|D) = p_w(D) = p(y_1,y_2,y_3,...y_n|x_1,x_2,....x_n,w)

可能性只是参数 w 的函数,因为输入是固定的,因为我们控制了它们,而且在训练数据中我们已经观察到了输出,因此关于训练数据唯一未知的就是 w 是如何生成这些数据的。

最大似然估计(Maximum likelihood estimator  MLE) 可以定义为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \theta' = arg\max_\theta L(\theta|D)

假设我们的数据是独立且分布的,即数据中每一个输出y_i 仅依赖于与之匹配的输入 x_i 

        ​​​​​​​        ​​​​​​​        ​​​​​​​                ​​​​​​​ \\L(w|D) = p(y_1,y_2,....y_n|x_1,x_2,...x_n, w) \\= p(y_1|x_1,w) * p(y_2|x_2,w)*....*p(y_n|x_n,w)\\ = \prod_{i=1}^{n}p(y_i|x_i,w)

通常,也使用对数:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​  log L(x|D) = \sum_{n}^{i=1} p(y_i|x_i,w)

其中

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        p(y_i|x_i,w) = h(x_i,w)^{y_i} (1-h(x_i,w))^{1-y_i}

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        h(x_i,w) = Logistic(w^t x_0 + w_0)

这种概率分布的正式名称是伯努利概率分布。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​\left\{\begin{matrix} y=1 ,& h^1_i\\ y=-1,& 1-h_i \end{matrix}\right.

使用log函数:
        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        log L(w|D) = \sum_{i:y=0}log(1-h_i) + \sum_{i:y=1}log(h_i)​​​​​​​

MLE中参数w,  y=0 时,\sum_{i:y=0}log(1-h_i) 以及 y=1时 \sum_{i:y=1}log(h_i) ,当我们试图找到MLE时,我们要做的就是设置 h,它同时依赖于 x 和 w,这样我们可以最大化看到 y = 0和 y = 1训练样本的概率。

损失函数 交叉熵损失(cross-entropy loss)

        ​​​​​​​        ​​​​​​​   l(w) = -\frac{1}{n}log(w|D) = -\frac{1}{n} \sum_{i=1}^{n}[y_i\, log \, h(w,x_i) +(1-y_y)\, (1-h(w,x_i))]

对于SGD,我们选取一个样本 (x_i,y_i)来估计梯度        ​​​​​​​            

                  \frac{\delta l(w)}{\delta w_j} = -\frac{1}{n}log(w|D)= -\frac{1}{n}\sum_{i=1}^{n}[y_i \frac{1}{h(w_i,x_i)} - (1-y_i) \frac{1}{(1-h(w,x_i))} ] \frac{\delta h(w,x_i)}{\delta w_i}

这里将使用链式法则(Chain Rule):

        ​​​​​​​        ​​​​​​​        \frac{\delta h(w,x_i)}{\delta w_j} = \frac{\delta}{w_j}[\frac {1}{1+exp(-[w^Tx_i + w_0])}] \\=\frac{exp(-[w^Tx_i + w_0])}{[1+exp(-[w^Tx_i + w_0])]^2}x_i^j\\ =h(w,x_i)(1-(w,x_i))x_i^j

 这里有一个常用的求导公式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        \frac{\delta}{\delta x}(\frac{1}{1+exp(x)}) = \frac{1}{[1+exp(x)]^2}e^x

由此,我们可以将原公式SGD化为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        \frac{\delta l(w)}{\delta w_j} = -[y_i - h(w,x_i)]x_i^j

常规的SGD参数更新为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        w_j \leftarrow w_j - \lambda \frac{\delta{l(w)}}{\delta w_j}

即:        ​​​​​​​        ​​​​​​​        w_j \leftarrow w_j + \lambda [y_i - h(w,x_i)]x_i^j

因此,y_i - h(w,x_i) 是我们的预测与实际产出之间的差值。

假设y_i=1, 1-h(w,x_i) \approx 1,y_i - h(w,x_i) \approx 0 没有更新

假设y_i=0, 1-h(w,x_i) \approx 1,y_i - h(w,x_i) \approx 1 沿着x_i 的方向更新

线性决策边界(Linear Decision Boundary)

        ​​​​​​​        ​​​​​​​        ​​​​​​​   p(y=1|x,w) = h(x,w) = \frac{1}{1+exp[w^Tx + w_0]}

        ​​​​​​​        ​​​​​​​          d = \frac{1}{1+exp[w^Tx + w_0]} \Rightarrow w^Tx+w_0 = log(\frac {d}{1-d})

给定d, 决策边界与 x 的关系是线性的。

假设有两个输入 w_1,w_2, 则:

        ​​​​​​​        ​​​​​​​        \\w_1x_1+w_2x_2+w_0 = log(\frac {1}{1-d})\\ x_2 == \frac{1}{w_2} [log(\frac {1}{1-d})-w_o-w_1x_1]

如图,蓝色是估计的边界,黑色是实际边界。 

总结:

在这片文章中,我介绍了

(1)逻辑回归模型

(2)最大似然估计 MLE

(3)交叉熵损失 cross-entropy loss

下一章将介绍支持向量机SVM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值