一文读懂逻辑回归

逻辑回归虽然带有回归字样,但是逻辑回归属于分类算法。逻辑回归可以进行多分类操作,但由逻辑回归算法本身性质决定其更常用于二分类。

逻辑回归概念:

首先我们给出逻辑回归的公式:

                                                                     Y(x)=\frac{1}{1+e^{-(\theta x+b)}}

其中,Y为决策值,x为特征值,e为自然对数,w为特征值的权值,b为偏置。\theta x为两者的内积。Y(x)的图形如下:

                                一文读懂逻辑回归_第1张图片

该函数是一条S形的曲线,并且曲线在中心点附近的增长速度较快,在两段的增长速度较慢。w值越大,曲线中心的增长速度越快。从图上可知,Y的值域为(0,1),那么就可以将决策函数值大于等于0.5的具有对应x属性的对象归为正样本,决策函数值小于0.5的具有对应x属性的对象归为负样本。这样就可以对样本 数据进行二分类。

逻辑回归推导:

逻辑回归是一种简单,常见的二分类模型,通过输入未知类别对象的属性特征序列得到对象所处的类别。由于Y(x)是一个概率分布函数,因此对于二分类而言,离中心点的距离越远,其属于某一类的可能性就越大。

对于常见二分类,逻辑回归通过一个区间分布进行划分,即如果Y值大于等于0.5,则属于正样本,如果Y值小于0.5,则属于负样本,这样就可以得到逻辑回归模型,判别函数如下:

                                                                          F(x)=\left\{\begin{matrix} 1 &Y(x)\geq 0.5 \\ 0& Y(x)< 0.5 \end{matrix}\right.

在模型参数w与b没有确定的情况下,模型是无法工作的,因此接下来就是在实际应用期间最重要的是模型参数w和b的估计。

其代价函数为:

                                                                   cost(Y(x),y)=\left\{\begin{matrix} -logY(x) & y=1\\ -log(1-Y(x))& y=0 \end{matrix}\right.

给定y值为1时,代价函数曲线横坐标为决策函数Y(x)的值越接近1,则代价越小,反之越大。当决策函数Y(x)的值为1时,代价为0。类似的,当给定y值为0时有同样的性质。

如果将所有m个样本的代价累加并平均,就可以得到最终的代价函数:

                                                                       J(\theta )=\frac{1}{m}\sum_{m}^{i=1}cos(Y(x),y)

由于y的取值为0或1,结合上面两个公式可以得到:

                                                         J(\theta )=-\frac{1}{m}\sum_{i=1}^{m}(y^ilog(Y(x^i))+(1-y^i)log(1-Y(x^i)))

这样就得到了样本的总的代价函数,代价越小表明所得到模型更符合真实模型,当J(\theta )最小的时候,就得到了所求参数\theta

关于损失函数的求解,可以通过梯度下降法求解,先设置一个学习率\alpha,从1到n,更新\theta _{j}

                                                                       \theta _{j}:\theta _{j}-\alpha \frac{\partial }{\partial \theta _{j}}J(\theta )                                                 

其中:

                                                             \frac{\partial }{\partial \theta _{j}}J(\theta )=\frac{1}{m}\sum_{m}^{i=1}(Y(x^{i})-y^{i})x_{i}^{j}

重复更新步骤,直到代价函数的值收敛为止。对于学习率的设定,如果过小,则可能会迭代过多的次数而导致整个过程变得很慢;如果过大,则可能导致错过最佳收敛点。所以,在计算过程中要选择合适的学习率。

逻辑回归案例:

以下为研究一个学生优秀还是差等的问题,已知训练数据的学生基本特征信息如下:

学生 平均每天学习时长 平均每天问问题数 平均考试分数 评级
a 10 3 90
b 9 1 70
c 4 0 55
d 6 1 80

需要分类学生数据:

学生 平均每天学习时长 平均每天问问题数 平均考试分数 评级
e 8 2 85  
f 3 1 60  

 

步骤一:

整理数据,转化为数学模型

将分数归一化,除以10,将评级优表示为1,评级差表示为0,则转化为:

                                                       \begin{bmatrix} 10 &3& 9& 1\\ 9& 1& 7& 1\\ 4& 0 & 5.5 &0 \\ 6 & 1 & 80&1 \end{bmatrix}

步骤二:

假设Y(x)=\theta _{1}*x_{1}+\theta _{2}*x_{2}+\theta _{3}*x_{3}+\theta _{4},求出此时的损失函数,,同时初始值设置为(0.5,0.5,0.5,0.5),学习率为0.3,并且设置损失函数为0.1时,迭代停止截止。

步骤三:

第一次迭代的值为(-0.096,0.50008,-0.32,0.350858),不断迭代,直到损失函数小于0.1.

步骤四:

最终就能求出Y(x)的表达式,从而能够分类上面没分类的数据:

学生 平均每天学习时长 平均每天问问题数 平均考试分数 评级
e 8 2 85
f 3 1 60

 

你可能感兴趣的:(算法)