开门见山
基本印象:
逻辑回归的作用:做二分类、多分类的问题
逻辑回归类似于人类的一个神经元
多个逻辑回归的叠加就是传说中的神经网络
一般步骤:
- 收集数据的形式没有要求
- 数据预处理:将文本变量转化为虚拟变量,将空值剔除或特殊处理
- 模型搭建:对数据进行分析,如果自变量是二维变量,散点图可以查看是该组数据是线性分类问题还是非线性分类问题
决策边界(Decision Boundary)
决策边界,也成为决策面,用于N维空间,将不同类别样本分开的平面或曲面。(其实类似与SVM的分隔超平面)-
如果自变量是一维的,其实就是最简单的逻辑函数sigmoid
横轴代表自变量,纵轴代表因变量 -
如果自变量是二维的,那还可以实现可视化帮助我们。
红色区域与蓝色区域分别是二分类的结果,x1,x2分别是自变量
比如说,
所以我们发现决策边界是可以通过一条直线进行分隔开的,我们把决策函数写成线性方程。类似\theta_0+\theta_1*x_1+\theta_2*x_2=0再比如说,
红色marker和蓝色marker的分布
在这里我们发现分类并非线性直线可以解决,所以引入Polynomial,把决策函数写为\theta_0+\theta_1*x_1+\theta_2*x_2 +\theta_3*x_1^2+\theta_4*x_2^2=0
当然可以更复杂,比如把最高次幂调整为三次,四次等等。但是代价就是计算量也会增加。这也是我们需要trade-off的东西。 -
多维问题的求解思路:
对J(\theta)求偏导,建立\theta矩阵,建立x的矩阵。利用梯度下降法解决最优化问题,求解\theta。
-
- 模型检验
涉及到两个概念:
1). 准确率(Accuracy),精确率(Precision),召回率(Recall),F1值
准确率(Accuracy)的定义:分类器分类正确的样本数与总样本数之比。缺点:如果正负样本不平衡,这种计算方式失去有效性。
精确率(Precision)的定义:P=\frac{TP}{TP+FP}
召回率(Recall)的定义:R=\frac{TP}{TP+FN}
F1值:精确率和召回率的调和均值。\frac{2PR}{P+R}
F1值越大,模型预测能力越理想。
2). 利用正交验证法对数据的trainset进行K折交叉验证。将数据分为K份,取K-1作为训练数据,剩下的作为测试数据,重复K次,这样最终得到K个训练结果,计算正确率,然后取平均。python在这一部分有现成的包cross_val_score。可以直接设定K从而得到最终结果。
逻辑回归的理论推导
- cost function的确定
正常梯度回归中,J(\theta)=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2
h_\theta=g(\theta^Tx)
在这里我们可以发现,
when y==1, (h_\theta(x^{(i)})-y^{(i)})偏小,
when y==0,(h_\theta(x^{(i)})-y^{(i)})偏大。所以导致J(\theta)随着\theta有很多局部最优解。如下图,
Non-convex
如果按照梯度下降法强行解,得到的解只会大概率是局部最优解,而不是全局最优解。
因此,我们对J_\theta进行优化,我们引入log函数。
J(\theta)=\frac{1}{m}\sum_{i=1}^{m}Cost(h_\theta(x^{(i)},y^{(i)})
最后得到,
新的Cost函数:
Cost=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))
然后,新的J(\theta)=\frac{1}{m}\sum_{i=1}^{m}(ylog(h_\theta(x))+(1-y)log(1-h_\theta(x)))
对其求偏导,得,\frac{\partial{J(\theta)}}{\partial{\theta}}=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x)-y)x^i
推到过程如下:
然后,
\theta_j=\theta_j-\alpha\frac{\partial}{\partial{\theta_j}}J(\theta)
这就回归到之前写的梯度下降法当中,因为我们确保了我们的cost function是convex,因此得到的最优解便是全局最优解。
网友评论