无法理解线性回归中的迭代次数(机器学习)

我在过去几天里一直试图理解机器学习。我在互联网上观看了各种视频和文章。
这个视频中。视频中的@人名教我们如何从头开始使用numpy和python创建梯度下降法。以下是代码:

import numpy as npERROR = []def compute_error_for_given_points(b, m, points):    total_error = 0.0    for i in range(0,len(points)):        x = points[i,0]        y = points[i,1]        total_error += (y-(m * x + b))**2    return total_error/float(len(points))def step_gradient(b_current, m_current, points, learning_rate):    b_gradient = 0    m_gradient = 0    N = float(len(points))    for i in range(0,int(N)):        x = points[i, 0]        y = points[i, 1]        b_gradient += -(2/N) * (y- (m_current*x + b_current))        m_gradient += -(2/N) * x * (y- (m_current*x + b_current))    new_b = b_current - (learning_rate * b_gradient)    new_m = m_current - (learning_rate * m_gradient)    return new_b,new_mdef gradient_descent_runner(points,starting_b,starting_m,learning_rate,num_iteration):    b = starting_b    m = starting_m    for i in range(num_iteration):        ERROR.append(compute_error_for_given_points(b,m,points))        b, m  = step_gradient(b, m, points, learning_rate)    return b,mdef run():    points = np.genfromtxt('data.csv',delimiter=',')    #print(type(points))    #print(points)    #hyperparameter    learning_rate = 0.0001    #y = mx + b    initial_b = 0    initial_m = 0    num_iteration = 100000    b,m = gradient_descent_runner(points,initial_b,initial_m,learning_rate,num_iteration)    print("OPTIMIZED: ",b)    print("OPTIMIZED: ",m)    print("Error: ",compute_error_for_given_points(b,m,points))    print("\n")    #print(ERROR)if __name__ == '__main__':    run()

我理解所有的数学和微积分内容。但我无法理解变量num_iteration的概念。他建议使用1000次迭代,得到了一些bm的值。但当我使用超过1000次时,得到的bm的值不同。而且在使用num_iteration的循环中,我们不能用一个while循环来替代吗,条件是直到我们得到成本函数的最低值?所以,如果你们能给我一些关于这个num_iteration变量的见解,那将非常有帮助。
提前感谢


回答:

要在while循环中设置一个条件说“直到成本函数的最低值”,你首先需要知道那个值会是什么。你不会知道那个值,直到程序完成收敛。你无法事先知道它。

所以你让它运行一个任意次数,在你的例子中是1000次,并希望通过这么多次迭代,能够达到成本的最小值(或至少是一个合理值)。

编辑

这是我在运行代码10000次后的结果

OPTIMIZED:  4.247984440219189OPTIMIZED:  1.3959992655297515Error:  110.7863192974508

对于1000次 –

OPTIMIZED:  0.08893651993741346OPTIMIZED:  1.4777440851894448Error:  112.61481011613473

当代码运行1000次时,与运行100000次相比,误差更大。这是预期的结果。你运行的循环次数越多,参数就越接近最优值。运行100000次迭代,代码会不断调整b和m,直到达到110的误差。运行1000次,它会做同样的事情,但一旦达到1000次就会停止。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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