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

Cant understand the number of iteration in linear regression (Machine Learning)

这几天我一直在努力研究机器学习。我正在网上看视频和文章。
this 视频中。 Siraj(视频中的人)教过如何使用 numpy 和 python 从头开始​​创建梯度下降。这是代码:-

import numpy as np

ERROR = []

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_m

def 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,m


def 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 循环中设置条件 'go till the lowest value of the cost function',您首先必须知道该值是什么。在程序完成收敛之前,您不会知道那会是什么。你不可能事先知道它。

所以你改为 运行 任意数字,在你的情况下,1000,并希望通过这么多次迭代,成本的最小值(或至少是一个合理的值)将达到.

编辑

这就是我在运行输入 10000

的代码后得到的结果
OPTIMIZED:  4.247984440219189
OPTIMIZED:  1.3959992655297515
Error:  110.7863192974508

1000 -

OPTIMIZED:  0.08893651993741346
OPTIMIZED:  1.4777440851894448
Error:  112.61481011613473

当代码运行 1000 次时,错误比我们用 100000 次得到的错误更多。这符合预期。 运行 循环越多,越接近最佳的参数。对于 100000 个纪元,代码将不断调整 b 和 m,直到出现错误或达到 110。对于 1000,它会继续做同样的事情,但一旦达到 1000 就会停止。