机器学习之——多变量线性回归

简介: 在之前的博客中,描述过单变量线性回归(Linear Regression with One Variables)的模型,这次来分享一下多变量线性回归模型(Linear Regression with Multiple Variables)。 我们还是使用之前的问题,对房价的预测。这一次增加更多的特征,例如房子的楼层数、卧室数量等,这样就构成了一个含有多个变量的模型,模型中的特征我们标

在之前的博客中,描述过单变量线性回归(Linear Regression with One Variables)的模型,这次来分享一下多变量线性回归模型(Linear Regression with Multiple Variables)

我们还是使用之前的问题,对房价的预测。这一次增加更多的特征,例如房子的楼层数、卧室数量等,这样就构成了一个含有多个变量的模型,模型中的特征我们标记为(X1,X2,X3,...,Xn)。



增添了更多的特征之后,我们还要引入一些新的标注:


支持多变量的假设函数 h 的表达式为:


我们看到,这个表达式中有n+1个参数和n个变量(ø0没有变量),我们为了使公式能够简化一些,添加一个X0使其的值为1,即:X0=1,这样公式便转化为:


此时,这个模型中的参数是一个n+1维的向量,实际上在多变量回归模型中,任何一个训练集也都是n+1维的向量,特征矩阵X的维度此时是m*n+1。

所以,我们的假设函数 h 的表达式可以简化成:


参数向量ø的转置乘上特征向量X。

到目前,我们得到了模型的假设函数 h ,下一步我们来构建代价函数(Cost Function)

多变量线性回归的代价函数与单变量线性回归的代价函数相似,是所有建模误差的平方和(MSE),即:


我们得到了代价函数,我们的目标也就和单变量线性回归问题中的一样,找出使得代价函数最小的一系列参数。我们也是用批量梯度下降(Batch Gradient Descent)的方法:


将代价函数带入,即:


求导之后,得到:


在初始状态,我们随机选择一系列参数值,计算所有的预测结果之后,再给所有的参数一个新的值,如此循环直到收敛(convergence)

到此,我们已经实现了多变量的线性回归。但是在计算的过程当中,我们发现,有很多时候,参数的取值差距非常大,导致很多时候要进行大量的大数值的计算。在处理多维特征(多变量)的问题时,我们要保证这些特征都具有相近的范围,这样将更好的帮助梯度下降算法更快的收敛。这时,我们可以使用特征缩放(Features Scaling)方法。

我们还是以放假预测问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量。房屋的尺寸范围在 0 ~ 2000 平方英尺, 房间数量在 0 ~ 5 , 以这两个参数为横纵坐标,绘制代价函数的等高线图能看出图像会显得很扁,梯度下降算法要执行很多次迭代才能收敛。


特征缩放解决这个问题,是尝试将所有特征的取值范围尽量都缩放到 -1 ~ 1 之间。最简单的方法是令 :


其中,Xn代表第n个特征,µn代表平均值(AVE),Sn代表标准差(SD)

梯度下降算法的表达式中,有一个alpha学习速率(Learning Rate)。算法所需要的迭代次数根据模型的不同而不同,我们这方面不能够提前预知,我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。


也有一些自动测试是否收敛的方法,例如:将代价函数的变化值与一个常数阈值(0.001)进行比较。但是我个人感觉还是上面的图表更直观一些。

梯度下降算法每次迭代,都会受到学习速率的影响,如果学习速率较小,则达到收敛所需要迭代的次数就会非常高;反之,如果alpha过大,则每次迭代可能都不会减小代价函数的结果,甚至会超过局部最小值导致无法收敛。

通常,在我做一些模型时,我会设置学习速率的值在 0.01,0.03,0.1,0.3,1,3,10 这些参考值。

综上,就是多变量线性回归模型的主要内容。下一次将给大家分享 多项式回归于正规方程(Polynomial Regression and Normal Equation)


相关文章
|
14天前
|
机器学习/深度学习 人工智能 算法
探索机器学习:从线性回归到深度学习
本文将带领读者从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过代码示例,展示如何实现这些算法,并解释其背后的数学原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。让我们一起踏上这段激动人心的旅程吧!
|
27天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。
|
29天前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
7月前
|
机器学习/深度学习 算法 TensorFlow
机器学习算法简介:从线性回归到深度学习
【5月更文挑战第30天】本文概述了6种基本机器学习算法:线性回归、逻辑回归、决策树、支持向量机、随机森林和深度学习。通过Python示例代码展示了如何使用Scikit-learn、statsmodels、TensorFlow库进行实现。这些算法在不同场景下各有优势,如线性回归处理连续值,逻辑回归用于二分类,决策树适用于规则提取,支持向量机最大化类别间隔,随机森林集成多个决策树提升性能,而深度学习利用神经网络解决复杂模式识别问题。理解并选择合适算法对提升模型效果至关重要。
253 4
|
1月前
|
机器学习/深度学习 数据采集 算法
探索机器学习中的线性回归
【10月更文挑战第25天】本文将深入浅出地介绍线性回归模型,一个在机器学习领域中广泛使用的预测工具。我们将从理论出发,逐步引入代码示例,展示如何利用Python和scikit-learn库实现一个简单的线性回归模型。文章不仅适合初学者理解线性回归的基础概念,同时也为有一定基础的读者提供实践指导。
|
7月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】解释什么是线性回归?
【5月更文挑战第15天】【机器学习】解释什么是线性回归?
|
2月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
探索机器学习:从线性回归到深度学习
在这篇文章中,我们将一起踏上一场激动人心的旅程,穿越机器学习的广阔天地。我们将从最基本的线性回归开始,逐步深入到复杂的深度学习模型。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深入的理解。让我们一起探索这个充满无限可能的世界吧!
|
2月前
|
机器学习/深度学习 API
机器学习入门(七):线性回归原理,损失函数和正规方程
机器学习入门(七):线性回归原理,损失函数和正规方程
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习:从线性回归到深度学习
【9月更文挑战第4天】在这篇文章中,我们将深入探讨机器学习的世界,从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过实际的代码示例,揭示这些模型背后的数学原理,以及如何在现实世界的问题中应用它们。无论你是初学者还是有经验的数据科学家,这篇文章都将为你提供新的视角和深入的理解。
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习的奥秘:从线性回归到深度学习
【8月更文挑战第26天】本文将带领读者走进机器学习的世界,从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将探讨各种算法的原理、应用场景以及实现方法,并通过代码示例加深理解。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的知识和技能。让我们一起揭开机器学习的神秘面纱,探索这个充满无限可能的领域吧!