我发现这个问题有点棘手.也许有人知道回答这个问题的方法.想象一下,你有一个你不知道它是什么的数据集(训练数据).为了推断分类算法对这些数据进行分类,您会看到哪些训练数据的特征?我们可以说是否应该使用非线性或线性分类算法吗?
顺便说一句,我正在使用WEKA来分析数据.
有什么建议?谢谢.
哇,所以你有一些训练数据,你不知道你是在寻找代表文档中的单词的特征,还是在单元格中生成并且需要调整分类器.好吧,因为你没有任何语义信息,所以你必须通过查看数据集的统计属性来做到这一点.
首先,要制定问题,这不仅仅是线性与非线性.如果您真的想要对这些数据进行分类,那么您真正需要做的是为分类器选择一个核心函数,它可以是线性的,也可以是非线性的(高斯函数,多项式,双曲线函数等).此外,每个核函数都可能需要一个或多个需要设置的参数.确定给定分类问题的最佳核函数和参数集并不是一个真正解决的问题,只有有用的启发式算法,如果你谷歌'选择核函数'或'选择内核函数',你会看到许多研究论文提出并测试各种方法.虽然有很多方法,但最基本和最好的方法之一就是对参数做一个梯度下降 - 基本上你尝试一个内核方法和一个参数集,训练一半的数据点,看看你是怎么做的.然后你尝试一组不同的参数,看看你是怎么做的.你可以在最佳精度方向上移动参数直到你得到满足 保守党的结果.
如果你不需要经历所有这些复杂性来找到一个好的核函数,而只是想要一个线性或非线性的答案.然后问题主要归结为两件事:非线性分类器具有更高的过度拟合风险(低估),因为它们具有更多的自由维度.他们可能会受到分类器的困扰,只是记住一组好的数据点,而不是提出一个很好的概括.另一方面,线性分类器具有较小的自由度,并且在数据不可线性分离的情况下,将无法找到良好的决策功能并且遭受高错误率.
不幸的是,我不知道一个更好的数学解决方案来回答"这个数据是线性可分离的"这个问题,而不仅仅是尝试分类器本身并看看它是如何执行的.为此,你需要一个比我更聪明的答案.
编辑:本研究报告描述了一种算法,它看起来应该能够确定给定数据集与线性可分离的接近程度.
http://www2.ift.ulaval.ca/~mmarchand/publications/wcnn93aa.pdf
这实际上是两个问题合二为一;-)
功能选择
线性与否
添加"算法选择",你可能有三个最基本的分类器设计问题.
另外,如果您没有任何领域专业知识,这将使您能够指导功能的选择和/或断言功能空间的线性,这是一件好事.这就是数据挖掘的乐趣:在没有先验专业知识的情况下推断出这样的信息.(顺便说一句,虽然领域专业知识可以很好地重新检查分类器的结果,但过多的先验洞察力可能会让您错过良好的挖掘机会).没有任何这样的先验知识,您将被迫建立合理的方法并对结果进行仔细审查.
很难提供具体的指导,部分原因是问题中遗漏了许多细节,而且因为我在某种程度上通过这种方式了解我的方式;-).从来没有希望以下通用建议会有所帮助
对于您尝试的每个算法(或者更精确地针对给定算法的每组参数),您将需要运行许多测试.理论可能非常有用,但仍会有很多"反复试验".您会发现交叉验证是一种有价值的技术.
简而言之,[并且取决于可用训练数据的大小],您将训练数据随机分成几个部分,并在一个(或几个)这些部分上训练分类器,然后在另一个部分上评估分类器的性能[或几个]部分.对于每个这样的运行,您可以测量各种性能指标,例如误分类错误(MCE),除了告诉您分类器如何执行,这些指标,或者更确切地说,它们的可变性将提供有关所选功能的相关性的提示和/或他们缺乏规模或线性.
独立地线性假设的,有用的是归一化值的数字特征.这有助于具有奇数范围等的特征.
在每个维度内,在中位数两侧的2.5个标准偏差内建立范围,并在此范围的基础上将特征值转换为百分比.
将名义属性转换为二进制属性,创建具有标称属性的不同值的多个维度.(我认为很多算法优化器会为你做这个)
一旦您确定了一个或几个具有相对不错性能的分类器(比如33%MCE),就可以通过一次仅修改一个参数来执行相同的测试系列,使用这样的分类器.例如,删除一些功能,并查看生成的较低维度分类器是否会改进或降级.
该损耗因子是一个非常敏感的参数.尝试并坚持使用一个"可合理的",但可能是大部分测试的次优值,最后微调损失.
学习利用SVM优化器提供的"转储"信息.这些结果提供了有关优化程序"认为"的非常有价值的信息
请记住,在给定域中给定数据集的效果非常好可能对来自其他域的数据执行得非常差...
咖啡的好,不是太多.当一切都失败了,把它变成爱尔兰语;-)