2016-07-08 57 views
0

我正在尝试一个反对所有逻辑回归分类编辑文章的主题类别根据他们的文本使用vowpal wabbit。当我尝试使用用于培训的相同数据对新文章进行预测时,结果很差,但由于过度拟合,我期望得到不切实际的好结果。在这种情况下,我实际上想要过度拟合,因为我想验证我是否正确使用了vowpal wabbit。一对一逻辑回归分类器与Vowpal Wabbit

我的模型被训练上的例子看起来像这样的,其中每个功能是从文章一个字,每一个标签是一个类别的标识符,如体育或娱乐: 1 | the baseball player ... stadium 4 | musicians played all ... crowd ... 2 | fish are an ... squid

我的训练命令如下: vw --oaa=19 --loss_function=logistic --save_resume -d /tmp/train.vw -f /tmp/model.vw

我的测试命令如下: vw -t --probabilities --loss_function=logistic --link=logistic -d /tmp/test.vw -i /tmp/model.vw -p /tmp/predict.vw --raw_predictions=/tmp/predictions_raw.vw

我使用--probabilities--link=logistic b因为我希望我的结果可以被解释为属于该类的那篇文章的概率。

我对于我的数据集的大小(81个示例和52000个特征)有一个明显的问题,但是我预计这会导致严重的过度拟合,因此对与训练数据相同的数据集做出的任何预测都会相当好。 我在做我的vowpal wabbit命令有问题吗?我对数据科学的理解是关闭的吗?

这里是从训练命令的输出:

Num weight bits = 18 
learning rate = 0.5 
initial_t = 0 
power_t = 0.5 
using no cache 
Reading datafile = /tmp/train.vw 
num sources = 1 
average since   example  example current current current 
loss  last   counter   weight label predict features 
1.000000 1.000000   1   1.0  15  1  451 
1.000000 1.000000   2   2.0  8  15  296 
1.000000 1.000000   4   4.0  8  7  333 
0.875000 0.750000   8   8.0  15  15  429 
0.500000 0.125000   16   16.0  8  7  305 
0.531250 0.562500   32   32.0  12  8  117 
0.500000 0.468750   64   64.0  3  15  117 

finished run 
number of examples per pass = 81 
passes used = 1 
weighted example sum = 81.000000 
weighted label sum = 0.000000 
average loss = 0.518519 
total feature number = 52703 

而对于测试命令:

only testing 
predictions = /tmp/predict.vw 
raw predictions = /tmp/predictions_raw.vw 
Num weight bits = 18 
learning rate = 0.5 
initial_t = 0 
power_t = 0.5 
using no cache 
Reading datafile = /tmp/test.vw 
num sources = 1 
average since   example  example current current current 
loss  last   counter   weight label predict features 
1.000000 -0.015873   1   1.0 4294967295 3(7%)  117 
1.000000 1.000000   2   2.0 4294967295 3(7%)  88 
1.000000 1.000000   4   4.0 4294967295 3(7%)  188 
1.000000 1.000000   8   8.0 4294967295 9(7%)  1175 
1.000000 1.000000   16   16.0 4294967295 5(7%)  883 
1.000000 1.000000   32   32.0 4294967295 7(7%)  229 
1.000000 1.000000   64   64.0 4294967295 15(7%)  304 

finished run 
number of examples per pass = 40 
passes used = 2 
weighted example sum = 81.000000 
weighted label sum = 0.000000 
average loss = 1.000000 
average multiclass log loss = 999.000000 
total feature number = 52703 
+0

使用'--probabilities',您不需要'--link = logistic'和'--raw_predictions'。你的训练数据是否被洗牌(或按照自然顺序排列)? –

+0

@MartinPopel我明白了,谢谢。我无法找到有关'--probabilities'和'--link = logistic'的信息。是的,在训练之前,我已经注意到我的例子。 (感谢实际上你的另一个SO回答) – vaerek

+0

你没有试过它 - “link = logisitic'? '--probabilities'在内部计算逻辑链接函数。还可以尝试省略'--save_resume':只有在需要更多步骤训练模型时(如果在上一个训练步骤中使用它,可能会影响报告的测试损失),才需要使用它。 –

回答

0

我相信我的主要问题只是我需要运行更多的传球。我不太了解vw如何实现在线学习,这与批量学习有何不同,但经过多次通过后,平均损失降至13%。随着--holdout_off启用,此损失进一步下降到%1。非常感谢@arielf和@MartinPopel

Running training command with 2421 examples: vw --oaa=19 --loss_function=logistic --save_resume -c --passes 10 -d /tmp/train.vw -f /tmp/model.vw 
final_regressor = /tmp/model.vw 
Num weight bits = 18 
learning rate = 0.5 
initial_t = 0 
power_t = 0.5 
decay_learning_rate = 1 
using cache_file = /tmp/train.vw.cache 
ignoring text input in favor of cache input 
num sources = 1 
average since   example  example current current current 
loss  last   counter   weight label predict features 
1.000000 1.000000   1   1.0  11  1  234 
1.000000 1.000000   2   2.0  6  11  651 
1.000000 1.000000   4   4.0  2  12  1157 
1.000000 1.000000   8   8.0  4  2  74 
1.000000 1.000000   16   16.0  12  15  171 
0.906250 0.812500   32   32.0  9  6  6 
0.750000 0.593750   64   64.0  15  19  348 
0.625000 0.500000   128   128.0  12  12  110 
0.566406 0.507812   256   256.0  12  5  176 
0.472656 0.378906   512   512.0  5  5  168 
0.362305 0.251953   1024   1024.0  16  8  274 
0.293457 0.224609   2048   2048.0  3  4  118 
0.224670 0.224670   4096   4096.0  8  8  850 h 
0.191419 0.158242   8192   8192.0  6  6  249 h 
0.164926 0.138462  16384  16384.0  3  4  154 h 

finished run 
number of examples per pass = 2179 
passes used = 10 
weighted example sum = 21790.000000 
weighted label sum = 0.000000 
average loss = 0.132231 h 
total feature number = 12925010