理论和代码-逻辑回归-理论

统一后续书写表示,下标表示样本特征向量的维度,上标表示样本的序号,例如$x_{i}$表示x的第i维,$x^{j}$表示第j个样本,$x_{i}^{j}$表示第j个样本的第i维

步骤1:模型假设,如何选择模型

$f(x)=\frac{1}{1+e^{-(\Sigma_{i}^{m}w_{i}x_{i} + b)}}$,对于二分类问题,如果$f(x)>0.5$,属于类1,否则属于类2;可以用sigmoid函数表示,$z=\Sigma_{i}^{m}w_{i}x_{i}+b, p(c|x)=f(x)=\sigma(z)=\frac{1}{1+e^{-z}}$, 其中$m$是每个样本特征向量的维度

步骤2:模型评估,如何判断哪个模型好坏

一般是通过损失函数,这里也是,将训练数据转换为$(x^{n}, \widehat{y^{n}}), \widehat{y^{n}}: 1 for class1, 0 for class2$,损失函数为:
$L(w, b)=\Sigma_{i}^{n}(-[\widehat{y^{i}}ln(f(x^{i})) + (1-\widehat{y^{i}})ln(1-f(x^{i}))])$,其中$C(f(x^{i}), \widehat{y^{i}}) = -[\widehat{y^{i}}ln(f(x^{i})) + (1-\widehat{y^{i}})ln(1-f(x^{i}))]$为交叉熵

步骤3:模型优化,如何筛选出最优的模型

梯度下降是方法之一,这里用这个
$\frac{\partial{L(w,b)}}{\partial{w_{i}}}=\Sigma_{n}-(\widehat{y^{n}}-f(x^{n})).(x_{i}^{n})$
$\frac{\partial{L(w,b)}}{\partial{b}}=\Sigma_{n}-(\widehat{y^{n}}-f(x^{n}))$
$w_{i}\leftarrow w_{i}-\eta.\frac{\partial{L(w,b)}}{\partial{w_{i}}}$
$b\leftarrow b-\eta.\frac{\partial{L(w,b)}}{\partial{b}}$

Tips

逻辑回归用交叉熵作为损失函数,而线性回归用平方差作为损失函数,对于逻辑回归,$\widehat{y}$只为0或1,可以看下平方差损失函数和梯度,
$L(w, b)=\frac{1}{2}\Sigma (f(x)-\widehat{y})^{2}$
$\frac{\partial{(f(x)-\widehat{y})^2}}{\partial{w_{i}}}=2(f(x)-\widehat{y})f(x)(1-f(x))x_{i}$
可以看出,假设$\widehat{y}=1$时,使用交叉熵,距离目标越远,更新的越快,越近更新的越慢,而对于平方差,目标很远时$(\widehat{y}=1, f(x)~0)$,更新很慢

坚持原创技术分享,您的支持将鼓励我继续创作!