【发布时间】:2017-07-25 02:01:27
【问题描述】:
我查看了这些问题here 和here。但是我仍然找不到令人满意的结果来理解算法。我了解它的作用,以及它如何做的总体思路,但我仍然觉得在项目中使用它还不够舒服。我想了解该算法如何对应于它的更通俗的描述。我尝试阅读几个在线资源,但其中大多数都在重复 Schapire 和 Freund 的例子,而没有真正解释发生了什么。这是 Schapire 的解释 AdaBoost 中给出的算法,p。 2
到目前为止,这是我从中了解到的:
x1,y2,对应训练集。
当给定 x1 时,我们观察 y1 输出。
这个 x+number 是 X 集合的成员。
并且 y+number 是 set {-1,+1} 的成员,所以对于算法的其余部分
训练集是(x+number,-1),(x+number,+1), xm, -1 or +1)等。
初始化分布,不清楚这里的分布意义,我们继续。D1(i) = 1/m for i = 1, ..., m.
我不确定 D1 的 1 和 1/m 的 1 之间是否有任何关系,但据我了解,i 对应于训练集中元素的位置。
我假设 t 意味着,比如时间或实例,所以我们 t1 实例和 t2 实例等。
通过说使用分布 Dt 训练弱学习器,我假设我们想做类似Dt(i) = t/m 的事情?
得到弱假设 ht: X -> {-1,+1} 意味着 ht 是这样的,如果它从 X 组输入中获取一个元素,那么它将给出 {-1,+1} 作为输出。
目标:选择具有低加权误差的 ht:
我真的不明白这里发生了什么。符号“~”通常对应于逻辑运算符中的“not”,或者有时用作日期中 circa 的等价物,但我认为这里不是这种情况,它是否对应于给定 Dt 的概率之类的东西?
开头的“et”最初是我认为的熵,但我读到here 它实际上是错误的。表示矩阵的“[”? ht(xi) != yi 表示 ht 对输入 xi 产生错误的输出,因为通常训练集定义为 x1,y1,xm,ym 等。
对于算法的其余部分,我不知道。如果有人可以用非技术术语解释其余部分,那就太好了。通过非技术性,我的意思是尝试描述算法在每个步骤中相对于上一步所做的事情。如果您还可以解释为什么使用“ln”和“sign”之类的函数来描述正在发生的事情,那就太好了。如果您可以用更具体的东西替换变量,那也很棒。
PS:我在代码格式中添加了符号,因为 SO 在接受问题之前坚持我的问题包含代码
【问题讨论】:
标签: algorithm machine-learning language-agnostic adaboost