文章目录
逻辑回归用来解决分类问题,例如判断邮件是否为垃圾邮件,某笔在线交易是否涉嫌欺诈;肿瘤为恶性还是良性等二分类问题及其他多分类问题。
为何不将线性回归应用于分类问题中
多数时候分类结果不理想
以判断肿瘤为恶性还是良性的分类问题为例,训练集样本如下图所示,用直线
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
h_\theta(x)=\theta_0+\theta_1x_1
hθ(x)=θ0+θ1x1对数据进行拟合,如下图品红色直线所示。我们做以下假设:当预测值大于等于0.5时,正类,恶性;当预测值小于0.5时,负类,良性。在当前情况下,似乎线性回归也取得了不错的分类效果。
现在,我们的训练集中新增了一个训练样本,我们仍然用直线进行拟合,如下图蓝色直线所示。沿用上述预测值大于等于0.5时,正类,恶性;当预测值小于0.5时,负类,良性的假设,此时两个负类样本被错分到正类,分类效果不理想。
预测值连续,实际值离散
逻辑回归假设函数
逻辑回归假设函数是在线性回归假设函数外套上一个sigmoid函数,sigmoid函数又被称为logistic函数,能将任意实数值映射到
(
0
,
1
)
(0,1)
(0,1)区间内。
假设函数输出值
h
θ
(
x
)
h_\theta(x)
hθ(x)的解释是:对于一个输入
x
,
y
=
1
x,y=1
x,y=1的概率估计为
h
θ
(
x
)
h_\theta(x)
hθ(x)。
对肿瘤问题,可以解释为:对于一个特征为
x
x
x的患者,其患恶性肿瘤的概率为
h
θ
(
x
)
h_\theta(x)
hθ(x)。
决策边界–正负类概率相同时
逻辑回归假设函数
h
θ
(
x
)
=
g
(
θ
T
x
)
h_\theta(x)=g(\theta^Tx)
hθ(x)=g(θTx),其中
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1。根据函数
g
g
g 的图像可知,当
θ
T
x
>
0
\theta^Tx>0
θTx>0时,
h
θ
(
x
)
>
0.5
h_\theta(x)>0.5
hθ(x)>0.5,正类概率大于负类;
θ
T
x
<
0
\theta^Tx<0
θTx<0时,
h
θ
(
x
)
<
0.5
h_\theta(x)<0.5
hθ(x)<0.5,负类概率大于正类;
θ
T
x
=
0
\theta^Tx=0
θTx=0时,
h
θ
(
x
)
=
0.5
h_\theta(x)=0.5
hθ(x)=0.5,此时正类负类的概率相同。
θ
T
x
=
0
\theta^Tx=0
θTx=0作为区分正类负类的边界,被称为决策边界。
决策边界是假设函数的属性,取决于假设函数及其参数,与数据集无关。
示例1–线性边界
示例2–非线性边界
示例3–更复杂的边界
通过在特征中增加复杂的多项式(包括但不限于引入二次方、三次方项等),可以得到更复杂的决策边界。 h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 1 2 x 2 + θ 5 x 1 2 x 2 2 + θ 6 x 1 3 x 2 + . . . ) h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_1^2x_2+\theta_5x_1^2x_2^2+\theta_6x_1^3x_2+...) hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x12x2+θ5x12x22+θ6x13x2+...)
损失函数–关于 θ \theta θ的凸函数
问题描述
损失函数的选择
如果沿用线性回归损失函数(平方损失函数),由于逻辑回归假设函数非线性,损失函数将是关于参数
θ
\theta
θ的非凸函数,有许多局部极小值。
理想的损失函数应为关于
θ
\theta
θ的凸函数,方便我们使用梯度下降法找到全局最小值。
逻辑回归单个样本的损失函数如下:
当
y
=
1
y=1
y=1时,若预测值
h
θ
(
x
)
=
1
h_\theta(x)=1
hθ(x)=1,预测准确,损失为0;若预测值
h
θ
(
x
)
=
0
h_\theta(x)=0
hθ(x)=0,预测错误,损失为正无穷。
当
y
=
0
y=0
y=0时,若预测值
h
θ
(
x
)
=
0
h_\theta(x)=0
hθ(x)=0,预测准确,损失为0;若预测值
h
θ
(
x
)
=
1
h_\theta(x)=1
hθ(x)=1,预测错误,损失为正无穷。
简化损失函数及梯度下降
损失函数简化
逻辑回归损失函数如下图所示:
我们可以将目前分段的单个样本损失函数简化为一行:
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
y
l
o
g
(
h
θ
(
x
)
)
−
(
1
−
y
)
l
o
g
(
1
−
h
θ
(
x
)
)
Cost(h_\theta(x),y)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))
Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))因此,训练集上的损失函数
J
(
θ
)
J(\theta)
J(θ)为:
该函数来源于统计学中的最大似然估计,是关于
θ
\theta
θ的凸函数。
梯度下降法最小化 J ( θ ) J(\theta) J(θ)
其中:
因此,
θ
\theta
θ的更新过程可写为:
注意,对sigmoid函数,有
高级优化
提升逻辑回归算法运行速度,使算法能适用于大型机器学习问题。
对于任意的参数
θ
\theta
θ,我们首先需要编写代码实现对训练集损失函数
J
(
θ
)
J(\theta)
J(θ),
J
(
θ
)
J(\theta)
J(θ)对
θ
j
\theta_j
θj求偏导的计算。
除梯度下降外,还可使用共轭梯度、BFGS、L-BFGS等更复杂的优化算法。这些高级算法原理涉及高级数值计算,在此不做说明,只强调三者的优缺点。
优点:(1)不需要指定学习率
α
\alpha
α,算法基于线搜索策略选择最合适的学习率,可以为每次迭代选择不同的学习率。(2)比梯度下降更快收敛。
缺点:过于复杂难以理解(会用就行)
多分类问题
应用举例:给邮件加标签,工作,朋友,家庭,爱好等;一个因鼻塞就诊的病人,可能没有生病,着凉,或者得了流感;天气可分为阴,晴,雨,雪。
多分类问题数据集的可视化:
多分类问题的策略–转化为多个二分类问题
总结:
- 依次选取一类作为正类,除选中类以外的其他类视为负类,训练分类器。
- 原数据集包含多少类,就训练多少个分类器。
- 对新输入的x,选取所有分类器中输出值最大的那一类作为分类结果。