引言
分类问题,如
1、邮件是否是垃圾邮件
2、诊断是否患有某病
3、商务网站检测用户使用的信用卡是否异常
这些问题,都有一个特征,就是最终的结果 y ∈ { 0 , 1 } y\in\{0,1\} y∈{0,1}
- 我们可以考虑使用线性回归来进行拟合,但是最终注意,然后设置一个阀值,如 h θ ( x ) > = 0.5 h_\theta(x)>=0.5 hθ(x)>=0.5时我们认为为结果1, h θ ( x ) < 0.5 h_\theta(x)<0.5 hθ(x)<0.5时认为结果为0
但是这样会有一些问题:
1、单个的点会导致阀值点映射的特征变量阀值影响比较大
2、线性回归的范围太大了,>>1 或者<<0
- 所以引入logistic回归来解决这个分类问题
所以logistic回归是一种分类算法
算法的定义
h
θ
(
x
)
=
1
1
+
e
θ
T
X
h_\theta(x) = \frac{1}{1+e^{\theta^TX}}
hθ(x)=1+eθTX1
函数图像:
我们可以认为假设函数时y=1的概率估计函数
h
θ
(
x
)
=
P
(
y
=
1
∣
x
,
θ
)
h_\theta(x)=P(y=1|x,\theta)
hθ(x)=P(y=1∣x,θ)
决策边界
对于
h
θ
(
x
)
h_\theta(x)
hθ(x)函数观察可知,
θ
T
X
>
=
0
=
>
y
=
1
\theta^TX>=0=>y=1
θTX>=0=>y=1
θ
T
X
<
0
=
>
y
=
0
\theta^TX<0=>y=0
θTX<0=>y=0
几个例子
其实对于单个变量,是可以考虑多项式情况的
代价函数
如何仿照之前的线性回归:
但是会出现非凸函数的情况,例如为波浪状,有多个极小值点,不好进行梯度下降
所以logistic 回归的损失函数为
以 y = 1时进行分析
1、
h
θ
(
x
)
−
>
0
h_\theta(x)->0
hθ(x)−>0时,损失函数趋紧与无穷大,使用非常大的代价来进行惩罚
2、
h
θ
(
x
)
−
>
1
h_\theta(x)->1
hθ(x)−>1时,损失函数为0,即损失为0
- 利用简化后的代价函数+梯度下降完成对整个训练集的学习
=>
梯度下降(额,关于为什么对单个
θ
\theta
θ求导结果是这个,mark一下,有空推导下)
同时注意,特征缩放也是有意义的~
优化算法
会有一些写好的比梯度下降更加好的算法,优点是
1、不需要设置学习速率,会自动适应
2、收敛的比梯度下降更快
缺点:
更复杂,一般是数值计算的专家写的
多类别分类
如,邮件有多个标签,如何分类,例如如下图
分解成三个分类问题,所以我们可以求出三个概率值,然后找最大的对应的标签~