Machine learning 如何使用LibSVM-Weka实现预处理数据集以获得最大的效率

Machine learning 如何使用LibSVM-Weka实现预处理数据集以获得最大的效率,machine-learning,weka,libsvm,svm,Machine Learning,Weka,Libsvm,Svm,因此,我读到一篇文章说,正确处理数据集可以显著提高LibSVM分类精度……我正在使用Weka实现,希望得到一些帮助,以确保我的数据集是最优的 以下是我的示例属性: Power Numeric (real numbers, range is from 0 to 1.5132, 9000+ unique values) Voltage Numeric (similar to Power) Light Numeric (0 and 1 are the only 2 possible values) D

因此,我读到一篇文章说,正确处理数据集可以显著提高LibSVM分类精度……我正在使用Weka实现,希望得到一些帮助,以确保我的数据集是最优的

以下是我的示例属性:

Power Numeric (real numbers, range is from 0 to 1.5132, 9000+ unique values)
Voltage Numeric (similar to Power)
Light Numeric (0 and 1 are the only 2 possible values)
Day Numeric (1 through 20 are the possible values, equal number of each value)
Range Nominal {1,2,3,4,5} <----these are the classes
我的问题是:我应该应用哪些Weka预处理过滤器来使这个数据集对LibSVM更有效

我应该规范化和/或标准化功率和电压数据值吗? 我应该在任何东西上使用离散化过滤器吗? 我是否应该将电源/电压值放入数量少得多的存储箱中? 我应该将轻值设置为二进制而不是数字吗? 我应该标准化日值吗?这样做有意义吗? 对于类范围,我应该使用Nominal-to-Binary还是Nominal-to-something过滤器? 请就这些问题和您认为我可能遗漏的任何其他问题提供建议


提前谢谢

归一化非常重要,因为它影响支持向量机使用的距离概念。标准化的两种主要方法是:

将每个输入维度缩放到相同的间隔,例如[0,1]。这是迄今为止最常见的方法。有必要防止某些输入维度完全支配其他维度。LIBSVM作者在附录B中推荐的示例。 将每个实例缩放到给定长度。这在文本挖掘/计算机视觉中很常见。 关于输入的处理类型:

连续:不需要任何工作,SVM隐式地处理这些问题。 序数:视为连续变量。例如,冷、温、热可以建模为1、2、3,而不隐含定义非自然结构。 标称:执行,例如,对于具有N个级别的输入,生成N个新的二进制输入维度。这是必要的,因为必须避免隐式定义标称级别之间的不同距离。例如,将猫、狗、鸟建模为1、2和3意味着狗和鸟比猫和鸟更相似,这是胡说八道。 必要时,必须在替换输入后进行规范化

回答您的问题:

我应该规范化和/或标准化电源和电压数据吗 价值观

是的,将所有最终输入尺寸标准化为相同的间隔,包括假人

我应该在任何东西上使用离散化过滤器吗

没有

我是否应该将功率/电压值合并到更小数量的 垃圾箱

否。将其视为连续变量,例如,每个输入一个

我应该将轻值设置为二进制而不是数字吗

不,SVM没有二进制变量的概念,它把所有的东西都当作数字。因此,转换它只会在内部导致额外的类型转换

我应该标准化日值吗?这样做有意义吗 那个

如果要使用1个输入维度,必须像所有其他维度一样对其进行规范化

对于类范围,我应该使用Nominal-to-Binary还是Nominal-to-something过滤器

使用一个热编码将标称值转换为二进制


归一化非常重要,因为它影响支持向量机使用的距离概念。标准化的两种主要方法是:

将每个输入维度缩放到相同的间隔,例如[0,1]。这是迄今为止最常见的方法。有必要防止某些输入维度完全支配其他维度。LIBSVM作者在附录B中推荐的示例。 将每个实例缩放到给定长度。这在文本挖掘/计算机视觉中很常见。 关于输入的处理类型:

连续:不需要任何工作,SVM隐式地处理这些问题。 序数:视为连续变量。例如,冷、温、热可以建模为1、2、3,而不隐含定义非自然结构。 标称:执行,例如,对于具有N个级别的输入,生成N个新的二进制输入维度。这是必要的,因为必须避免隐式定义标称级别之间的不同距离。例如,将猫、狗、鸟建模为1、2和3意味着狗和鸟比猫和鸟更相似,这是胡说八道。 必要时,必须在替换输入后进行规范化

回答您的问题:

我应该规范化和/或标准化电源和电压数据吗 价值观

是的,将所有最终输入尺寸标准化为相同的间隔,包括假人

我应该在任何东西上使用离散化过滤器吗

没有

我是否应该将功率/电压值合并到更小数量的 垃圾箱

否。将其视为连续变量,例如,每个输入一个

我应该将轻值设置为二进制而不是数字吗

不,SVM没有二进制变量的概念,它把所有的东西都当作数字。因此,转换它只会在内部导致额外的类型转换

我应该标准化日值吗?它甚至让森 她想做什么 那个

如果要使用1个输入维度,必须像所有其他维度一样对其进行规范化

对于类范围,我应该使用Nominal-to-Binary还是Nominal-to-something过滤器

使用一个热编码将标称值转换为二进制


在将所有特征输入SVM之前,您应该始终标准化所有特征或标准化所有训练样本。其余部分取决于数据集,属性的含义是什么?是的,它是一个分类变量,那么我应该如何处理?我应该把它改为名义变量吗?我应该将它们全部缩放到0到1之间吗?不过,我不想在第1天和第20天之间再有一段距离。我希望全天的特征彼此都一样不同……在将它们输入SVM之前,您应该始终对所有特征进行标准化或对所有训练样本进行标准化。其余部分取决于数据集,属性的含义是什么?是的,它是一个分类变量,那么我应该如何处理?我应该把它改为名义变量吗?我应该将它们全部缩放到0到1之间吗?不过,我不想在第1天和第20天之间再有一段距离。我希望全天的功能都能有相同的不同…这非常有帮助…不过我还有一些后续问题。假设我的Day变量实际上是分类变量,它只能是1到20之间的离散值。我应该将其规格化为介于[0,1]之间,还是将其设为标称值并执行一次热编码。在这种情况下,我假设它看起来像1,0,0,0…,0,1,0,0。。。等等。第1天和第20天应该与第1天和第2天没有什么不同。在问题1中,我想你的意思是标准化而不是规范化?为了确保我的“Day”变量是一个输入…这是否意味着我不应该将其转换为标称值,然后对其使用一个热编码?或者我还能那样做吗?@stellarowl12你还能那样做。拉斯曼斯:是的,编辑了我的答案。另一个问题,我的光变量应该是数字的还是名义的,还是无关紧要?为什么它/它不重要?非常感谢!!这非常有帮助……不过我还有一些后续问题。假设我的Day变量实际上是分类变量,它只能是1到20之间的离散值。我应该将其规格化为介于[0,1]之间,还是将其设为标称值并执行一次热编码。在这种情况下,我假设它看起来像1,0,0,0…,0,1,0,0。。。等等。第1天和第20天应该与第1天和第2天没有什么不同。在问题1中,我想你的意思是标准化而不是规范化?为了确保我的“Day”变量是一个输入…这是否意味着我不应该将其转换为标称值,然后对其使用一个热编码?或者我还能那样做吗?@stellarowl12你还能那样做。拉斯曼斯:是的,编辑了我的答案。另一个问题,我的光变量应该是数字的还是名义的,还是无关紧要?为什么它/它不重要?非常感谢!!