感知器的疑惑

我正在自学机器学习,并遇到了以下感知器的签名:

def ClassicPerceptron(W,X,Y,maxiter=1000,reorder=True):    """ClassicPerceptron函数实现了最基本的感知器。
    这个算法首先会根据reorder是否为True来重新排序训练样本及其标签。
    然后,它会对所有样本进行迭代,直到正确分类所有样本,或者迭代次数达到maxiter为止。
    参数
    ----------
    W : numpy数组,元素为浮点数
        感知器分类器的初始权重集。
    X : numpy数组,元素为浮点数
        包含偏置的数据集(第一列为1.0)。
    Y : numpy数组,元素为浮点数
        X每行的标签(-1.0或1.0)。
    maxiter : 整数
        允许的最大迭代次数。
    reorder : 布尔值
        是否重新排序训练样本及其标签。
    返回值
    -------
    W : numpy数组,元素为浮点数
        感知器分类器的最终权重集。
    niter : 整数
        成功前的当前迭代次数,或maxiter。
        这只是为了了解收敛所需的迭代次数。
    """

我感到好奇,因为这个算法似乎没有遵循权重的更新,我们之前看到的所有算法都使用了权重更新,实际上我对这个定义不太理解,我以为这个重新排序会打乱训练样本的顺序,但我有点迷惑,不知道如何理解这个算法。附注:请不要用代码回复,我只是想要一个解释。


回答:

嗯,我认为,由于你可以传递reorder=False,重新排序步骤是可选的,所以当它说

然后,它会对所有样本进行迭代,直到正确分类所有样本,或者迭代次数达到maxiter为止。

似乎是在更新/调整权重,直到找到最优解(用超平面分离类别)或达到maxiter。换句话说,它似乎是尊重权重更新的。

如果你能提供方法实现的话会很有帮助,这样我们就能理解重新排序训练集背后的概念或想法了。

除了这种训练方法之外,还可以通过解决线性系统来计算biasweights,例如:X * W = Y。其中X训练样本加上额外的偏置列,W权重数组加上偏置权重,Y训练标签。实际上,我最初以为这就是方法的意图。

在这种情况下,重新排序步骤将有助于将矩阵调整为交错形式或获取一个下三角矩阵。两者都使用集合中的d个样本,其中d是维度(特征数量加上一个,用于偏置)。

请注意,为了解决这个线性系统,你需要将X * W的各个结果(即:X中的一行与W中的唯一一列)视为1或-1。你可以通过将所有高于阈值的结果视为1来实现这一点。否则,视为-1。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注