机器学习Machine Learning学习笔记——回归Regression

深度学习的课程笔记,参考李宏毅机器学习课程

一、定义

回归是通过输入特征向量来找到函数并输出数值标量。
例如,深度学习应用于自动驾驶领域。我们在无人车上输入每个传感器的数据,例如路况、测量的车辆距离等,并结合回归模型输出方向盘角度。

二、回归模型建立步骤

step1:模型假设,选择模型框架

step2:模型评估,判断众多模型的好坏

step3:模型优化,筛选最优的模型

 三、模型假设-线性模型

1、一元线性模型(单个特征)

以一个特征值x为例,线性模型假设 y=a+b⋅x ,一元线性函数形式,对于不同的a,b值可以得到很多不同的模型

​2、多元线性模型(多个特征)

多个特征值xi,y=b+∑wi·xi,多元线性函数形式,不同的特征值xi对应不同的权重wi

  • xi​:就是各种特征(fetrure) xcp,xhp,xw,xh,⋅⋅⋅
  • wi:各个特征的权重 wcp,whp,ww,wh,⋅⋅
  • b:偏移量

机器学习Machine Learning学习笔记——回归Regression_第1张图片

 

四、模型评估-损失函数

以单个特征值线性模型为例

收集和查看训练数据

     真实数据可视化后结果

机器学习Machine Learning学习笔记——回归Regression_第2张图片

判断模型优劣性质

       传统及经济学回归中,通常通过拟合优度检验,R^2等检验方法对回归的优劣性进行评价判断,在机器学习中,通常通过定义损失函数进行模型的好坏判断,如统计10组原始数据 (y^n−f(xcp^n))^2 的和,其和越小回归模型预测效果越好。

机器学习Machine Learning学习笔记——回归Regression_第3张图片

数学公式推导:

L(f)​=∑​(y^​n−f(xcp^n​))^2,将【f(x)=y】,【y=b+w⋅xcp​】代入有

L(f)=∑​(y^​n−(b+w⋅xcp​^n))^2​

最终定义 损失函数 Loss function:L(w,b)=∑(y^n−(b+w⋅xcp^n))^2

五、最优模型选择-梯度下降

以单个特征值一元线性回归模型为例

已知损失函数是 L(w,b)=∑(y^n−(b+w⋅xcp))^2 ,需要找到一个令结果最小的 f∗,实际应用中参数会更多更为复杂。

机器学习Machine Learning学习笔记——回归Regression_第4张图片

仅考虑单个参数的情况:

 引入学习率概念:移动的步长,如上图中 η

  • 步骤1:随机选取一个 w0
  • 步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向
    • 大于0向右移动(增加w)
    • 小于0向左移动(减少w)
  • 步骤3:根据学习率移动
  • 重复步骤2和步骤3,直到找到最低点

本质上是一种通过迭代的思想进行最小值的求解方法。但通过这种算法,可能会找到当前最小值,但并未全局最小值。

从多参数角度:即数学推导中的偏微分求解过程:

机器学习Machine Learning学习笔记——回归Regression_第5张图片

梯度下降算法面临的挑战:

  • 问题1:当前最优(Stuck at local minima)
  • 问题2:等于0(Stuck at saddle point)
  • 问题3:趋近于0(Very slow at the plateau)

机器学习Machine Learning学习笔记——回归Regression_第6张图片

六、模型的验证

对于简单一元回归模型,求解模型的平均误差值作为模型评价体系的衡量指标

过拟合问题:

每一个模型结果都是一个集合,5次模型包⊇4次模型⊇3次模型,所以在4次模型里面找到的最佳模型,肯定不会比5次模型里面找到更差,高次模型的解释力强于低次模型,包含低次模型,即高次模型为最高次幂系数取零的低次项系数。

机器学习Machine Learning学习笔记——回归Regression_第7张图片

将错误率结果图形化展示,发现3次方以上的模型,已经出现了过拟合的现象:

机器学习Machine Learning学习笔记——回归Regression_第8张图片

七、步骤优化

step1 优化:将2个input的四个线性模型合并到一个线性模型中

机器学习Machine Learning学习笔记——回归Regression_第9张图片

机器学习Machine Learning学习笔记——回归Regression_第10张图片

Step2优化:如果希望模型更强大表现更好(要求更多参数以及更多input)

 更多特征,更多input,数据量没有明显增加,仍旧存在过拟合现象发生

Step3 优化:加入正则化

引入更多特征后,权重 w可能会使某些特征权值过高,仍旧导致过拟合,因此加入正则化

机器学习Machine Learning学习笔记——回归Regression_第11张图片

  • w 越小,表示 function 较平滑的,function输出值与输入值相差不大
  • 在很多应用场景中,并不是 w越小模型越平滑越好,但是经验值表示 w 越小大部分情况下都是好的。
  • b 的值接近于0 ,对曲线平滑是没有影响

 机器学习Machine Learning学习笔记——回归Regression_第12张图片

八、线性回归的代码实现

# linear regression
#b = -120
#w = -4
b=-2
w=0.01
lr = 0.000005
iteration = 1400000

b_history = [b]
w_history = [w]
loss_history = []
import time
start = time.time()
for i in range(iteration):
    m = float(len(x_d))
    y_hat = w * x_d  +b
    loss = np.dot(y_d - y_hat, y_d - y_hat) / m
    grad_b = -2.0 * np.sum(y_d - y_hat) / m
    grad_w = -2.0 * np.dot(y_d - y_hat, x_d) / m
    # update param
    b -= lr * grad_b
    w -= lr * grad_w

    b_history.append(b)
    w_history.append(w)
    loss_history.append(loss)
    if i % 10000 == 0:
        print("Step %i, w: %0.4f, b: %.4f, Loss: %.4f" % (i, w, b, loss))

九、总结

回归分析是指一种预测性的建模技术,主要是研究自变量和因变量的关系。通常使用线/曲线来拟合数据点,然后研究如何使曲线到数据点的距离差异最小。

令损失函数最小来确定参数是模型建立过程中最关键的一步,可以通过多种方式进行损失函数的最小化求解。

本文中涉及到的梯度下降法是常用且通用的,包括更为复杂的逻辑回归算法中也可以使用,但是对于较小的数据量来说它的速度并没有优势。
正规方程的速度往往更快,但是当数量级达到一定的时候,还是梯度下降法更快,因为正规方程中需要对矩阵求逆,而求逆的时间复杂的是n的3次方。
最小二乘法一般比较少用,虽然它的思想比较简单,在计算过程中需要对损失函数求导并令其为0,从而解出系数。但是对于计算机来说很难实现,所以一般不使用最小二乘法。

在本章节中提到的多种方式仅涉及理想化的线性回归模型,对于更为常见的非线性及多元模型需要更加深入的理论研究与讨论。
 

你可能感兴趣的:(深度学习)