(由于知乎平台稿件格式问题,公式格式不能正确写上;如若读写困难可后台私信我要完整电子版)
线性回归是指特征 x 通过模型运算得到预测值 y^'。在理论上,y^' 的取值范围是 (-∞,+∞),即 y^' 可以是任何值,例如销量、价格、负债等。
在回归任务中,有一类特殊场景值得注意,就是预测概率。概率可用于解决分类问题。在这类场景中,模型的输出是输入样本属于某个类别的概率。例如,输入的是用户消费习惯和商品特征等信息,输出的概率 p 表示用户是否会购买商品。再如,输入的是一幅图片,输出的概率 p 表示该图片是否包含人脸。
我们知道,概率的取值范围是 [0,1],因此,模型输出的范围要在此区间之内,在此区间以外的预测是没有实际意义的。预测概率是一个非常普遍的场景,如图3-1所示。分类问题大都属于预测概率。例如,输入一幅图片,模型能够计算出图片中包含一只猫、一条狗或二者都不是的概率,从而完成分类。
图3-1
在图3-1中,P_1、P_2、P_3 分别表示模型判断输入 x 属于猫、狗、二者都不是的概率。根据概率的定义和性质,有 P_1∈[0,1]、P_2∈[0,1]、P_3∈[0,1] 且 P_1+P_2+P_3=1。
分类问题的特殊之处在于,其输出要有明确的取值范围 [0,1] 和物理含义(概率),这一点和回归任务(值域为 (-∞,+∞))不尽相同。由于分类问题在人工智能场景中有丰富的应用,因此得到了专门的处理和优化。
在分类问题中,二分类是一个简单但应用广泛的场景。假设有P和N两个类别,y 表示P类的概率,1-y 表示N类的概率,而在训练样本中,样本的类别都是客观存在的,不存在随机性,因此 y=1 或 y=0。值得注意的是,二分类的两个类别必须完全互斥并包含所有情况。例如,二分类的两个类别可以是“狗”和“非狗”,但不可以是“狗”和“猫”。
在二分类场景中,模型只需要一个输出 y^'。如果 y^' 表示输入 x 属于P类的概率,那么 x 属于N类的概率自然就是 1-y^'。模型的输出 y^'∈[0,1] 不再局限于一个二值选择,可以是一个属于0~1的连续值,以表示模型判断的概率结果。
在机器学习数十年的发展过程中,出现了很多分类模型,其中就包括逻辑回归。逻辑回归作为二分类问题的一个经典模型,是神经网络学习的基础,因此,我们有必要对其进行系统的学习和研究。
3.1 逻辑回归的基本原理
通过对第2章的阅读,相信读者已经对线性回归有所了解。当训练完成时,可以得到一个用于预测的函数
y^'=w^T x+w_0
通过该函数,可以对输入进行输出值的计算。
线性回归和分类任务相悖的地方在于,线性回归输出的值域为 (-∞,+∞),而这超出了概率的取值范围 [0,1]。
不过,问题还是有办法解决的。例如,对输出进行改造,对线性回归的输出进行判断。如果 w^T x+w_0 ≥ 0,就认为 x 属于P类的概率为 y^'=1;如果 w^T x+w_0<0,就认为 x 属于P类的概率为 y^'=0。改造后的模型函数如下。
函数图像如图3-2所示。
图3-2
上述模型虽然能够满足分类的需求,但仍存在一些问题,其中,以下两个比较重要。
很明显,这种曲线的缺点是判断太“硬”、太绝对、非黑即白,无法体现输入 x 与两个类别的相似程度。在很多应用场景中,用户都倾向于得到一个能够反映程度的值,而非简单的1或0。例如,属于P类的概率为0.75,属于N类的概率为0.25,这种结果是无法通过上述模型得到的。事实上,所有的分类都属于“抽刀断水”,并不存在绝对性。
上述模型在 d=0 这一点的导数 (∂y^')/∂d 不存在,当 d≠0 时导数 (∂y^')/∂d=0。现在的主流学习方法仍然是梯度下降法,当导数不存在或为0时,w 无法得到更新,而这会导致学习失效。
既然发现了问题,就要解决问题。人工智能先驱们经过努力,找到了逻辑函数(Logistics Function),如下式所示。
f(d)=1/(1+e^(-d) )
逻辑函数的图像,如图3-3所示。
图3-3
逻辑回归的导数为 ∂f/∂d=f(d)(1-f(d)),其图像如图3-4所示。
图3-4
与之前过“硬”的方案相比,这个函数的特点如下。
值域为 [0,1],不仅满足了概率值域的约束,也可以输出0.75、0.6这类相对比较“软”的概率值。
处处都有导数且都不为0,保证了梯度下降法的可操作性。
因此,我们用逻辑函数代替条件判断,将线性回归改造成分类模型,公式如下。
其中
上述模型就是逻辑回归(Logistic Regression,LR),即加载逻辑函数的线性回归。在这里,d 实际上是一个线性回归,输出概率 y^' 随着 d 的增大而增大且趋近于1;反之,y^' 随着 d 的减小而减小且趋近于0。
在预测阶段,我们可以设一个阈值 θ(通常可以取0.5)。当模型输出 y^'>θ 时,认为输入的样本 x 属于P类;当模型输出 y^'<θ 时,认为输入的样本 x 属于N类;当模型输出 y^'=θ 时,认为输入的样本 x 位于两个类别的临界点。
假设有一种自动诊疗仪,输入 x 为人的一些生理指标,用逻辑回归判断就诊者是否患有癌症。如果诊疗仪判断就诊者患有癌症,则由医生对病人进行会诊,否则就诊者可以结束就诊。模型输出P类表示患有癌症,N类表示未患癌症,这就是一个典型的二分类问题。在这个场景中,宁可让模型错误地把一个健康的人判断为癌症患者(再由医生做进一步检查和判断),也不要出现漏判——因为在这两个类别上,错分(“假阴”和“假阳”)的代价是不一样的。这时可以适当降低阈值 θ,例如 θ=0.3。这样,模型输出为 y^'=0.4、y^'=0.35 的就诊者就会被诊疗仪判断为患有癌症,由医生进行进一步的会诊,以免遗漏。
当 θ=0.5 时,表示对P类和N类没有特殊的偏好。当 θ<0.5 时,反映了对于分类结果为P类的“宁错勿漏”。当 θ>0.5 时,判断输入 x 为P类是更加严格的,表示“宁缺毋滥”。需要强调的是,模型输出 y^' 是一个客观数字,但阈值是使用者主观设定的。
在一些场景中,阈值 θ 也不是必需的。例如,在推荐系统中,我们用逻辑回归预测用户是否会对商品进行点击。假设有100件候选商品,在一个页面上只能展示10件给用户,此时需要使用逻辑回归分别对这100件商品进行预测打分,然后将得分排在前10位的商品展示给用户。这些分数可能整体偏低,也就是“矮子里拔将军”,或者整体偏高,即“优中选优”。
接下来,我们看一个更有意思的例子。如果输入是2维的,即 x=〖[x_1,x_2]〗^T,逻辑回归模型如下。
y^'=1/(1+e^(-d) )=1/(1+e^(-d) )
d=w_1 x_1+w_2 x_2+w_0
此时,可以在坐标系中画出数据点,其中横坐标为 x_1,纵坐标为 x_2,如图3-5所示。
图3-5
当 d=0 时,y^'=0.5。当 θ=0.5 时,w_1 x_1+w_2 x_2+w_0=0 对应于坐标系中的一条直线,这条直线称为分界线。
如果数据点(椭圆形点)位于分界线左上方区域,则将这些数据点代入直线方程,可得
d=w_1 x_1+w_2 x_2+w_0>0
由此可以推导出 y^'>0.5>θ,意味着这些数据点的分类结果都为P类。
同理,当数据点位于分界线右下方区域时,d<0,即 y^'<0.5<θ,这些数据点的分类结果都为N类。
进一步,当 d>0 时,d=10 和 d=100 的区别在于数据点与分界线距离的远近不同(d=10 时离分界线近),体现在分类结果为P类的概率和 d 的关系上,如图3-6所示。d<0 时的情况同理。
图3-6
结合图3-5和图3-6可以看出,数据点离分界线越远,它所对应的概率值就越大,分类结果就越可信。
在本节的最后,我们一起讨论一个多分类问题。在实际应用中有很多分类场景。例如,我们要预测一首歌的类型(例如摇滚乐、流行乐、爵士乐等),该怎么使用逻辑回归呢?对
多分类问题,可以使用多个分类器 h_1,h_2,⋯,h_k,k 为类别数量。其中,h_j 表示二分类模型
的逻辑回归模型,用于判断样本 x 属于第 j 类的概率。在训练阶段,第 j 类的样本属于P类,其他样本都属于N类。这种多分类方法称为OvR(One-vs-Rest)。样本 x 的类别为
(arg max)┬j〖h_j (x)〗
也就是说,取 k 个分类模型中输出值最大的模型所对应的类别作为多分类结果。
因为在使用OvR进行多分类时不需要类别互斥,所以不必满足 ∑_(j=1)^k▒〖h_j (x)=1〗。假设一
首歌可以同时属于摇滚乐和流行乐,那么对应的 h_流行乐 和 h_摇滚乐 的输出值都比较大。因此,
OvR也可用于多标签/多类别问题,即“一个样本可以属于多个分类”。此时,有 Class(x)=
{j|h_j (x)>θ_j},θ_j 是为各类别独立设置的阈值。
所谓分类,其实都是人主观设定的标准,不存在客观的分类标准,这就是所谓丑小鸭定理(Ugly Duckling Theorem)。丑小鸭定理是1969年由渡边慧提出的。丑小鸭是白天鹅的幼雏。尽管在常人的眼里,丑小鸭和白天鹅的区别大于不同白天鹅之间的区别,但在遗传学家的眼里,丑小鸭与其父亲或母亲的差别小于其父母之间的差别。正因为没有客观的分类标准,所以分类模型需要通过标注数据来明确类别的种类。标注数据的不同会导致模型不同的分类结果。
假设:在第一个场景中,需要区分一种生物是否为水产品,那么此时螃蟹和鱼属于同一类别;在第二个场景中,需要区分一种生物是否为脊椎动物,那么此时螃蟹和鱼就不属于同一类