所以我读了一篇论文,说正确处理你的数据集可以大大提高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更有效?
请就这些问题以及您认为我可能错过的任何其他事项提出建议......
提前致谢!!
答案 0 :(得分:6)
归一化非常重要,因为它会影响SVM使用的 distance 的概念。规范化的两种主要方法是:
[0, 1]
。到目前为止,这是最常用的方法。有必要防止某些输入维度完全支配其他维度。 LIBSVM作者在其beginner's guide(附录B中的示例)中推荐。关于处理输入类型:
1
,2
,3
隐含地定义了一种不自然的结构。1
,2
和3
意味着 dog 和 bird 比 cat 和 bird 更相似,这是无稽之谈。在必要时替换输入后必须进行标准化。
回答你的问题:
我应该规范化和/或标准化电源和电压数据 值?
是的,将所有(最终)输入维度标准化为相同的间隔(包括假人!)。
我应该对任何事物使用离散过滤器吗?
否强>
我是否应该将电源/电压值合并为少许数量 仓?
否。将它们视为连续变量(例如每个输入一次)。
我应该将Light值设为二进制而不是数字吗?
不,SVM没有二进制变量的概念,并将所有内容都视为数字。所以转换它只会导致内部额外的类型转换。
我应该规范日值吗?这样做是否有意义 那?
如果您想使用1个输入维度,则必须像其他维度一样对其进行标准化。
我是否应该使用Nominal to Binary或Nominal来为其他东西过滤类&#34; Range&#34;?
使用单热编码标称为二进制。