什么是梯度下降:
梯度下降可以理解为你站在山的某处,想要下山,此时最快的下山方式就是环顾四周,哪里最陡峭,朝哪里下山,一直执行这个策略,在第N个循环后,你就到达了山的最低处。
在这里不得不提一下一个重要的概念,下山的步长——a,当步长过于大时,就会出现下面这种情况:
此时易错过山底,a特别小时虽然精准,但计算量大,耗时长,所以a的大小至关重要,要选择合适的大小。
看完上面的描述你可能依然有疑惑,天哪,这是什么鬼??
那我们就从如何找到一元函数的最小值来彻底了解梯度下降法
首先,任意给一个出发点xold和a,朝函数变化最快的反方向前进,不少同学会问,为什么朝反方向前进,因为我们要找的是最小值,朝正方向前进找的是最大值,我们当然要朝反方向前进了,所以我们称之为梯度下降而不是上升,那函数变化最快的方向是什么呢?当然是求导了,求导后朝反方向前进a后,
此时的位置变成了xnew=xold-af'(x),此时我们要判断是否找到最小值,即判断Δx=af'(x)是否小于ε(一个非常小的数),
为什么Δx可以决定是否找到最小值呢?当然是因为我们越靠近最小值时,f'(x)就越来越接近0了,Δx就变得非常小了。
如果Δx大于ε,那就在xnew的位置上继续找方向前进,直到Δx小于ε或是迭代次数达到最大。
接下来我们就来了解一下什么是矩阵分解
这是一个R[5,4]的矩阵图,U代表着不同的观影者,D代表着不同的电影,当你看完电影时,我们会对其做个评分,当然,当我们心情不好时我们懒得对其做评分,那么我们可以用矩阵分解的方法来进行预测没有评分的评分。
步骤如下:
聪明的你,看到要求损失函数的最小值,会想到什么呢?
当然是梯度下降法了。
不过用这种方法会出现过拟合的问题,因此我们可以增加正则化项。
与前面的方法相比,只不过是增加了一个正则化项。
通过上面的方法我们得到了P和Q的矩阵,从而就能得到观影者i对电影j的评分。