怀疑感知者

时间:2018-04-24 04:03:03

标签: machine-learning perceptron

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

def ClassicPerceptron(W,X,Y,maxiter=1000,reorder=True):
    """ClassicPerceptron function implements the most basic perceptron. 

    This algorithm starts by reordering the training samples and their labels
    if reorder is equal to True. Then, it iterates for all the samples, as many
    times as it takes, to correctly classify all the samples, or until the number 
    of iterations reaches maxiter.

    Parameters
    ----------
    W : numpy array of floats
        The initial set of weights for the perceptron classificator.
    X : numpy array of floats
        The dataset with the bias (first column is equal to 1.0).
    Y : numpy array of floats
        The labels (-1.0, ou 1.0) for each line of X.
    maxiter : integer
        The maximum number of iterations allowed before stopping.
    reorder : boolean
        reorder the training samples and their labels.

    Returns
    -------
    W : numpy array of floats
        The last set of weights for the perceptron classificator.
    niter : integer
        The current number of iterations until success, or maxiter. 
        This is just to have an idea on how many iterations it took 
        to converge.

    """

我觉得好奇,因为算法不尊重权重的更新,因为我们都看到到现在都使用权重的更新,实际上我不太了解这个定义,我想这个重新排序会洗牌训练的例子,但我有点失落,就像一个如何顶尖这个算法的光。 PS:请不要回复代码,只是喜欢解释。

1 个答案:

答案 0 :(得分:0)

嗯,我看到它的方式,因为你可以通过reorder=False,重新排序步骤是可选的,所以当它说

  

然后,它会为所有样本迭代所需的次数,以正确分类所有样本,或直到迭代次数达到最大值。

它似乎正在更新/调整权重,直到它正确找到最佳解决方案(用超平面分隔类)或直到达到maxiter。换句话说,它似乎尊重权重的更新

如果可能的话,你可以提供方法实施,这将是有帮助的,因此可以理解重新排序训练集背后的概念或想法。

除了这种训练方法,人们可以通过求解线性系统来计算biasweights,例如:X * W = Y。其中X培训样本加上额外的偏向列,W 权重数组加上偏差权重和Y < strong>培训标签。事实上,乍一看,我认为这就是方法意图。

在这种情况下,重新排序步骤有助于以交错的形式获取矩阵或获得lower triangular matrix。两者都使用集合中的d个样本,其中d是维度(特征量加1,偏差)

请注意,为了解决这个线性系统,您需要考虑X * W个别结果(即:X中的一行,而W中的唯一一列)为1或-1。您可以通过将limiar上方的每个结果都视为1来实现此目的。否则,-1。