让我们从预测数值(回归)转向预测类别(分类)。设想一下,你要判断一封邮件是否是垃圾邮件,一位客户是否会点击广告,或者一个肿瘤是恶性还是良性。这些都是分类问题,因为结果是明确的类别或种类。你可能会想:“我们不能直接用线性回归来做这个吗?”毕竟,我们可以给“非垃圾邮件”分配数值标签0,给“垃圾邮件”分配1,然后尝试拟合一条线。然而,这种做法有明显的缺点。线性回归预测的是连续数值,这些数值可能会落在0到1的有效范围之外。比如,对于我们的垃圾邮件例子,它可能会预测出1.5或-0.2的值,这作为类别标签甚至概率都没有意义。此外,线性回归生成的直线通常不能有效地捕捉分类的阈值特性,尤其是在处理异常值时。思考一下这个我们想根据一个特征对点进行分类的简单例子:{"layout": {"title": "线性回归用于分类?", "xaxis": {"title": "特征值"}, "yaxis": {"title": "类别(0或1)", "range": [-0.5, 1.5]}, "showlegend": false, "template": "simple_white"}, "data": [{"x": [1, 2, 3, 7, 8, 9], "y": [0, 0, 0, 1, 1, 1], "mode": "markers", "type": "scatter", "marker": {"color": "#228be6", "size": 10}}, {"x": [0, 10], "y": [-0.1, 1.1], "mode": "lines", "type": "scatter", "line": {"color": "#fa5252", "dash": "dash"}, "name": "线性拟合"}]}一条线性回归线(红色虚线)试图拟合二元数据(蓝色点在0和1处)。注意这条线如何延伸到0-1范围之外,并且没有提供明确的决策点。这就是逻辑回归发挥作用的地方。尽管它的名字包含“回归”,但它是一种基本算法,专门为分类任务设计,特别是二元分类(结果有两类的问题,通常标记为0和1)。逻辑回归不像线性回归那样输出可以无限范围的直接预测值,而是计算给定输入属于正类(通常表示为类别1)的概率。这个概率始终被限制在0到1之间,这正是我们所需的。逻辑回归在处理分类问题时,首先会计算输入特征的加权和(加上一个偏差项),这与线性回归类似。但其独特之处在于,它会将这个结果通过一个名为Sigmoid函数(也称为逻辑函数)的特殊函数。该函数能够接受任何实数作为输入,并将其压缩成一个0到1之间的输出值。因此,逻辑回归的输出不是类别标签本身,而是一个概率,我们称之为 $p$。比如,如果我们预测垃圾邮件(类别1)与非垃圾邮件(类别0),模型可能对特定邮件输出 $p = 0.85$。这表示模型估计该邮件有85%的概率是垃圾邮件。为了得到最终的离散类别预测(0或1),我们应用一个决策阈值。一个常用的阈值是0.5。如果预测概率 $p$ 大于或等于0.5,我们将输入归类为类别1(例如,垃圾邮件)。如果预测概率 $p$ 小于0.5,我们将输入归类为类别0(例如,非垃圾邮件)。这种方法比线性回归提供了一个更适合分类的框架。它输出的概率是可解释的,并且使用阈值来做出最终的类别决定。在接下来的部分,我们将更仔细地查看实现这一点的Sigmoid函数以及模型创建的决策边界的想法。