为什么不通过回归来进行分类呢?


51

我在机器学习中看到的一些材料说,通过回归处理分类问题是一个坏主意。但是我认为始终可以进行连续回归以拟合数据,并截断连续预测以产生离散分类。那为什么是个坏主意呢?


我认为在生产环境中,回归总是比分类更为复杂

Answers:


57

“通过回归通过回归来解决分类问题。”我假设您的意思是线性回归,并且我将将此方法与拟合逻辑回归模型的“分类”方法进行比较。

在此之前,弄清回归模型和分类模型之间的区别很重要。回归模型预测连续变量,例如降雨量或日照强度。他们还可以预测概率,例如图像包含猫的概率。通过强加决策规则,可以将概率预测回归模型用作分类器的一部分-例如,如果概率为50%或更高,则将其确定为猫。

Logistic回归可预测概率,因此是一种回归算法。但是,它通常被描述为机器学习文献中的一种分类方法,因为它可以(并且经常)用于制作分类器。还有“真正的”分类算法,例如SVM,它们只能预测结果而不提供概率。我们将不在这里讨论这种算法。

分类问题的线性与逻辑回归

就像Andrew Ng解释的那样,通过线性回归,您可以通过数据拟合多项式-例如,像下面的示例一样,我们通过{肿瘤大小,肿瘤类型}样本集拟合直线:

在此处输入图片说明

以上,恶性肿瘤为,非恶性肿瘤为,绿线是我们的假设。为了做出预测,我们可以说对于任何给定的肿瘤大小,如果大于我们就可以预测恶性肿瘤,否则我们就可以预测良性。10h(x)xh(x)0.5

看起来我们可以正确地预测每个训练集样本,但是现在让我们稍微更改一下任务。

直观上看,所有大于某个阈值的肿瘤都是恶性的。因此,让我们添加另一个具有巨大肿瘤大小的样本,然后再次运行线性回归:

在此处输入图片说明

现在我们的不再起作用。为了保持正确的预测,我们需要将其更改为或类似的值-但这不是算法的工作原理。h(x)>0.5malignanth(x)>0.2

每当新样本到达时,我们就无法更改假设。相反,我们应该从训练集数据中学习它,然后(使用我们学习的假设)对我们之前从未见过的数据做出正确的预测。

希望这可以解释为什么线性回归不是最适合分类问题的原因!另外,您可能想观看VI。逻辑回归。ml-class.org上的分类视频,详细介绍了该想法。


编辑

概率逻辑问一个好的分类器会做什么。在这个特定的例子中,您可能会使用逻辑回归来学习这样的假设(我只是在做这个):

在此处输入图片说明

请注意,线性回归逻辑回归都为您提供一条直线(或一个高阶多项式),但是这些线的含义不同:

  • h(x)线性回归的内插或外推输出,并预测的值(我们尚未看到)。这就像插入新的并获取原始数字一样,并且更适合诸如根据{汽车尺寸,汽车年龄}进行汽车价格预测等任务。xx
  • h(x)的回归告诉你的概率是属于“积极”级。这就是为什么将其称为回归算法的原因-它估计连续量,即概率。但是,如果为概率设置阈值,例如,则会获得分类器,并且在许多情况下,这就是对数回归模型的输出所做的事情。这等效于在绘图上放置一条线:位于分类器线上方的所有点都属于一个类,而位于下方的点则属于另一类。xxh(x)>0.5

因此,底线是,在分类的场景中,我们使用一个完全不同的推理和一个完全不同的算法比回归方案。


@andreister:但是如果所有异常值都被删除或截断了,线性回归仍然不是一个好主意吗?
Tomek Tarczynski,2012年

您的示例很好,但是没有显示“好的分类器”会做什么。你能添加这个吗?请注意,添加数据点几乎可以改变任何方法的线。您尚未解释为什么这是一个不好的更改。
概率

1
@andreister:您的示例显示一些不良数据可能会破坏线性回归。但是,我们可以使用二次回归或更复杂的假设来使“回归”成为一个很好的分类器吗?
Strin '02

1
@probabilityislogic-好点,我更新了答案。
andreister

2
@斯特林:更复杂的假设更有可能过拟合数据。(也就是说,为了适应您手头的数据的古怪之处,导致对未来数据的适应性很差。)我记得在上一堂课时,前排的一个人只是确定教授正在阻止我们,没有给我们提供能够使我们在电力市场上丧命的复杂算法……他从未真正理解过拟合。
韦恩

14

我想不出分类实际上是最终目标的例子。几乎总是真正的目标是做出准确的预测,例如概率。本着这种精神,(逻辑)回归是您的朋友。


5
在我看来,有效分类是大多数自动化过程的最终目标,在这些自动化过程中,人工干预或判断是不切实际或不可能的。当接收时,比方说,一个嘈杂发送的数字信号时,接收器不能决定特定位应该是0.97,而不是0或1。
基数

6
除了错误肯定的成本或错误否定的成本很少受到进行分类的分析师的控制外,因此,原始分析师无法可靠地选择“正确”的切入点进行分类。此外,明智的做法是具有中等风险的“灰色地带”,其中不进行分类,建议使用“获取更多数据”。
Frank Harrell'2

1
我认为我完全相信与该答案相反的观点,并且在我整个大学的机器学习教育中从未遇到过这种观点。我很惊讶有人会这么说。在实践中,我几乎总是遇到一些问题,人们认为他们想预测一个连续的数量,但实际上他们想预测该数量的不同分类桶中的成员资格。我很难找到这样的实例:根据问题的实质推断,实际预测连续数量是有用的。
伊利

9
我认为您已经将很多机器学习准则视为理所当然。您做出了大量不必要的假设。其中之一是人们实际上需要在分类桶中强制选择。他们可能声称要这样做,但是在大多数情况下,他们实际上并不需要。不必强迫选择。一个不错的选择是“不做决定,获取更多数据”。通常需要预测基础连续量。学习最佳(贝叶斯)决策理论是值得的。如果您可以提供具体示例,我将进一步评论。
Frank Harrell

11
+1 @Frank Harrell的评论。例如,预测温度,降雨量,河流水位比预测温度高或高或低或泛滥要有用得多。即使问题出在羊还是山羊?pr(sheep)的估计比二进制“ sheep”或“ goat”更具信息性。
Nick Cox 2013年

1

为什么不看一些证据呢?尽管许多人认为线性回归不适用于分类,但它可能仍然有效。为了获得一些直觉,我在scikit-learn的分类器比较中包括了线性回归(用作分类器)。这是发生了什么:

在此处输入图片说明

决策边界比其他分类器窄,但准确性相同。与线性支持向量分类器非常相似,回归模型为您提供了一个在特征空间中分隔类的超平面。

如我们所见,使用线性回归作为分类器是可行的,但与往常一样,我将交叉验证这些预测。

作为记录,这是我的分类器代码的样子:

class LinearRegressionClassifier():

def __init__(self):
    self.reg = LinearRegression()

def fit(self, X, y):
    self.reg.fit(X, y)

def predict(self, X):
    return np.clip(self.reg.predict(X),0,1)

def decision_function(self, X):
    return np.clip(self.reg.predict(X),0,1)

def score(self, X, y):
    return accuracy_score(y,np.round(self.predict(X)))


0

此外,为了扩展本来很好的答案,对于除双变量之外的任何分类任务,使用回归将要求我们在类之间施加距离和顺序。换句话说,我们可能只是通过洗牌类的标签或更改分配数值的规模得到不同的结果(比如类标为 VS) ,这违背了分类问题的目的。1,10,100,...1,2,3,...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.