概要:
多变量线性回归:
特征缩放:
X=(X—u)/S;
其中X:某一特征单个值,u:某一特征的平均值;S:某一特征的标准差或(最大值—最下值)。
为什么要特征缩放呢?目的是确保特征都具有相似的尺度,尝试把每个特征尺度缩放到-1和1之间。
假设函数:
代价函数:
梯度下降:
注意:在使用梯度下降时,应批量同时更新。式中,a为学习率,m为训练集样本个数。
实际问题:
假设你正在出售你的房子,你想知道一个好的市场价格是什么。一种方法是首先收集最近出售的房屋的信息,并建立房价模型。文件ex1data2.txt包含某地的一组房价信息。第一栏是房子的大小(平方尺),第二栏是卧室的数目,第三栏是房子的价格。并预测出你的房子能卖多少钱。
本文采用Python解决该实例问题。
第一步,当拿到数据,对数据导入并进行预处理。预处理包括:特征缩放,增加偏差项,提取X和y项,并矩阵化。
运行查看预处理后的数据
第二步,定义代价函数。代价函数的理解,前篇文章已经叙述过,在此不在赘述。
第三步,定义梯度下降算法,通过梯度下降求得最小的代价函数值,以及相应的系数矩阵theta。
第四步,对学习率a和循环次数进行赋值,并进行预测。
运行查看结果
最后,我们来绘制梯度下降过程中,代价函数值的变化过程。
查看运行后所得的图形
不难发现,代价函数值是收敛的,找到适合的系数矩阵来拟合数据。
补充:
在线性回归中,不难发现,我们做的就是要找到符合条件的系数theta矩阵满足方程 X*theta=y,梯度下降算法很常用,在以后的逻辑回归中,仍继续使用梯度下降算法。但对于线性回归,可以使用线性代数的方法,直接来计算theta。我们把这种方法称作 正规方程法(Normal Equation)。
一般少于10000个特征(就是10000个变量,而不是值10000个样本)的线性回归下,我们可以直接使用正规方程法。
下面来展示使用正规方程法来对该应用实例的求解
运行查看结果
两者比较,最后所预测的结果还是有些差别的,不过并不大。
领取专属 10元无门槛券
私享最新 技术干货