机器学习中回归模型的设计

一、背景
在机器学习的范畴中,回归是放在监督学习模块中(机器学习分为:监督学习/非监督学习/半监督学习/深度学习)。简单来说,监督学习就是数据有标准的答案(标签),而算法的目的是在一定程度上展示其内在规律。这个内在规律由于算法的不同和数据的不同有时候会有不同的表现,甚至我们的算法并不去找到这个规律,只是在认可其稳定存在的基础上,描述和预测数据。统计学相对机器学习,在展示数据规律这个目的上,表现的要高。但是另一方面,当数据的分布规律难以描述时,同时数据量横向纵向都变大时,就需要机器学习即算法这个工具了。机器学习相对于传统的统计学,弱化了数据的分布要求,强化了计算功能。具体来说,机器学习中的回归算法是属于监督算法,并且其标签是连续值。
二、目标函数
对于监督学习,目标函数是平均误差函数。
在这里插入图片描述
特别的,对于线性回归,
在这里插入图片描述
在这里插入图片描述
其中:m:训练数据集的大小
X:输入变量,是向量
Y:输出变量,是实数
(x,y):一个训练实例
(xi,yi):第i个训练实例
假设:
在这里插入图片描述
其中,h_θ (x)表示以θ为参数。对于一般问题,公式如下:
在这里插入图片描述
X是向量,n是X的长度,x_0=1
三、计算方法
目标是找到一组θ,使得J(θ)的值最小。这类问题称为无约束最优问题。梯度下降法就是解决该类问题的一种方法。梯度下降法:Gradient descent 又叫 steepest descent,是利用一阶的梯度信息找到函数局部最优解的一种方法,也是机器学习里面最简单最常用的一种优化方法。在此处,由于J(θ)是一个凸函数,故它的局部最优就是全局最优。
在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。
梯度的几何意义就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x_0,y_0),沿着梯度向量的方向就是(∂f/∂x_0, ∂f/∂y_0)T的方向是(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 (∂f/∂x_0, ∂f/∂y_0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。
梯度下降法的核心思想就是,给定一个初始点,在该点处求其梯度,迭代得到下一个θ点。直到梯度为零时结束。
θ的迭代公式为:
在这里插入图片描述
∝称之为步长,Andrew Ng在公开课上说是在试验中手动选取,此处先取1。
下面计算J(θ)的偏导,先以一个样本为例。
机器学习中回归模型的设计_第1张图片
综上:
(面向一个样本)
在这里插入图片描述
(面向所有的样本)
在这里插入图片描述
由于步长不变,可能导致不能收敛或者收敛太慢。故引出正规方程。
正规方程是通过构造矩阵来求解方程组(该方程组的参数变为θ)的最优值。可以通过构造行列式不等于0的系数矩阵(列不相关)来计算,最优值在凸集的边界上,通过调整系数矩阵来计算最优值。但是正规矩阵的计算量很大,而且只适用于线性模型的系数求优。
下面简要的描述一下正规方程。
首先将数据集写成矩阵的形式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于J(θ_0,θ_1,⋯θ_n )求导令其为0,得
在这里插入图片描述
四、python程序(梯度下降)

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

def func(x):
    return x**2

def dfunc(f,x):
    h=1e-4
    return(f(x+h)-f(x-h))/(2*h)
    
x=np.arange(-6,6,0.01)
y=func(x)
plt.plot(x,y)

def gradient_descent(func,init_x,lr=0.25,epochs=120):
    x=init_x
    res=[x]
    for i in range(epochs):
        grad=dfunc(func,x)
        x=x-grad*lr
        res.append(x)
    return np.array(res)

x=gradient_descent(func,-5,lr=0.8)
t=np.arange(-7.0,7.0,0.01)
plt.plot(t,func(t),c='r')
plt.plot(x,func(x),c='b')
plt.scatter(x,func(x),c='b')

结果如下:
机器学习中回归模型的设计_第2张图片

你可能感兴趣的:(回归模型,机器学习)