机器学习笔记 - week2 -(四、多变量线性回归 Part1)


4.1 多维特征

房价多维特征

现在我们对房价模型增加更多的特征,构成一个含有多个变量的模型,模型中的特征为
增添更多特征后,我们引入一系列新的注释:

  • 代表特征的数量
  • 代表第 个训练实例,是特征矩阵中的第行,是一个向量(vector), 为
  • 代表特征矩阵中第 行的第 个特征,也就是第 个训练实例的第 个特征, 例 = 1416。

支持多变量的假设 表示为:, 为了使得公式能够简化一些,引入, 则公式转化为:


模型中的参数是一个维的向量( ),任何一个训练实例也都是维的向量( )
因此公式
可以简化为:h_{\theta} \left( x \right)={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}=\begin{bmatrix} \theta_{1}, \theta_{2}, ... ,\theta_{n} \end{bmatrix} * \begin{bmatrix} x_{1} \\ x_{2} \\ .\\ . \\ x_{n} \end{bmatrix}={\theta^{T}}X


4.2 多变量梯度下降

与单变量线性回归类似,在多变量线性回归中,我们也构建一个代价函数 (所有建模误差的平方和) ,即:


和单变量线性回归问题中一样,是要找出使得代价函数最小的一系列参数。
多变量线性回归的批量梯度下降(batch gradient descent)算法的公式为:
\text{repeat until convergence } \{ \\ \theta_{j}\text{ := } \theta_{j} - \alpha \frac {\partial } {\partial \theta_{j}} J \left( \theta_{0},\theta_{1},..., \theta_{n} \right) \\ \} \\ \text{( for j = 0 and j = 1 )}
算法公式讲解:

  •     是学习率(learning rate)

  •     是代价函数的梯度。

  •     可以求导化简为 , 最终得到批量梯度下降算法的公式:
                                               \text{repeat until convergence } \{ \\ \theta_{i} \text{ := } \theta_{i} - \alpha \frac{1}{m} \sum_{i=1}^{m} \left( \left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right) \cdot {x}^{(i)} \right) \\ \} \\ \text{( for j = 0 and j = 1 ) }


刚开始时我们随机选择一系列的参数值(我习惯都赋予),计算所有的预测结果后,再给所有的参数一个新的值,如此循环直到收敛。


Python 代码:

def computeCost(X, y, theta):
  inner = np.power(((X * theta.T) - y), 2)
   return np.sum(inner) / (2 * len(X))

4.3 梯度下降法实践1-特征缩放

在我们面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。

以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000平方英尺,而房间数量的值则是0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。

从梯度下降迭代上看,每次迭代使用的公式为: , 参数 受 特征 影响, 如果特征值差别过大, 势必造成特征值大的维度对应参数的更新非常剧烈,特征值小的维度对应参数的更新非常缓和。


解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间。 归一化算法:

  • min-max标准化(Min-Max Normalization):
  • 0均值标准化(z-score标准化): , 其中 是平均值,是标准差。
                               

4.4 梯度下降法实践2-学习率

梯度下降算法的每次迭代受到学习率的影响,如果学习率过小,则达到收敛所需的迭代次数会非常高;如果学习率过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。

通常可以考虑尝试些学习率


4.5 特征和多项式回归

image.png

线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个二次方模型: 或者三次方模型:

我们可以令:, ,从而将模型转化为线性回归模型。

你可能感兴趣的:(机器学习笔记 - week2 -(四、多变量线性回归 Part1))