文章归档

置顶文章

Web安全

Web安全基础

PHP相关

Writeups

靶机系列

HackTheBox

VulnHub

代码审计

PHP代码审计

流量分析

机器学习

基础学习

Python

Python编程

Java

Java编程

算法

Leetcode

随笔

经验

技术

 2020-04-09   1.5k

这一篇主要总结逻辑回归相关知识点

Machine Learning Week3

0x01 假设表示(Hypothesis Representation)

逻辑回归算法的假设函数 hθ(x) 由以下表达式组成:
$$
\begin{align*}& h_\theta (x) = g ( \theta^T x ) \newline \newline& z = \theta^T x \newline& g(z) = \dfrac{1}{1 + e^{-z}}\end{align*}
$$
其中g(z) 称为逻辑函数(Logistic Function),又称为 Sigmoid Function

该函数的图像为:

hθ(x) 的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性,即hθ(x) = P(y=0|x;θ) ,例如,如果对于给定的x,通过已经确定的参数计算得出hθ(x) = 0.7,则表示有70%的几率y为正向类,相应地为负向类的几率为1-0.7=0.3。

0x02 判定边界(Decision Boundary)

在逻辑回归中,我们预测:

当 hθ(x) >= 0.5时,预测y=1;

当 hθ(x) < 0.5时,预测y=0;

根据S形函数图像,当

z = 0时,g(z) = 0.5;

z > 0时,g(z) > 0.5;

z < 0时,g(z) < 0.5;

又z = θTx,即 θTx >= 0时,预测y=1, θTx < 0时,预测y=0

现在假设我们有一个模型:

并且参数θ是向量[-3 1 1]。 则当-3 + x1 + x2 >= 0,即x1 + x2 >= 3时,模型将预测 y = 1 。 我们可以绘制直线x1 + x2 = 3,这条线便是我们模型的分界线,将预测为1的区域和预测为 0的区域分隔开。

也就是说,z = θTx在几何角度中就是判定边界的函数。决策边界只与参数 θ 有关。

0x03 代价函数(Cost Function)

公式表示:
$$
\begin{align*}& J(\theta) = \dfrac{1}{m} \sum_{i=1}^m \mathrm{Cost}(h_\theta(x{(i)}),y{(i)}) \newline & \mathrm{Cost}(h_\theta(x),y) = -\log(h_\theta(x)) ; & \text{if y = 1} \newline & \mathrm{Cost}(h_\theta(x),y) = -\log(1-h_\theta(x)) ; & \text{if y = 0}\end{align*}
$$
几何意义:

这样构建的Cost(hθ(x), y)函数的特点是:当实际的y =1且 hθ(x) 也为1 时误差为 0,当 y = 1但hθ(x)不为1时误差随着hθ(x)变小而变大;当实际的y = 0且hθ(x)也为 0 时代价为 0,当y = 0但hθ(x)不为0时,误差随着hθ(x)的变大而变大。

进一步整理一下:
$$
\mathrm{Cost}(h_\theta(x),y) = - y ; \log(h_\theta(x)) - (1 - y) \log(1 - h_\theta(x))
$$
带入:
$$
J(\theta) = \dfrac{1}{m} \sum_{i=1}^m - y^{(i)} ; \log(h_\theta(x^{(i)})) - (1 - y^{(i)}) \log(1 - h_\theta(x^{(i)}))
$$
向量化:
$$
\begin{align*} & h = g(X\theta)\newline & J(\theta) = \frac{1}{m} \cdot \left(-y{T}\log(h)-(1-y){T}\log(1-h)\right) \end{align*}
$$

0x04 梯度下降(Gradient Descent)

