【机器学习小常识】“分类” 与 “回归”的概念及区别详解

本文详细解释了机器学习中分类与回归的基本概念,从输出、目的、本质及结果等角度阐述了两者之间的区别,并给出了具体的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、分类与回归是干嘛的?

2、二者有什么区别

1.输出不同

2.目的不同

3.本质不同

4.结果不同

3、场景应用

1.分类应用

2.回归应用


学过机器学习的人都听过两个概念:分类与回归,特别的,在YOLO v1中,作者也提到了

YOLO之前的物体检测方法通常都转变为了一个分类问题,如 R-CNN、Fast R-CNN 等等。而YOLO将检测变为一个 回归问题。

那么这两个概念有什么联系,有什么区别呢?

写这篇博客,参考过很多人的简介,不同的人给的回复也不同, 在这里,我把他们汇总一下。

敲黑板

重点来啦重点来啦!!!

1、分类与回归是干嘛的?

不管是分类,还是回归,其本质是一样的,都是对输入做出预测,并且都是监督学习。说白了,就是根据特征,分析输入的内容,判断它的类别,或者预测其值。

2、二者有什么区别

重要要研究的就是两者的区别

1.输出不同

1.分类问题输出的是物体所属的类别,回归问题输出的是物体的值。

例如,最近福州天气比较怪(阴晴不定,像极了女朋友的脾气),为了能够对明天穿衣服的量以及是否携带雨具做判断,我们就要根据已有天气情况做预测。

上图中的天气可以分为:晴、阴、雨 三类,我们只知道今天(2019年3月26日)及之前的天气,我们会预测明天及以后几天的天气情况,如明天阴,下周一晴,这就是分类;

每一天的天气温度,我们知道今天及以前几天的温度,我们就要通过之前的温度来预测现在往后的温度,每一个时刻,我们都能预测出一个温度值,得到这个值用的方法就是回归。

2.分类问题输出的值是离散的,回归问题输出的值是连续的

注:这个离散和连续不是纯数学意义上的离散和连续。

在数学上的连续是指,在某一个点处的极限值等于在这个点的函数值。很明显,回归问题不可能测得连续值。因为我们测得的两个值再接近,这两个值之间还是会存在实数域上的值,比如我们测得空气温度是11°和10.999°(现实情况中,测空气温度小数点后三位几乎没什么意义,在此只是作为例子来说明问题),在这两个值之间还有无穷多个值,比如:10.9999°,10.99999°等等。测得的值是有范围的,小数点多少位以后,值就测不到了。

那我们怎么去理解离散和连续呢?

我们可以这么理解:离散就是规定好有有限个类别,这些类别是离散的。连续就是理论上可以取某一范围内的任意值,比如现在28°,当然这是我们测出来的,但是实际温度可能是无限趋于28。也就是说,回归并没有要求你的值必须是那个类别,你只要能回归出一个值,在可控范围内即可。

3.分类问题输出的值是定性的,回归问题输出的值是定量的

首先我们要先给大家说一下什么是定性和定量。

所谓定性是指确定某种东西的确切的组成有什么或者某种物质是什么,这种测定一般不用特别的测定这种物质的各种确切的数值量。

所谓定量就是指确定一种成分(某种物质)的确切的数值量,这种测定一般不用特别的鉴定物质是什么,

举个例子,这是一杯水,这句话是定性;这杯水有10毫升,这是定量。

2.目的不同

分类的目的是为了寻找决策边界,即分类算法得到是一个决策面,用于对数据集中的数据进行分类。

回归的目的是为了找到最优拟合,通过回归算法得到是一个最优拟合线,这个线条可以最好的接近数据集中的各个点。

3.本质不同

这个是我看到的别人在分析两者的差别时提到的,分享给大家。

原文:https://www.zhihu.com/question/21329754/answer/204957456

所谓的离散与连续的差别是分类与回归的不同的表象,而非本质,本质在于损失函数的形式不同。

4.结果不同

分类的结果没有逼近,对就是对,错就是错,什么类别就是什么类别,最终结果只有一个。

回归是对真实值的一种逼近预测,值不确定,当预测值与真实值相近时,误差较小时,认为这是一个好的回归。(例如一个产品的实际价格为5000元,通过回归分析预测值为4999元,我们认为这是一个比较好的回归分析。)

3、场景应用

我们的主要目的还是为了应用,而不是单纯了解他们有什么不同。

1.分类应用

分类问题应用非常广泛。通常是建立在回归之上,分类的最后一层通常要使用softmax函数进行判断其所属类别。分类并没有逼近的概念,最终正确结果只有一个,错误的就是错误的,不会有相近的概念。

例如判断一幅图片上的动物是一只猫还是一只狗,判断明天天气的阴晴,判断零件的合格与不合格等等。

2.回归应用

回归问题通常是用来预测一个值。另外,回归分析用在神经网络上,其最上层是不需要加上softmax函数的,而是直接对前一层累加即可。一个比较常见的回归算法是线性回归算法(LR)

如预测房价、股票的成交额、未来的天气情况等等。

### KNN算法在分类回归任务中的差异 #### 分类任务中的KNN 在分类任务中,K近邻(KNN)算法通过计算测试样本其最近邻居的距离来预测类别标签。具体来说,在给定的数据集中找到距离最近的`k`个训练实例,并依据这些邻居所属的主要类别决定新数据点的类别归属[^2]。 对于分类问题而言,最终输出的是离目标样本最接近的一组已知样本所占比例最大的那一类标签作为预测结果。例如: ```python from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载鸢尾花数据集并划分训练集测试集 data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target) # 创建KNN分类器对象并将模型拟合到训练数据上 clf = KNeighborsClassifier(n_neighbors=15) clf.fit(X_train, y_train) # 计算准确率得分 accuracy_train = accuracy_score(y_train, clf.predict(X_train)) accuracy_test = accuracy_score(y_test, clf.predict(X_test)) print(f'Training Accuracy: {accuracy_train:.4f}') print(f'Testing Accuracy: {accuracy_test:.4f}') ``` #### 回归任务中的KNN 而在回归场景下,KNN的工作方式略有不同。此时的目标不再是寻找多数投票最多的类别,而是基于选定的`k`个临近点估计连续型变量值。通常采用的方法是对这`k`个邻居的实际数值取平均数或加权均值以得出预测值。 针对回归分析,可以利用如下代码实现简单的线性关系建模: ```python from sklearn.neighbors import KNeighborsRegressor import numpy as np # 构造简单的人工数据用于演示目的 np.random.seed(0) X_reg = np.sort(5 * np.random.rand(40, 1), axis=0) y_reg = np.sin(X_reg).ravel() # 添加一些噪声使情况更贴近现实世界应用 y_reg[::5] += 1 * (0.5 - np.random.rand(8)) # 使用默认参数初始化KNN回归器并进行拟合操作 regressor = KNeighborsRegressor(n_neighbors=5) regressor.fit(X_reg, y_reg) # 预测新的输入向量对应的响应变量值 new_input = [[2.]] predicted_value = regressor.predict(new_input) print(f'Predicted value for input {new_input}: {predicted_value[0]:.4f}') ``` 两种情况下虽然都依赖于相似的核心概念——即考虑周围样本来做出决策,但在处理不同类型的任务时采取的具体策略存在明显区别
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值