如何知道数据是否可以线性分离?


21

数据具有许多功能(例如100个),实例数量大约为100,000。数据稀疏。我想使用逻辑回归或svm拟合数据。我如何知道要素是线性的还是非线性的,以便在非线性的情况下可以使用内核技巧?

Answers:


22

有几种方法可以确定数据是否可线性分离,本文重点介绍其中一些方法(1)。假设数据集中有两个类,以下是几种方法来确定它们是否可线性分离:

  1. 线性编程:定义一个目标函数,该函数要经受满足线性可分离性的约束。您可以在此处找到有关实现的详细信息。
  2. 感知器方法:如果数据是线性可分离的,则可以保证感知器收敛。
  3. 二次规划:二次规划优化目标函数可以像SVM中那样受约束定义。
  4. 计算几何:如果可以找到两个不相交的凸包,则数据是线性可分离的
  5. 聚类方法:如果可以使用某些聚类方法(例如k均值)找到两个聚类纯度为100%的聚类,则数据是线性可分离的。

    (1):Elizondo,D.,“线性可分离性问题:一些测试方法”,在《神经网络》,IEEE期刊,第17卷,第2期,第330-344页,2006年3月,doi:10.1109 / TNN。 2005.860871


1
请提供参考(链接可能会腐烂),并至少对涵盖的方法进行了一些解释。
Scortchi-恢复莫妮卡

2
谢谢。好答案(+1)。R包safeBinaryRegression还实现了线性编程方法。
Scortchi-恢复莫妮卡

哪一种(LP方法)很容易进行几何解释,计算效率高并且通常可用(就像LP例程一样)。
user603

3

我假设您谈论的是2类分类问题。在这种情况下,有一条线将您的两个类分开,并且任何经典算法在收敛时都应该能够找到它。

实际上,您必须对相同的数据进行训练和测试。如果有这样一条线,那么您应该获得接近100%的精度或100%的AUC。如果没有这样一条线,那么对相同数据进行训练和测试将至少导致一些错误。基于错误的数量,可能或可能不值得尝试使用非线性分类器。


1

硬边界SVM公式为

一世ñwb ||w||2
sŤ 一世wX一世+bÿ一世1个

如果我们的数据是线性可分离的,那么所有不等式约束都将得到满足。通常,在求解二次程序时,内部点方法(可行的开始,中心路径跟随算法)仅在找到可行的w值以初始化问题后才进行w的求解。因此,可以解决以下LP来检查可行性。

一世ñsb s
sŤ 一世wX一世+bÿ一世1个-s
s0

如果对此问题的最优为零,我们知道可以满足原始不等式约束。这意味着我们的数据在原始空间中是线性可分离的。对每个训练示例使用单独的可以告诉我们哪些数据点导致线性不可分。ss一世


+1这是R包中实现的方法背后的几何直觉safeBinaryRegression
user603 '18

-2

您尝试进行逻辑回归,看看它如何工作。如果无法解决问题,您可以尝试无限多个内核,但仍然可能无法解决。

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.