2011-03-13 103 views
4

我想在一个文件中表示一组标记实例(数据)作为训练数据送入LibSVM。对于this问题中提到的问题。这将包括,LibSVM输入格式

  1. 登录的时间
  2. 登录时间
  3. 位置(国家代码?)
  4. 一周
  5. 真实性日(0 - 非正品,1 - 正品) - 标签

如何格式化该数据以输入到SVM?

+0

位置和IP地址重叠,所以您可能只想选择其中一个(试验以找出哪个最好)。 – 2011-03-14 15:39:17

+0

删除了IP地址 – ruwanego 2011-03-14 19:34:53

+0

您不需要将其从问题中删除:) – 2011-03-14 21:03:24

回答

4

你问的数据格式或如何转换数据?对于后者,你将不得不尝试找到正确的方法来做到这一点。总体思路是将数据转换为名义值或有序值属性。其中一些很简单 - #4,#6 - 其中一些将会很艰难 - #1-#3。例如,您可以将#1表示为日,月和年的三个属性,或者通过将#1转换为类似时间戳的UNIX来表示#1。

IP更难 - 没有简单的方法将其转化为有意义的序数值。根据您的问题使用每个IP作为名义属性可能没有用处。

一旦你弄明白了,转换你的数据,检查LibSVM文档。一般的格式是:+1 1:0 2:0 .. etc

+0

IP地址等于用户的先前(或最常见)IP地址可能是一个很好的功能,并且仅为二进制。 – 2011-03-14 15:49:29

+0

所以..只要我能够使用日期(dd/mm/yyyy),时间(hh:mm - 24h格式),位置(国家代码 - 为了简单起见),星期几(0-6 ),以真实性(1或0)来实现这一目标..我不应该? – ruwanego 2011-03-14 19:25:59

+0

您将无法使用任何非数字格式(如日期) - 此处的区别在于您有三个维度(日/月/年)与一维(自1972年以来的秒数)。您必须以任何方式进行转换。 – dfb 2011-03-14 19:46:50

1

我相信在以前的答案中有一个没有说明的假设。没有说明的假设是libSVM的用户知道他们应该避免将分类数据放入分类器中。

例如,libSVM不知道如何处理国家代码。如果您试图预测哪些访问者最有可能在您的网站上购买某些内容,那么如果美国位于您的国家/地区代码列表中的乍得和尼日尔之间,则可能会出现问题。来自美国的膨胀可能会歪曲位于附近的国家的预测。

要解决这个问题,我会为每个正在考虑的国家(也可能是“其他”类别)创建一个类别。然后,对于要分类的每个实例,除了实例所属的类别外,我会将所有国家/地区类别设置为零。 (要用libSVM稀疏文件格式来做到这一点,这并不是什么大问题)。