gpt4 book ai didi

machine-learning - Vowpal Wabbit 无法预测二进制值,可能是训练过度?

转载 作者:行者123 更新时间:2023-11-30 09:54:00 25 4
gpt4 key购买 nike

我正在尝试使用 Vowpal Wabbit 进行二元分类,即给定特征值 vw 会将其分类为 1 或 0。这就是我格式化训练数据的方式。

1 'name | feature1:0 feature2:1 feature3:48 feature4:4881 ...
-1 'name2 | feature1:1 feature2:0 feature3:5 feature4:2565 ...
etc

我有大约 30,000 个 1 数据点和大约 3,000 个 0 数据点。创建模型后,我有 100 个 1 和 100 个 0 数据点用于测试。这些测试数据点默认分类为 1。以下是我格式化预测集的方式:

1 'name | feature1:0 feature2:1 feature3:48 feature4:4881 ...

根据我对 VW 文档的理解,我需要使用逻辑或铰链损失函数进行二元分类。这就是我创建模型的方式:

vw -d ../training_set.txt --loss_function logistic/hinge -f model

这就是我尝试预测的方式:

vw -d ../test_set.txt --loss_function logistic/hinge -i model -t -p /dev/stdout

但是,这就是我遇到问题的地方。如果我使用铰链损失函数,所有预测均为-1。当我使用逻辑损失函数时,我得到 5 到 11 之间的任意值。一般趋势是,数据点应为 0 为较低值(5-7),数据点应为 1 为 6 -11。我究竟做错了什么?我查看了文档并检查了一堆有关大众的文章,看看我是否可以确定我的问题是什么,但我无法弄清楚。理想情况下,我会得到一个 0,1 值,或 0 到 1 之间的值,该值对应于大众汽车认为结果的强度。任何帮助将不胜感激!

最佳答案

  • 如果输出应该只是 -1+1 标签,请使用 --binary 选项(测试时)。<
  • 如果输出应为 0 到 1 之间的实数,请使用 --loss_function=logistic --link=logistic。训练时需要使用loss_function=logistic,因此该数字可以解释为概率。
  • 如果输出应为 -1 到 1 之间的实数,请使用 --link=glf1

如果你的训练数据不平衡,例如正例比负例多 10 倍,但你的测试数据是平衡的(并且你想在这个测试数据上获得最佳损失),设置 importance weight正例的数量为 0.1(因为正例的数量多了 10 倍)。

关于machine-learning - Vowpal Wabbit 无法预测二进制值,可能是训练过度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38573920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com