摘要:回归算法是监督型算法的一种,其通过利用训练集数据来建立学习模型,再利用这个模型去预测一些测试集数据。本文主要介绍线性回归、逻辑回归以及一些基于线性回归加入正则项后的回归模型,并对其相应特点以及应用场景等都进行了一定的介绍。针对线性回归和逻辑回归模型,具体介绍了梯度下降原理及其应用。利用线性回归模型进行了人口与生产利益值的训练与预测,以及采用逻辑回归模型进行了两门考试的训练与预测。最后利用美国波士顿房价的数据利用线性回归模型的进行了房价的预测,并通过均方误差进行了预测评价。
线性回归
模型介绍
线性回归的定义为目标值预期是输入变量的线性组合。线性模型形式简单,易于建模,利用数理统计中的回归分析,来确定两种或两种以上变量之间相互依赖的定量关系,但对于非线性的数据的拟合效果不好。
例如课中所讲根据房子的大小x来预测房子的价格y,两者满足单变量线性方程关系,将此线性方程看作为回归的模型,则对于给予的每一个房子大小,我们都可以预测出它的价格。其通用模型公式为:
对于多变量的回归,举一个别的例子,销售量y,其不仅受商品的大小x1影响,还受到商品的价格x2的影响。则满足的模型公式为:
损失函数
模型设定好之后,将训练数据代入到上式中,就可以得到一个预测值:
等式左侧为训练样本的真实值,右侧为训练模型预测值,加上真实值和预测值差。
梯度下降
对于损失函数优化有两种方法:矩阵运算和梯度下降。矩阵运算具有一定的局限性,即要求矩阵需要可逆,因此这里只介绍梯度下降。
梯度下降可以理解为:先假定一个定点,然后按照一定的步长顺着这个点的梯度进行更新迭代,最后能够找到一个局部最优点,使损失函数在这个局部最优点的值最小。
线性回归梯度下降图
从图像我们可以看出,当模型的复杂度提高的时候,训练集的数据拟合很好,但会出现过拟合现象,因此需要在损失函数中添加惩罚项。
线性回归用梯度下降实现实战
采用的数据来自文件夹Regression中的linear_regression_data1.txt,其中体现的是人口x和收入y的关系。利用梯度下降进行线性回归,同时将结果与Scikit_learn中的拟合结果进行对比,看出来效果比较好。
数据分布
数据分布图
损失函数,梯度下降函数
函数步骤图
迭代次数与损失值关系图
拟合效果
梯度下降与Scikit_learn对比拟合效果图
预测结果
预测结果图
线性回归应用案例
参照CSDN上的一篇博文,即使用sklearn中内置的回归模型对“美国波士顿房价”的数据进行预测。在这里进行学习总结,相关数据可从kaggle官网上获取。
数据描述
from sklearn.datasets import load_boston
boston = load_boston()
print boston.DESCR
数据分割
from sklearn.cross_validation import train_test_split
import numpy as np
X = boston.data
y = boston.target
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=33