机器学习算法之线形回归模型(Linear Regression算法,Python版本)

线形回归(Linear Regression)模型是极其学习中最为基础的一类算法,下面作者通过网络检索学习并基于自己的理解进行简单的学习汇总。

线形回归的概念在中学就接触过,说的直白一些就是数据的曲(直)线拟合,便于我们进行预测分析,比如在吴恩达老师的《machine learning》课程中提到的通过已有的房屋价格和房子面积之间的关系来预测房子价格。

我们假设数据满足基本的线性模型,如图1所示,需要做的就是找出其中的各项拟合系数。

图1 线性模型示例

建立线性回归模型的基本方法通常可以采用两种,分别是梯度下降法以及正规矩阵法。

1、梯度下降法

梯度下降属于优化设计中的算法,基于某个起始点,通过梯度控制行进的方向逐次搜索获得局部最优解,这是梯度下降法的基本思想。这里使用梯度下降法主要是用于计算代价函数的最优解,通过迭代搜索得到,如图2所示。

图2 梯度下降法

在迭代过程中,以梯度作为更新的方向,引入学习速率(learning rate,a)来控制更新搜索的步长,如图3所示。

图3 更新迭代

2、正规矩阵法

正规矩阵来源于极值问题的求解,为了求解代价函数的最值问题求解导数,当导数为0时极值点有最值。于是我们有图4所示的推导过程。我们将代价函数换一种写法,然后求导,求导过程中需要参考向量、矩阵的求导公式,直达链接:机器学习算法推导过程中的数学基础知识

需要注意的求解正规矩阵的时候需要对矩阵求解逆运算,所以这里的基本要求就是矩阵能够求逆,否则该方法无法进行。矩阵的运算在python及matlab中都非常方便,因此使用正规矩阵求解线形回归问题使用起来是相对简单的,不过当矩阵较大时候,求逆比较费时。

图4 正规矩阵推导

下面基于python语言进行程序的编写,供参考,数据来源:LINEAR REGRESSION IMPLEMENTATION IN PYTHON,如下所示基本的数据内容。

150 6450
200 7450
250 8450
300 9450
350 11450
400 15450
600 18450

在进行程序编写得时候,需要多数据进行简单的处理,主要是防止过拟合,同时能够提高求解速度和精度,很多时候如果不做这个处理,求解汇报错超出“overflow encountered in double_scalars”。数据归一化采用min-max标准化,采用公式定义:(X-Min)/(Max-Min)。

代码结构如下:

运行结果:

拟合曲线为:y=1.04*x-0.02

参考:

1.线性回归原理和实现基本认识

2.python 线性回归示例

 

%1 $ S

发表评论

电子邮件地址不会被公开。 必填项已用*标注