Answers:
好吧,您正在寻找支持向量机(SVM)。例如,具有线性RBF内核的SVM将特征映射到更高维度的空间,并尝试通过线性超平面分离类。这是一个很好的简短SVM视频,说明了这个想法。
您可以使用用于特征选择(包装模型)的搜索方法包装SVM,然后尝试查看您的任何特征是否可以线性地稀疏您拥有的类。
有许多使用SVM的有趣工具,包括LIBSVM,MSVMPack和Scikit-learn SVM。
e1071
包svm
与一起使用,kernel="linear"
并查看预测与实际的对比。
在计算上,确定两组点是否线性可分的最有效方法是应用线性规划。GLTK非常适合该目的,几乎每种高级语言都为此提供了接口-R,Python,Octave,Julia等。
关于建议使用SVM的答案:
使用SVM是验证线性可分离性的次佳解决方案,其原因有两个:
SVM是软边距分类器。这意味着线性内核SVM可能会适应一个分离平面,即使实际上可能,该平面也无法完美分离。如果您随后检查错误率,则错误率将不为0,并且您会错误地得出结论:这两组不是线性可分离的。通过选择非常高的成本系数C可以缓解此问题-但这本身以非常高的计算成本来实现。
SVM是最大利润率分类器。这意味着该算法将尝试找到一个将两个类别分隔开的分隔平面,同时尝试尽可能远离两者。同样,这是一个不必要地增加计算工作量的功能,因为它计算出的内容与回答线性可分离性问题无关。
假设您有一组点A和B:
然后,在以下情况下,您必须最小化0:
(下面的A是一个矩阵,而不是上面的点集)
“最小化0”实际上意味着您不需要实际优化目标函数,因为不必找出集合是否可线性分离。
最后()定义分隔平面。
如果您对R中的工作示例或数学细节感兴趣,请查看此内容。