在上一章中,我们学习了回归,其目标是预测一个连续的数值,例如房屋的价格或明天的温度。现在,我们将注意力转向另一种监督学习任务:分类。想象一下,你不是在试图预测一个具体的数字,而是试图将某物归入一个组或类别。这就是分类的核心。其目的是学习将输入变量(特征)映射到预定义的离散类别或类。请思考这些常见情景:垃圾邮件检测: 传入的电子邮件是垃圾邮件还是非垃圾邮件?图像识别: 图像中包含的是猫、狗还是汽车?医疗诊断: 根据症状和检测结果,患者患有特定的疾病还是无疾病?客户行为: 客户是可能流失(停止使用服务)还是不流失?在每种情况下,预测都不是一个连续刻度上的数字;它是一个从有限可能性集合中选出的不同标签。什么定义了分类问题?分类问题的定义特征是,我们想要预测的目标变量是类别型的。这意味着它取代表不同组或类的值。特征: 就像回归中一样,我们使用输入特征来进行预测。对于垃圾邮件检测,特征可能包括某些词语的频率、发件人地址或电子邮件是否包含附件。对于医疗诊断,特征可以是患者的年龄、血压或特定实验室测试的结果。类别标签: 我们预测的输出称为类别标签(或简称为类或类别)。这些标签是预定义的。示例包括{'垃圾邮件', '非垃圾邮件'}、{'猫', '狗', '汽车'}、{'疾病 A', '疾病 B', '健康'}。二元分类与多元分类分类问题大致可以分为两种主要类型:"1. 二元分类: 这是最简单的形式,其中只有两个可能的输出类别。许多问题都属于这一类别,通常被表述为是/否决策。" * 示例:垃圾邮件检测(垃圾邮件/非垃圾邮件)、医学测试(阳性/阴性)、客户流失预测(流失/不流失)。多元分类: 在这种情况下,有三个或更多可能的输出类别。任务是将一个实例分配到这些多个类别中的一个。示例:手写数字识别(0、1、2、...、9)、图像中的物体识别(人、汽车、树、建筑物)、文档分类(体育、政治、科技、商业)。分类是一种监督学习任务,旨在预测数据的离散类别或标签,而非连续数值。例如,它可以预测电子邮件是否为垃圾邮件,或将图像归类到特定对象类别。一个简单的分类情景是,数据点具有两个特征(特征1和特征2),并且每个点都属于两个类(类A或类B)中的一个。{"layout": {"xaxis": {"title": "特征 1"}, "yaxis": {"title": "特征 2"}, "title": "简单分类示例数据", "legend": {"title": "类别"}, "autosize": true, "margin": {"l": 50, "r": 50, "b": 50, "t": 50, "pad": 4}}, "data": [{"x": [1, 1.5, 2, 2.5, 3, 3.5, 4], "y": [1, 1.8, 1.5, 2.5, 2.2, 3.5, 3], "mode": "markers", "type": "scatter", "name": "类别 A", "marker": {"color": "#228be6", "size": 8}}, {"x": [4.5, 5, 5.5, 6, 6.5, 7, 7.5], "y": [4, 4.8, 4.5, 5.5, 5.2, 6.5, 6], "mode": "markers", "type": "scatter", "name": "类别 B", "marker": {"color": "#f03e3e", "size": 8}}]}两个不同类别的数据点根据两个特征进行绘制。分类算法的目标是学习如何根据特征区分这些类别。分类算法的任务是学习一个“规则”或“边界”(通常称为决策边界,我们稍后会讨论),根据特征中的模式来分离不同的类别。当一个新的、未见过的数据点出现时,算法会使用这个学到的规则将其分配给最可能的类别。在本章中,我们将研究专门为这些任务设计的特定算法,首先是逻辑回归,它常用于二元分类,然后是K近邻(KNN),这是一种适用于二元和多元问题的多用途算法。我们还将介绍如何衡量分类模型的表现如何。