梯度下降的一般形式:
$$
\begin{align*}& Repeat ; \lbrace \newline & ; \theta_j := \theta_j - \alpha \dfrac{\partial}{\partial \theta_j}J(\theta) \newline & \rbrace\end{align*}
$$
代入J(θ):
$$
\begin{align*} & Repeat ; \lbrace \newline & ; \theta_j := \theta_j - \frac{\alpha}{m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)} \newline & \rbrace \end{align*}
$$
可以发现,逻辑回归的梯度下降和线性回归的梯度下降在形式上是完全相同的,但是假设函数hθ(x)发生了变化。

向量化:
$$
\theta := \theta - \frac{\alpha}{m}X^T(g(X\theta) - \vec y)
$$

0x05 多分类(Muti-classification)

处理多分类问题的本质就是转化为二分类问题,现在假设有三个类别:

用三角形表示y = 1 ,方框表示y = 2,叉叉表示y = 3 。我们下面要做的就是使用一个训练集,将其分成3个二元分类问题

为了能实现这样的转变,我们将多个类中的一个类标记为正向类(y = 1),然后将其他所有类都标记为负向类,这个模型记作hθ(1) (x)。接着,类似地第我们选择另一个类标记为正向类(y = 2),再将其它类都标记为负向类,将这个模型记作 hθ(2) (x),依此类推。最后,为了做出预测,我们给出输入一个新的x值,用这个做预测。我们要做的就是在我们三个分类器里面输入x ,然后我们选择一个让 hθ(i) (x)最大的i,即:
$$
\arg\max_\theta h_{\theta}^{(i)}
$$

0x06 正则化(Regularization)

所谓正则化,就是为了防止出现过拟合而对某些θ参数引入惩罚因子,这样做的话,我们在尝试最小化代价时也需要将这个惩罚纳入考虑中,并最终导致选择较小一些的θ。

比如回归问题中如果我们的假设函数是:
$$
h_\theta (x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2^2 + \theta_3 x_3^3 + \theta_4 x_4^4
$$
我们想对θ3和θ4设置一点惩罚,修改后的代价函数为:
$$
min_\theta \frac{1}{2m}[\sum_{i=1}{m}(h_\theta(x{(i)})-y{(i)})2 + 1000\theta_3^2 + 1000\theta_4^2]
$$
假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设:
$$
min_\theta \frac{1}{2m}[\sum_{i=1}{m}(h_\theta(x{(i)})-y{(i)})2 + \lambda\sum_{i=1}m\theta_j2]
$$
其中λ又称为正则化参数(Regularization Parameter)。

正则化线性回归

$$
\begin{align*} & \text{Repeat}\ \lbrace \newline & \ \ \ \ \theta_0 := \theta_0 - \alpha\ \frac{1}{m}\ \sum_{i=1}^m (h_\theta(x^{(i)}) - y{(i)})x_0{(i)} \newline & \ \ \ \ \theta_j := \theta_j - \alpha\ \left[ \left( \frac{1}{m}\ \sum_{i=1}^m (h_\theta(x^{(i)}) - y{(i)})x_j{(i)} \right) + \frac{\lambda}{m}\theta_j \right] &\ \ \ \ \ \ \ \ \ \ j \in \lbrace 1,2…n\rbrace\newline & \rbrace \end{align*}
$$

正规方程求解正则化线性回归
$$
\begin{align*}& \theta = \left( X^TX + \lambda \cdot L \right)^{-1} X^Ty \newline& \text{where}\ \ L = \begin{bmatrix} 0 & & & & \newline & 1 & & & \newline & & 1 & & \newline & & & \ddots & \newline & & & & 1 \newline\end{bmatrix}\end{align*}
$$

正则化逻辑回归

同样对于逻辑回归,我们也给代价函数增加一个正则化的表达式,得到代价函数:
$$
J(\theta) = -\dfrac{1}{m} \sum_{i=1}^m [y^{(i)} ; \log(h_\theta(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_\theta(x^{(i)}))] + \frac{\lambda}{2m}\sum_{j=1}^n \theta_j^2
$$

Copyright © ca01h 2019-2020 | 本站总访问量