- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经开始使用 Vowpal Wabbit 对于逻辑回归,但是我无法重现它给出的结果。也许它确实有一些未记录的“魔法”,但是有没有人能够复制/验证/检查逻辑回归的计算?
例如,使用下面的简单数据,我们的目标是建模 age
预测 label
.很明显,当年龄增加时,观察到 1 的概率增加,因此存在很强的相关性。
作为一个简单的单元测试,我使用了下面的 12 行数据:
age label
20 0
25 0
30 0
35 0
40 0
50 0
60 1
65 0
70 1
75 1
77 1
80 1
L = 0.2294*age - 14.08
的模型.因此,如果我替换年龄,并使用 logit 变换 prob=1/(1+EXP(-L)) 我可以获得范围从
0.0001
的预测概率对于第一行,到
0.9864
对于最后一行,正如合理预期的那样。
-1 'P1 |f age:20
-1 'P2 |f age:25
-1 'P3 |f age:30
-1 'P4 |f age:35
-1 'P5 |f age:40
-1 'P6 |f age:50
1 'P7 |f age:60
-1 'P8 |f age:65
1 'P9 |f age:70
1 'P10 |f age:75
1 'P11 |f age:77
1 'P12 |f age:80
vw -d data.txt -f demo_model.vw --loss_function logistic --invert_hash aaa
L= -0.00094*age - 0.03857
, 即
非常不一样。
-r
获得的预测值或
-p
进一步证实了这一点。结果概率几乎完全相同,例如
0.4857
年龄=20 和
0.4716
对于年龄= 80,这是非常关闭的。
最佳答案
这是对vovpal wabbit 的常见误解。
人们无法将批量学习与在线学习进行比较。
vwappal wabbit 不是批量学习器。这是一个在线学习者。在线学习者通过一次查看一个示例并在学习过程中稍微调整模型的权重来学习。
在线学习有优点也有缺点。缺点是最终模型的收敛速度缓慢/渐进。学习者在从每个例子中提取信息方面并没有做“完美”的工作,因为这个过程是迭代的。最终结果的收敛是故意限制/缓慢的。这会使在线学习者在上述微小数据集上显得很弱。
不过有几个好处:
vw
从他们的台式机和笔记本电脑上的数十亿个示例数据集中学习。 -1
先出现,然后是所有
1
),就像上面的例子一样。因此,要想从像 vobpal wabbit 这样的在线学习者那里获得更好的结果,首先要做的就是统一洗牌
1
s 和
-1
s(或简单地按时间排序,因为示例通常出现在现实生活中)。
1
和 -1
例子。 vw
给出没有逻辑函数转换(这是不幸的)。它们类似于中间点的标准偏差(在 [-50, 50] 处截断)。您需要通过
utl/logistic
管道预测(在源树中)获得有符号概率。请注意,这些有符号概率在 [-1, +1] 范围内,而不是 [0, 1]。您可以使用
logistic -0
而不是
logistic
将它们映射到 [0, 1] 范围。
# Train:
vw train.vw -c --passes 1000 -f model.vw --loss_function logistic --holdout_off
# Predict on train set (just as a sanity check) using the just generated model:
vw -t -i model.vw train.vw -p /dev/stdout | logistic | sort -tP -n -k 2
-0.95674145247658 P1
-0.930208359811439 P2
-0.888329575506748 P3
-0.823617739247262 P4
-0.726830630992614 P5
-0.405323815830325 P6
0.0618902961794472 P7
0.298575998150221 P8
0.503468453150847 P9
0.663996516371277 P10
0.715480084449868 P11
0.780212725426778 P12
1
,在年龄较小的情况下更接近
-1
)。您可能还对以下培训选项感兴趣:
--max_prediction <arg> sets the max prediction to <arg>
--min_prediction <arg> sets the min prediction to <arg>
-l <arg> set learning rate to <arg>
0.5
的学习率对于大量(例如
10
),您可以强制
vw
在小数据集上训练时收敛得更快,从而需要更少的通行证才能到达那里。
vw
不再需要外部
logistic
将预测映射回 [0,1] 范围的实用程序。全新
--link logistic
option 将预测映射到逻辑函数 [0, 1] 范围。同样
--link glf1
将预测映射到广义逻辑函数 [-1, 1] 范围。
关于logistic-regression - Vowpal Wabbit逻辑回归的正确性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24822288/
我有一个 const 方法,我想在其中将类 B 的一个成员的属性设置为当前实例 A(通过指针进行反向引用) A 类: void A::foo () const { ... ... B
Cython 生成的代码是否总是与生成它的 Python 代码一样正确? 它可能会帮助其他读者解决 Cython 静态类型声明和其他 Cython 功能(如果有的话)的使用问题,尽管我只对通过将 Py
我有一个包含一些指针的结构。我希望这些值是不可修改的。但是简单地写 const infront 并不能使结构成员不可变 typedef struct{ int *x; int *y; }poi
我需要评估和比较QR Code生成库,并寻找逻辑参数来测量和比较输出。 Why do I need this? It seems that when I give two different QR g
错误:Invalid conversion from 'char**' to 'const char**' 类似的问题似乎没有相同的情况(即两个函数在同一结构上具有不同的 const 要求)。如果确实
我确定以前有人问过这个问题,但所有搜索结果都有 const& 问题。 我想确保下面的方法不会改变传递给它的 GuestNode,所以我想传递 const GuestNode& guest,但是 g++
我有一个配置文件,它在我的程序运行时开始时被读入、解析并放入结构中。 我遇到的问题是我希望这些结构保持不变,因为它们中的值在程序生命周期内不应更改。 目前我正在做以下事情: 配置.h #pragma
我必须生成泊松分布的数据。我的范围是 n = 1000 到 100K。其中n是数据元素的数量; k 从 1 到 n 变化。它说使用 lambda 作为 n/2 我从未进行过统计,也不知道如何在这里获得
“如果每个顶点都可以从其他每个顶点到达,则称有向图是强连通的”。 Coreman 中给出的算法如下:- STRONGLY-CONNECTED-COMPONENTS (G) 1. Call DFS(G
我有一些代码是在不考虑 const 正确性的情况下编写的。有什么情况可以改变这个 class X { public: X(X& rhs); // does not modify rhs
我正在尝试对真正为 const 的类进行 const 操作 - 它不会更改该类指向的数据。 例如: class Node{ public: int val; }; class V{ publi
我没想到这段代码可以编译: #include #include class A { public: inline int get() const { return
将类的const 正确性 扩展到其指定成员的正确方法是什么?在示例代码中,get 方法的常量版本是否会创建一个 std::shared_ptr,其引用计数器与内部成员 m_b 相同,还是它重新从 0
我试图更好地理解 const-correctness 是如何工作的,更具体地说,在处理其成员基于 containers 和 smart pointers 的类时。我想无论类成员如何,const-cor
我有一个自定义迭代器实现(它迭代数据库查询结果,但这与此无关)。它在概念上有两组函数:get 类型函数,它从当前项目(当前行)返回一个值,以及 setup 类型函数(在我的例子中是 binds),它在
我目前面临一个由一些高级程序员编写的 C++ 项目,其中包含大约 400 个文件和 200 个类。 代码精心设计,运行良好且稳定。 虽然我正在添加一些功能,但对我来说,注意 const 的正确性只是普
这个问题在这里已经有了答案: What is the type of string literals in C and C++? (4 个回答) 关闭9年前。 根据 C++ 标准,字符串字面量类型是
我在一个类中有几个容器,例如 vector 或 map ,其中包含shared_ptr 指向堆上的对象。 例如 template class MyExample { public: private:
我知道很少有关于 const 正确性的问题,其中声明函数的声明及其定义不需要就值参数达成一致。这是因为值参数的常量只在函数内部很重要。这很好: // header int func(int i); /
对于本质上是只读但具有可能需要修改的互斥锁/锁的方法是否为 const 是否有约定? 如果没有,如果这种方法是 const 会有什么缺点/不好的设计 谢谢 最佳答案 您可以使用关键字mutable标记
我是一名优秀的程序员,十分优秀!