逻辑回归
1.算法总体 逻辑回归通过将线性回归的输出映射到概率空间来预测事件发生给概率: $$ P(y=1|x;\theta)=h_{\theta}(x)=\frac{1}{1+e^{-\theta^Tx}} $$ 该公式表示:在模型参数为$\theta$,输入特征值为$x$的情况下,分类标签$y=1$的概率为$h_{\theta}(x)$。 该模型一次推理的伪代码大致如下: 算法:LogisticForward 输入:特征值$x$ 参数:向量$\theta$ 输出:数据为正类别的概率值$P(y=1|x;\theta)$ 计算线性组合$z = \theta^T x$ 应用Sigmoid函数:$p=\sigma(z)=1/(1+e^{-z})$ 分类决策:若$p\leq 0.5$,则$\hat{y}=1$,否则$\hat{y}=0$ 返回$\hat{y}$ 该模型通过梯度下降的训练过程伪代码大致如下: 算法:LogisticTrainWithGD 输入:训练集$(X, y)$,其中$X\in \mathbb{R}^{m\times n}$ 超参数:学习率$\alpha$,迭代次数$T$ 输出:参数向量$\theta$ 初始化参数$\theta$ # 初始化可以全0,也可以正态分布随机初始化等方法 对于$t=1$到$T$: 1. 初始化梯度$g\leftarrow 0$ 2. 对于$i=1$到$m$: 1. $p_i \leftarrow$ LogisticForward($x_i$, $\theta$) 2. $g \leftarrow g+(p_i-y_i)\cdot x_i$ # 计算新梯度 3. 更新参数:$\theta \leftarrow \theta - \frac{\alpha}{m}\cdot g$ # 梯度下降更新,详见目标函数部分 返回$\theta$ 要使用其他方法更新,用对应的公式替代计算梯度和更新参数的两个步骤即可 实践过程中通常表现为直接修改对应物理地址的值,而非返回值 2.目标函数 2.1 目标函数公式 给定训练数据$(x_i, y_i)$,目标函数为: $$ J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y_ilog(h_{\theta}(x_i))+(1-y_i)log(1-h_{\theta}(x_i))] $$ 其中$h_{\theta}$是Sigmoid函数: ...