VW输入文件格式

输入格式

VW的输入数据每行表示一个样本,每个样本的格式必须如下

[Label] [Importance] [Tag]|Namespace Features |Namespace Features … |Namespace Features

其中Namespace和Features的赋值形式如下
Namespace=String[:Value]
Features=(String[:Value] )*

  • Label:实数类型,表示样本的预测结果。如果没有Label标记,则无法进行训练。
  • Importance:非负的实数,表示该样本对其它样本的相对主要程度,如果忽略此字段,表示所有样本采用默认权重,为1。
  • Tag:字符类型,作为样本的标记,在对数据进行预测的时候,它将会出现在预测结果中标记预测样本。它不强制要互不相同,但最好还是要互不相同,否则预测会发生混淆。如果此字段为空字符时表示缺省状态。如果只有Tag字段,没有Importance字段,需要特别注意,Tag后必须紧跟着|(Tag和|间没有空格),或者在Tag的前面添加前导符号’。如果没有Tag字段,则需要在|前面留有空格。
  • Namespace:实数类型,例如它的形式为MetricFeatures:3.28,它表示在该Namespace空间中所有特征值的归一化标量。如果没有3.28,则表示取缺省值1。需要注意的是Namespace和|之间是没有空格的,如果有空格就会被当成特征处理。
  • Features:字符类型。由系列的空格分隔,每个特征后面都跟着一个实数,也可以没有实数,例如:NumberOfLegs:4.0 HasStripes,特征后面的实数表示特征的取值,如果特征后面没有数,表示特征的取值为1。

注意:|,空格,:,换行符不能出现在Namespace和Feature字段中

样本的例子
下面样本中没有Tag字段,所以1.0和|间有空格,格式为1.0 |;Says表示Namespace权重是缺省值1,black,with,white,stripes的特征值都为1;OtherFeatures的值为1,特征NumberOfLegs和HasStripes的值分别为4.0和1.0

1 1.0 |MetricFeatures:3.28 height:1.5 length:2.0 |Says black with white stripes |OtherFeatures NumberOfLegs:4.0 HasStripes

下面的例子是有Tag字段的样本,所以zebra和|间要没有空格

1 1.0 zebra|MetricFeatures:3.28 height:1.5 length:2.0 |Says black with white stripes |OtherFeatures NumberOfLegs:4.0 HasStripes

注意

样本标签

如果使用逻辑回归或者铰链损失函数时,切记将样本的标签设置为{+1,-1},而不是{+1,0}

样本格式中的空格

  • 在竖线两侧的空格非常重要,需要注意
    在第一个|前面如果没有空格,则|前面的标记被认为成Tag字段,即样本id

  • 在任何的|后面

    如果有空格,则空格后的非空字段就被看成正常的特征名
    如果|后没有空格,则|后的字段就被看成Namespace字段

    Namespace可以看成是特征的前缀,在某一特征空间内的特征都会被加上Namespace作为前缀

多分类算法的输入数据格式

有些VW算法支持多分类问题。对于这些多分类算法,二分类的输入格式可以扩展成多分类的输入格式。

  • weighted-all-pairs & cost-sensitive-one-against-all format

对于weighted-all-pairs algorithm (–wap)和cost-sensitive-one-against-all (–csoaa)算法,它们需要的输入数据的标签格式是一致的。样本标签的格式是一个稀疏格式,格式如下

echo “1:0 2:3 3:1.5 4:1 |f input features come here” | vw –csoaa 4
第一个|前面有四个类别,分别为: 1, 2, 3, 4,每个类都有一个代价,即它们冒号后面的数值。这些冒号后面的数值是VW中的csoaa方法的主要参数,同时在输入的信息中还包括了类别标记的范围为[1,N],在这个例子中N=4,因为用稀疏格式表示类别标签,所以并不要求每行的样本中都要有完整的类别标签信息。

  • On-demand model saving

This feature is useful especially in the daemon mode, where you can decide in any moment of the training that you want to save the current model in arbitrary file, using a dummy example whose Tag starts with save and optionally specifies also the filename (no label or features are needed in this dummy example), e.g.:

vw –daemon –port 9999
cat data1.vw | nc localhost:9999
echo save_/tmp/my1.model | nc localhost:9999
cat data2.vw | nc localhost:9999
echo save_/tmp/my1and2.model | nc localhost:9999

你可能感兴趣的:(计算工具)