不能让逻辑回归的成本函数工作

本文关键字:函数 工作 回归 不能 | 更新日期: 2023-09-27 18:14:00

我试图通过自己在c#中编写代码来实现逻辑回归。我找到了一个库(Accord.NET),我用它来最小化成本函数。但是我总是得到不同的最小值。因此,我认为我写的成本函数可能有问题。

static double costfunction(double[] thetas)
    {
        int i = 0;
        double sum = 0;
        double[][] theta_matrix_transposed = MatrixCreate(1, thetas.Length);
        while(i!=thetas.Length) { theta_matrix_transposed[0][i] = thetas[i]; i++;}
        i = 0;
        while (i != m) // m is the number of examples
        {
            int z = 0;
            double[][] x_matrix = MatrixCreate(thetas.Length, 1);
            while (z != thetas.Length) { x_matrix[z][0] = x[z][i]; z++; } //Put values from the training set to the matrix
            double p = MatrixProduct(theta_matrix_transposed, x_matrix)[0][0];
            sum += y[i] * Math.Log(sigmoid(p)) + (1 - y[i]) * Math.Log(1 - sigmoid(p));
            i++;
        }
        double value = (-1 / m) * sum;
        return value;
    }
    static double sigmoid(double z)
    {
        return 1 / (1 + Math.Exp(-z));
    }

x是代表训练集的列表的列表,每个特征一个列表。代码有什么问题?为什么每次运行L-BFGS都会得到不同的结果?谢谢你的耐心,我刚刚开始学习机器学习!

不能让逻辑回归的成本函数工作

这在这些优化算法中是很常见的——你得到的最小值取决于你的权重初始化。你得到不同的最小值并不一定意味着你的实现出了问题。相反,使用有限差分方法检查你的梯度以确保它们是正确的,并查看你的训练/验证/测试准确性,看看它们是否也是可接受的。