我正在尝试实现感知器算法,但我无法弄清楚以下几点。
- 迭代次数的理想值应该是多少
- 这个算法适合大量数据吗?
- 阈值会随着迭代而变化吗?
- 如果是的话,它对最终输出有什么影响?
我正在尝试实现感知器算法,但我无法弄清楚以下几点。
感知器不是一个特定的算法,它是一组算法的名称。这些算法之间有两个主要区别。
1.整合与消防规则
设输入向量为x
,权重向量为w
,阈值为t
,输出值为P(x)
。有多种函数可以计算 P(x):
P(x)
= 1(如果w
* x
>= t
)或 0(否则)P(x)
= w
* x
(如果w
* x
>= t
)或 0(否则)P(x)
= t
(如果w
* x
>= t
)或w
* x
(如果 0< w
* x
< t
)或 0(否则)P(x)
= 1 / 1+e^( w
* x
)和许多其他人。所以很难说阈值对最终输出有什么影响,因为它取决于您使用的集成和触发功能。
2.学习规律
Perceptron 的学习规则也是多种多样的。最简单和最常见的一种是
w
-> w
+ a
* x
* ( D(x)
- P(x)
)
其中a
是学习步骤的大小,D(x)
是 的预期输出x
。因此,也很难说理想的迭代值应该是多少,因为它取决于a
您拥有的训练样本的值和数量。
因此,阈值是否会随着迭代而变化?这也取决于。上面简单通用的学习规则在训练时不会修改阈值,但是还有一些其他的学习规则会修改它。
顺便说一句,您还问这种算法是否适合大量数据?衡量分类器对某个数据集的适用性的主要指标是数据集的线性可分性,而不是数据集的规模。请记住,单层感知器对于非线性可分的数据集的性能非常差。 数据集的规模并不重要。