总结与问题
我正在使用 liblinear 2.30 - 我注意到 prod 中存在类似问题,因此我尝试通过简单的减少训练来隔离它,其中包含 2 个类、每类 1 个训练文档、我的词汇表中具有相同权重的 5 个特征和 1 个包含的简单测试文档只有一个特征只存在于第 2 类中。
a) 特征值的用途是什么?
b) 我想了解为什么这个包含一个只存在于一个类中的单一特征的测试文档没有被强烈预测到该类中?
c)我不希望每个功能有不同的值。将每个特征值从 1 增加到其他值是否还有其他含义?我怎样才能确定这个数字?
d) 我的更改是否会对其他更复杂的培训产生不良影响?
我试过的
您将在下面找到与简单训练相关的数据(请关注特征 5):
> cat train.txt
1 1:1 2:1 3:1
2 2:1 4:1 5:1
> train -s 0 -c 1 -p 0.1 -e 0.01 -B 0 train.txt model.bin
iter 1 act 3.353e-01 pre 3.333e-01 delta 6.715e-01 f 1.386e+00 |g| 1.000e+00 CG 1
iter 2 act 4.825e-05 pre 4.824e-05 delta 6.715e-01 f 1.051e+00 |g| 1.182e-02 CG 1
> cat model.bin
solver_type L2R_LR
nr_class 2
label 1 2
nr_feature 5
bias 0
w
0.3374141436539016
0
0.3374141436539016
-0.3374141436539016
-0.3374141436539016
0
这是模型的输出:
solver_type L2R_LR
nr_class 2
label 1 2
nr_feature 5
bias 0
w
0.3374141436539016
0
0.3374141436539016
-0.3374141436539016
-0.3374141436539016
0
1 5:10
您将在下面找到我的模型的预测:
> cat test.txt
1 5:1
> predict -b 1 test.txt model.bin test.out
Accuracy = 0% (0/1)
> cat test.out
labels 1 2
2 0.416438 0.583562
这里是我有点惊讶的地方,因为预测就像[0.42, 0.58]
特征 5 只存在于第 2 类中一样。为什么?所以我只是尝试将测试文档的特征值从 1 增加到 10:
> cat newtest.txt
1 5:10
> predict -b 1 newtest.txt model.bin newtest.out
Accuracy = 0% (0/1)
> cat newtest.out
labels 1 2
2 0.0331135 0.966887
现在我得到了更好的预测[0.03, 0.97]
。因此,我尝试重新编译我的训练,将所有功能设置为 10:
> cat newtrain.txt
1 1:10 2:10 3:10
2 2:10 4:10 5:10
> train -s 0 -c 1 -p 0.1 -e 0.01 -B 0 newtrain.txt newmodel.bin
iter 1 act 1.104e+00 pre 9.804e-01 delta 2.508e-01 f 1.386e+00 |g| 1.000e+01 CG 1
iter 2 act 1.381e-01 pre 1.140e-01 delta 2.508e-01 f 2.826e-01 |g| 2.272e+00 CG 1
iter 3 act 2.627e-02 pre 2.269e-02 delta 2.508e-01 f 1.445e-01 |g| 6.847e-01 CG 1
iter 4 act 2.121e-03 pre 1.994e-03 delta 2.508e-01 f 1.183e-01 |g| 1.553e-01 CG 1
> cat newmodel.bin
solver_type L2R_LR
nr_class 2
label 1 2
nr_feature 5
bias 0
w
0.19420510395364846
0
0.19420510395364846
-0.19420510395364846
-0.19420510395364846
0
> predict -b 1 newtest.txt newmodel.bin newtest.out
Accuracy = 0% (0/1)
> cat newtest.out
labels 1 2
2 0.125423 0.874577
再次,对于第 2 类的预测仍然可以:0.87