前边我们讨论了单个变量的线性回归,也就是只有一个变量,即房屋的面积。
现在我们讨论一下如果有多个变量的话,比如房间面积,房屋数量,房屋环境,房子的建造年代,物业等等特征,我们又该如何计算。
现在我们在前面代表的基础上扩展一下注释:
n : 代表特征的数量
:代表第i个训练实例,是特征矩阵的第i行,就是一个向量
h:代表支持多变量的一个假设,在这里我们用表示,为了表示方便,我们设=1
多变量的时候,数据集就可以这样表示:X = 。。。一共是m个样本训练集,所以这可以组成一个(n+1)* m的矩阵。
参数也可以组成一个矩阵 =
所以函数假设可以简单写成 = .我们然后针对多变量线性回归建立一个代价函数,理论上和前边的单变量一致,。
然后线性回归的流程和单变量的一样,唯一的一点区别就是,需要更新的参数更多一点(好像没啥写的了)
注1:数据集处理
我们在面临数据集的特征问题时,很多时候的某个特征数值范围太大,而另一个特征的数值范围太小,这个时候的图像会非常扁,梯度下降会需要很多次的迭代才能收敛。所以我们需要将数据进行处理。想要达到的目的就是将所有特征的尺度都缩放到-1 到 1 之间。
最简单的方法就是令,n = 0,1,2,3,4,5,6.....n。 其中,x是特征值,miu是这个特征值的平均值。s是这个特征值的标准差(或者说是这个特征的范围)。
结果可以是这样子的:
注2:学习率
梯度下降算法的每次迭代受到学习率的影响,如果学习率?过小,则达到收敛所需的迭 代次数会非常高;如果学习率?过大,每次迭代可能不会减小代价函数,可能会越过局部最 小值导致无法收敛。可以尝试的学习率是:? = 0.01,0.03,0.1,0.3,1,3,10。
注3:特征和多项式回归
线性回归不适合任何数据,有的时候,曲线对我们的主句更加契合,二次函数,或者三次函数。通常我们需要先观察数据然后再决定准备尝试怎样的模型。
注4:正规方程
正规方程对于某些线性回归问题是更好的解决方案。对于不可逆的矩阵,正规方法不可用。
由于, 那么经过矩阵运算,可以得到,然后经过运算就可以得出参数的值。
梯度下降与正规方程的比较: