目录
逻辑回归基础
1. 概述
逻辑回归是机器学习的一种分类算法,主要运用于二分类问题。将线性回归的结果,映射到不同的类别之中。算法简单而高效,实际广泛运用。
简单来说:逻辑回归 = 线性回归 + S i g m o i d Sigmoid Sigmoid函数(分类函数)
2.优点与缺点
优点:
- 简单而且容易实现。逻辑回归的模型相对简单,只需要对输入特征进行线性组合,然后通过 S i g m o i d Sigmoid Sigmoid函数进行分类预测。
- 计算效率高。逻辑回归的计算量相对较小,可以处理大规模的数据集。
- 可解释性强。逻辑回归的结果可以解释为某个事件发生的概率,比较直观易懂。
- 可以在线学习。逻辑回归可以通过梯度下降算法进行在线学习,适用于增量学习和实时预测。
缺点:
- 对特征的依赖性强。逻辑回归对特征之间的依赖性较为敏感,如果特征之间存在较强的相关性,会导致模型效果较差。
- 对异常值较为敏感。逻辑回归对异常值较为敏感,可能会影响模型的预测结果。
- 需要大量的特征工程。为了提高逻辑回归的性能,通常需要进行大量的特征工程,包括特征选择、特征变换等。
- 无法处理非线性问题。逻辑回归是一种线性模型,无法处理非线性问题,需要通过添加多项式特征或者引入核函数来解决非线性问题。
逻辑回归的理论解释
1.问题背景
现在你有一份数据,里面有病人的肿瘤大小(tumor size)和是否是恶性肿瘤的判断(malignant?),把这份数据可视化,用1来表示恶性肿瘤,0表示良性,这样你就获得了下面这张图。
根据上面的图你可以简单的总结一个函数,如红线所示,来帮助你判断肿瘤是否恶性,现在又来了一个病人,他的肿瘤大小用紫色点表示,根据我们总结的函数,判断出有70%的概率肿瘤是恶性,但是你不能直接输出0.7,只能判断是或否,因此你会输出1(yes),这一条你总结出来的函数就是 S i g m o i d Sigmoid Sigmoid函数
2. S i g m o i d Sigmoid Sigmoid函数
也称为逻辑函数,具体函数定义如下
g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+e−z1
x坐标是z的值,范围是负无穷到正无穷
值域是(0,1)
图像如下
那么 z z z的值是由谁决定的?还记得文章一开头讲的:逻辑回归 = 线性回归 + S i g m o i d Sigmoid Sigmoid函数(分类函数), z z z的值是从线性回归中得来的
z = w T x + b z = w^Tx+b z=wTx+b
逻辑回归函数表达
f w , b ( x ) = g ( z ) = g ( w T x + b ) = 1 1 + e − ( w T x + b ) f_{w,b}(x) = g(z) = g(w^Tx+b) = \frac{1}{1+e^{-(w^Tx+b)}} fw,b(x)=g(z)=g(wTx+b)=1+e−(wTx+b)1
3.决策边界
函数输出0还是1,取决于 f w , b ( x ) ≥ 0.5 f_{w,b}(x) \ge 0.5 fw,b(x)≥0.5,若成立,那么 y ^ = 1 \hat{y} =1 y^=1,反之 y ^ = 0 \hat{y}=0 y^=0
下图是一组数据集,蓝色圆圈 y ^ \hat{y} y^输出为0,红色交叉 y ^ \hat{y} y^输出为1,经过逻辑回归可以获得其回归函数
根据 S i g m o i d Sigmoid Sigmoid函数, z = 0 z=0 z=0点就是两个类别的分隔点
- z = x 1 + x 2 − 3 = 0 z = x_1 +x_2 -3 = 0 z=x1+x2−3=0
- x 1 + x 2 = 3 x_1 +x_2 = 3 x1+x2=3
那么得到的这条线,就叫做决策边界,只要点出现在决策边界下方,就输出0,出现在决策边界上方,就输出1
当然,决策边界也不一定是直线,也可以是曲线
- z = x 1 2 + x 2 2 − 1 z = x_1^2 +x_2^2 -1 z=x12+x22−1
- x 1 2 + x 2 2 = 1 x_1^2 +x_2^2 = 1 x12+x22=1
4.损失函数
L ( f w , b ( x ( i ) ) , y ( i ) ) = { − l o g ( f w , b ( x ( i ) ) ) , if y ( i ) = 1 − l o g ( 1 − f w , b ( x ( i ) ) ) , if y ( i ) = 0 L(f_{w,b}(x^{(i)}),y^{(i)})= \begin{cases} -log(f_{w,b}(x^{(i)})), & \text {if y\^{(i)} = 1} \\\\ -log(1-f_{w,b}(x^{(i)})), & \text{if y\^{(i)}=0} \end{cases} L(fw,b(x(i)),y(i))=⎩ ⎨ ⎧−log(fw,b(x(i))),−log(1−fw,b(x(i))),if y(i)=1if y(i)=0
or
L ( f w , b ( x ( i ) ) , y ( i ) ) = − y ( i ) l o g ( f w , b ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − f w , b ( x ( i ) ) ) L(f_{w,b}(x^{(i)}),y^{(i)}) = -y^{(i)}log(f_{w,b}(x^{(i)}))+(1-y^{(i)})log(1-f_{w,b}(x^{(i)})) L(fw,b(x(i)),y(i))=−y(i)log(fw,b(x(i)))+(1−y(i))log(1−fw,b(x(i)))
以上两条式子完全等价
那么代价函数就是每一个点的损失累加起来
J ( w , b ) = 1 m ∑ i = 1 m L ( f w , b ( x ( i ) ) , y ( i ) ) J(w,b) = \frac{1}{m}\sum_{i=1}^m L(f_{w,b}(x^{(i)}),y^{(i)}) J(w,b)=m1i=1∑mL(fw,b(x(i)),y(i))
使用梯度下降的方法,找到代价函数的1阶导最小值即可,有关梯度下降的介绍可以看线性回归中的介绍
【机器学习】-- 线性回归算法
正则化
为了防止模型出现过拟合的问题,出现原本数据集没有的特征,可以采取正则化的方法,来降低高次方项的系数
正则化就是在计算代价函数时,增加惩罚项,来逼迫模型减小高次方项的系数
1.L1正则化
J ( w , b ) = 1 m ∑ i = 1 m L ( f w , b ( x ( i ) ) , y ( i ) ) + ∑ λ m ∣ w i ∣ J(w,b) = \frac{1}{m}\sum_{i=1}^m L(f_{w,b}(x^{(i)}),y^{(i)}) +\sum\frac{\lambda}{m}|w_i| J(w,b)=m1i=1∑mL(fw,b(x(i)),y(i))+∑mλ∣wi∣
λ \lambda λ表示惩罚力度,过高可能会导致欠拟合,过低可能会导致过拟合,因此通常要搭配网格搜索方法来寻找最佳的惩罚力度
2.L2正则化
J ( w , b ) = 1 m ∑ i = 1 m L ( f w , b ( x ( i ) ) , y ( i ) ) + ∑ λ 2 m w i 2 J(w,b) = \frac{1}{m}\sum_{i=1}^m L(f_{w,b}(x^{(i)}),y^{(i)}) +\sum\frac{\lambda}{2m}w_i^2 J(w,b)=m1i=1∑mL(fw,b(x(i)),y(i))+∑2mλwi2