好玩的人工智能
快乐的深度学习

分类和回归的区别

分类模型和回归模型本质一样,分类模型可将回归模型的输出离散化(下面例子1. 2. 4. 5.),回归模型也可将分类模型的输出连续化(下面例子3.)

举几个例子:Logistic Regression Linear Regression:

Linear Regression:输出一个标量 wx+b,这个值是连续值,所以可以用来处理回归问题

Logistic Regression:把上面的 wx+b 通过 sigmoid 函数映射到(0,1)上,并划分一个阈值,大于阈值的分为一类,小于等于分为另一类,可以用来处理二分类问题

更进一步:对于N分类问题,则是先得到N组w值不同的 wx+b,然后归一化,比如用 softmax 函数,最后变成N个类上的概率,可以处理多分类问题

Support Vector Regression 和 Support Vector Machine:SVR:输出 wx+b,即某个样本点到分类面的距离,是连续值,所以是回归模型

SVM:把这个距离用 sign(·) 函数作用,距离为正(在超平面一侧)的样本点是一类,为负的是另一类,所以是分类模型

Naive Bayes 用于分类 和 回归:

用于分类:y是离散的类别,所以得到离散的 p(y|x),给定 x ,输出每个类上的概率

用于回归:对上面离散的 p(y|x)求期望 ΣyP(y|x),就得到连续值。但因为此时y本身是连续的值,所以最地道的做法是,得到连续的概率密度函数p(y|x),然后再对y求期望。

参考 http://www.cs.waikato.ac.nz/~eibe/pubs/nbr.pdf

前馈神经网络(如 CNN 系列) 用于 分类 和 回归:

用于回归:最后一层有m个神经元,每个神经元输出一个标量,m个神经元的输出可以看做向量 v,现全部连到一个神经元上,则这个神经元输出 wv+b,是一个连续值,可以处理回归问题,跟上面 Linear Regression 思想一样用于N分类:现在这m个神经元最后连接到 N 个神经元,就有 N 组w值不同的 wv+b,同理可以归一化(比如用 softmax )变成 N个类上的概率(补充一下,如果不用 softmax,而是每个 wx+b 用一个 sigmoid,就变成多标签问题,跟多分类的区别在于,样本可以被打上多个标签)

循环神经网络(如 RNN 系列) 用于分类 和 回归:

用于回归 和 分类: 跟 CNN 类似,输出层的值 y = wv+b,可做分类可做回归,只不过区别在于,RNN 的输出跟时间有关,即输出的是 {y(t), y(t+1),…}序列(关于时间序列,见下面的更新)上面的例子其实都是从 prediction 的角度举例的,如果从 training 角度来看,分类模型和回归模型的目标函数不同,分类常见的是 log loss, hinge loss, 而回归是 square loss(关于 loss function,又是另一个story了,在此不展开了)

==== 进一步思考后的重要更新,谈谈时间序列模型 ========

上面的例子 1~4 解决的是常见的分类/回归问题,而例5 解决的是 时间序列问题。上面例1~4 的模型只适用于:这些样本的 y,没有时间上的相关性,比如:人脸识别(分类问题),输入 x 是人脸的图像矩阵,识别目标 y 是人的ID,离散值,显然人与人的ID没有时间上的关系人脸年龄预测(回归问题),输入 x 还是人脸图像矩阵,识别目标 y 是人的年龄,连续值,显然人与人之间的年龄亦没有时间上的关系而当这些样本的 y 在时间上有相关性时,就变成了 时间序列问题,如果我们依然用非时间序列的方法来处理,就割裂了y的时间相关性,所以常见手段是用例5提到的RNN,(当然,还有 HMM, CRF 这些)但注意别用统计学里面那些愚蠢的 AR 模型(参考我的回答 时间序列建模问题,如何准确的建立时间序列模型? – 知乎用户的回答 – 知乎)。

应用场景:NLP 里的命名体识别(分类问题),输入是一句话,可以看做是由单词组成的时间序列(准确说是: 事件序列),输出是每个单词所属的标签气温预测(回归问题),输入是历史时间的气温记录,输出是未来1天或多天的气温总结一下,我认为,机器学习模型(有监督)本质是:对一系列样本 构建 的映射所以,对于时间序列问题,其实是构建一个 的映射关系。

感觉大家都在谈论如何才能一眼看出分类和回归问题,我就来答一下二者的其他区别。

对于如何区分二者,其他回答已经说得很好了。

如何区分类与回归,看的不是输入,而是输出的连续与否。

例如:云青青兮欲雨。这个“云青青”就是输入,“青青”就是云的特征,而雨就是我们的预测输出。

可以看到,在这个问题中,我们想得到的输出是天气,他是晴朗、阴天等天气状况的子集,是不连续的,所以这就是一个典型的分类问题。

再例如:The woods are lovely, dark and deep,But I have promises to keep,And miles to go before I sleep,And miles to go before I sleep.这这例子中我们可以知道,树林的特征是[‘lovely’, ‘dark’, ‘deep’],由此预测出前面路还很长。而这里的miles是一个数字,它是连续的值,所以这个例子就是回归。

有一个新手特别容易犯的错误就是,认为logistic回归属于回归。

但是,logistic回归不是回归是分类! logistic回归不是回归是分类! logistic回归不是回归是分类!

logistic回归只是用到了回归算法,但是其输出的结果是决策边界,是不连续的。

不管是学习ML,数据分析还是数模,这都是一个认识上的误区。

有小伙伴说Logistic回归过程和线性回归雷同,在二分类问题中,仅仅只是多了一个“阈值判断”,所以应该是回归。

但是,Logistc回归仅仅只是过程和线性回归一样,可以归类为GLM,可我们所要讨论的回归和分类,是仅仅对于输出而言的:就像你不能因为用于图像分类的卷积神经网络可以把最后的输出神经元数量换成1、将Softmax去掉并把loss换成MSE后能做回归,那么这样的用于分类的网络就应该是回归一样;在很大程度上,我们甚至可以认为分类和回归就只有是否存在“阈值判断”这么一点区别(多分类就是Softmax吧)。而且中文翻译成“逻辑回归”,也是很不准确的。大牛周志华将其翻译为对数几率回归,因为logistic回归中用到了sigmoid函数,这个翻译是很靠谱的。分类问题的目的在于寻找决策边界

举个例子,小时候再看电视剧的时候,总喜欢问家长:“这个人是好人还是坏人啊?”而家长心有就有一个评判的标准,好人坏人界限分明,非黑即白;而这个界限,就是决策边界。不管是分类还是回归,我们都是在做数据拟合,也就是我们需要让计算机“造”出一个函数(实际上只是修改固定函数的参数Orz),让他能和自然界中客观存在的未知函数尽可能地吻合。但是,由于我们所拥有的样本数据集并不是宇宙万物这个全集,仅仅只是很有限的一小部分,所以我们不能让这个函数的预测结果和所有样本吻合,不然就很容易过拟合了。举个例子,这就好像人类学习,平时书上的东西学得好,考试时候懂得举一反三,所以考得好(原谅我的功利主义),才厉害;但是平时书上的题目全都会,一到考试遇见不会的题就原地爆炸,这样的同学就是过拟合的。如果平时随机学,考试随缘考,这样的同学就是欠拟合的。而要评价一个模型猜的准不准,以及对于未知数据的猜的情况咋样,就要有一套评价方法。而这个方法,分类和回归也是不同的。图中的方法列举的不够完整,若要仔细了解还是要阅读教材哦。

未经允许不得转载:零点智能 » 分类和回归的区别
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

零点智能 人工智能社区,加Q群:469331966

投稿&建议&加Q群