感知器的疑惑

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

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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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