二、机器学习之回归模型分析

一、回归模型

1.1 回归模型定义

回归模型是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。也就是我们高中所说的一次函数问题

1.2 回归模型分析方法

回归分析是研究一个变量(被解释变量)关于另一个(些)变量(解释变量)的具体依赖关系的计算方法和理论是建模和分析数据的重要工具。
在这里,我们使用曲线或线来拟合这些数据点,在这种方式下,从曲线或线到数据点的距离差异最小。下面是回归分析的几种常用的方法

  • 线性回归( Linear Regression)
  • 逻辑回归(Logistic Regression)
  • 多项式回归(Polynomial Regression)
  • 岭回归(Ridge Regression)

这四种是在机器学习中常见的回归分析方法,下面来一一分解一下:

二、回归分析

2.1 线性回归和多项式回归

2.1.1 线性回归定义

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w’x+e,e为误差服从均值为0的正态分布。

回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析

2.2.2 代码实现分析:
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import random
plt.rcParams["font.sans-serif"]=["simhei"]
plt.rcParams["axes.unicode_minus"]=False
%matplotlib inline
ex0=pd.read_table("ex0.txt",header=None)
ex0.head()

在这里插入图片描述
获得特征矩阵

def get_Mat(dataSet):
    xMat=np.mat(dataSet.iloc[:,:-1].values)
    yMat=np.mat(dataSet.iloc[:,-1].values).T
    return xMat,yMat

采样展示数据

xMat,yMat=get_Mat(ex0)
def plotshow(dataSet):
    xMat,yMat=get_Mat(dataSet)
    plt.scatter(xMat.A[:,1],yMat.A,c="b",s=5)
    plt.show()

plotshow(ex0)

在这里插入图片描述
获得线性回归画图

def satandRegres(dataSet):
    xMat,yMat=get_Mat(dataSet)
    xTx=xMat.T*xMat
    if np.linalg.det(xTx)==0:
        print("矩阵为奇异矩阵,无法求逆")
        return
    ws=xTx.I*(xMat.T*yMat)
    return ws
#打印回归函数
def plotReg(dataSet):
    xMat,yMat=get_Mat(dataSet)
    plt.scatter(xMat.A[:,1],yMat.A,c="b",s=5)
    ws=satandRegres(dataSet)
    yHat=xMat*ws
    plt.plot(xMat[:,1],yHat,c="r")
    plt.show()
plotReg(ex0)

在这里插入图片描述

xMat,yMat=get_Mat(ex0)
ws=satandRegres(ex0)
yHat=xMat*ws
np.corrcoef(yHat.T,yMat.T)

在这里插入图片描述
可得相关系数

2.2 逻辑回归

2.2.1 逻辑回归定义

Logistic Regression(简称LR)擅长处理分类问题(用户点击率、用户违约信息预测、垃圾邮件检测、疾病预测、和用户等级问题(多分类问题))

其结果是在于线性回归的基础上加上了一个,sigmold函数(也就是分类函数):

sigmoid函数表达式如下:
f ( x ) = 1 / ( 1 + e y ) f(x)=1/(1+e^y) f(x)=1/(1+ey)

2.2.2 代码说明
import numpy as np
import math
import matplotlib.pyplot as plt
%matplotlib inline

X=np.linspace(-5,5,200)
y=[1/(1+math.e**(-x)) for x in X]
plt.plot(X,y)
plt.show()

在这里插入图片描述

其结果是先模型出数据的线性回归,在根据sigmold函数将原来的y值和标准的y^大于0的可以分为正类,小于0的分为负类

2.3 多项式回归

2.3.1 多项式回归定义

多项式回归,回归函数是回归变量多项式的回归。多项式回归模型是线性回归模型的一种,此时回归函数关于回归系数是线性的。

直线回归研究的是一个依变量与一个自变量之间的回归问题,但是,在畜禽、水产科学领域的许多实际问题中,影响依变量的自变量往往不止一个,而是多个,比如绵羊的产毛量这一变量同时受到绵羊体重、胸围、体长等多个变量的影响,因此需要进行一个依变量与多个自变量间的回归分析,即多元回归分析。
在这里插入图片描述

2.4 岭回归

2.4.1 岭回归定义

岭回归(英文名:ridge regression, Tikhonov regularization)是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。

通常岭回归方程的R平方值会稍低于普通回归分析,但回归系数的显著性往往明显高于普通回归,在存在共线性问题和病态数据偏多的研究中有较大的实用价值。

2.4.2 岭回归函数
def get_Mat(dataSet):
    xMat=np.mat(dataSet.iloc[:,:-1].values)
    yMat=np.mat(dataSet.iloc[:,-1].values).T
    return xMat,yMat

'''函数功能:
            使用岭回归来计算归系数
    参数说明:lam:认为设定惩罚系数
'''
def rigdeRegres(dataSet,lam=0.2):
    xMat,yMat=get_Mat(dataSet)
    xTx=xMat.T*xMat
    denom=xTx+np.eye(xMat.shape[1])*lam
    ws=denom.I*(xMat.T*yMat)
    return ws

三、回归模型的评价

对于回归模型效果的判断指标经过了几个过程,从SSE到R-square再到Ajusted R-square, 是一个完善的过程:

3.1 均方误差(mean squared error,mse)

定义:观察值与真实值偏差的平方和与观察次数的比值,

公式:

在这里插入图片描述

描述:这就是线性回归中最常用的损失函数,线性回归过程中尽量让该损失函数最小。那么模型之间的对比也可以用它来比较。MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。

3.2 标准误差(rmse)

定义:标准差是方差的算术平方根,标准误差是均方误差的算术平方根。
描述标准差是用来衡量一组数自身的离散程度,而均方根误差是用来衡量观测值同真值之间的偏差,它们的研究对象和研究目的不同,但是计算过程类似。

公式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f04xD8Wa-1616064049707)(attachment:image.png)]

它的意义在于开个根号后,误差的结果就与数据是一个级别的,可以更好地来描述数据。标准误差对一组测量中的特大或特小误差反映非常敏感,所以,标准误差能够很好地反映出测量的精密度。这正是标准误差在工程测量中广泛被采用的原因

3.3 平均绝对误差(MAE)

在这里插入图片描述

平均绝对误差能更好地反映预测值误差的实际情况

3.4 R-squared

在这里插入图片描述

上面分子就是我们训练出的模型预测的误差和。
下面分母就是瞎猜的误差和。(通常取观测值的平均值)

变形:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R1aHYkMT-1616064049716)(attachment:image.png)]

3.5 解释方差(explained variance score)

公式:在这里插入图片描述

解释:
可解释方差指标衡量的是所有预测值和样本之间的差的分散程度与样本本身的分散程度的相近程度。本身是分散程度的对比。最后用1-这个值,最终值越大表示预测和样本值的分散分布程度越相近。
最后本文如有错误,请您指正,感谢您的阅读,谢谢。

路漫漫其修远兮,吾将上下而求索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值