机器学习系列1:线性回归

不羁的心 提交于 2019-12-10 20:44:30

写在前面:机器学习主要分为监督学习、无监督学习和强化学习。本节内容主要针对监督学习下的线性回归进行简要说明及实现。机器学习开篇模型就是线性回归,简言之就是用一条直线较为准确的描述数据之间的关系,当出现新的数据的时候的时候,给出一个简单的预测值。

 

一、回归问题

  回归问题是监督学习的一个重要问题,回归用于预测输入变量(自变量)和输出变量(因变量)之间的关系,特别的当输入变量的值发生变化时,输出变量的值随之发生改变。回归模型正是表示输入变量到输出变量之间映射的函数。

  回归按照输入变量的个数,分为一元回归多元回归

  回归按照输入变量和输出变量的关系类型,分为线性回归非线性回归 

  

  回归问题分为学习和预测两个过程,首先给定一个训练数据集:

    T={(x1,y1),(x2,y2),...,(xN,yN)}

这里xi€Rn是输入,y€R是对应的输出,i=1,2,...,N.

二、线性回归

  • 假定:模型假定服从线性关系,即 y = ax+b or y = a1x1+a2x2+...+aNxN

  输出为离散的就是分类,输出为连续值就是回归,而我们初中学过的直线方程就是线性的。所以线性回归就是用线性的线来拟合一些回归的值。

  • 损失函数:常用的是平方损失

  平方损失即欧氏距离,用来衡量预测值和真实值之间的距离误差的函数,这就是我们模型的一个评价标准,值越小说明我们越能拟合数据,反之值越大就说明模型的拟合能力越差。 

  ∑i=1(y(i)-y_hat(i))2

  • 求解:最小二乘法

三、实战

  • 数据准备

   y = 0.568*X + 0.283 + ε,ε服从高斯分布

  用上面的式子产生真实数据样例,ε添加给模型的噪声,噪声满足均值为0,方差为0.1的高斯分布,随机采样100次,作为模型的训练数据。

  

data = []
#构造样本数据
for i in range(100):
    x = np.random.uniform(-10.,10)
    eps = np.random.normal(0.,.1)#高斯噪声
    y = 1.568*x + 0.283 + eps
    data.append([x,y])
data = np.array(data)

 

  • 误差计算

  计算每个点(x(i),y(i))处的预测值和真实值之间差的平方并累加,得到训练集上的均方误差损失值。

def mse(b,w,points):
    err = 0#训练集总的误差累积
    for i in range(0,len(points)):
        x = points[i,0]
        y = points[i,1]
        err += (y - (w*x + b))**2
    return err / float(len(points))#得到平均误差

  

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!