目录
- 逻辑回归基础
- 1. 概述
- 2.优点与缺点
- 逻辑回归的理论解释
- 1.问题背景
- 2. S i g m o i d Sigmoid Sigmoid函数
- 3.决策边界
- 4.损失函数
- 正则化
- 1.L1正则化
- 2.L2正则化
逻辑回归基础
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