线性回归(基本概念,代价函数)

回归模型

前面我们说到,机器学习的两大基本任务是:分类回归。本节我们重点探讨,机器学习中 “回归” 任务的实现。

  1. 什么是 “回归” (regression):它是确定几个相互依赖的变量的关系的一种统计方法。简单说,就是 已知若干样本点,寻找一个 恰当的函数,将样本点“串”在一起的过程。
  2. “机器学习” (machine learning)与 “回归” 的关系:一般而言,要通过纯数学的方法去寻找这个函数是及其困难的一件事,需要进行许多的尝试,寻找合适的函数。而计算机对于这种冗杂的问题,有着天然的优势,于是人们就想到通过设计合理的算法,让计算机通过迭代,自动寻找合适的函数,这就是机器学习中的回归算法。同时,计算机获得了这个函数,也就意味着它 掌握了各个变量之间的依赖关系,即具备了 由已知条件预测未知条件的能力
  3. 如何利用计算机处理回归问题的流程:
    • 首先,我们要有合适的数据集:一般会去网上下载。有能力和资本的可以自己去标注,当然要学习成本的,所以还是先去网上找来练吧。
    • 要按一定的结构,把已知的数据存入计算机中:合理地使用各大编程语言的数据结构,把数据导入即可。我主推用 Python 学习,Python 的库众多,并设计了各式各样的数据结构(或者说 “类”),能帮我们高效地完成任务,例如 pytorch 中的 tensor,numpy 中的 narray 。
    • 选择合适的模型结构:根据样本集的特点,构造合适的函数,以便计算机进行合适参数的寻找,当然你也可以让计算机自己去寻找这个合适的函数,只不过会大大增加算法的复杂度和学习成本。对于一些简单的样本集,手工构造也更加明智。
    • 选择合适的代价函数:利用代价函数,评判生成的模型的好坏,让计算机不断调整模型。我们也可以根据代价函数的性质,针对性地更新我们的模型。
    • 依据设计的算法编程:相关的算法有很多,有些需要阅读专业论文去研究并针对性的学习与编程。当然,凡事不要急,毕竟大部分问题的解决用不到特别高深的算法。写学会用基础方法解决,效果不好,再针对问题去学习更难的算法即可。
    • 执行程序,寻找合适的函数并输出。
    • 检验与评判。

线性回归问题

线性回归模型(linear regression model)是最简单的回归模型,许多复杂的回归问题也是转化为线性回归进行求解的,这种转化会在我们以后讲 “特征工程” (feature engineering)时提到。

我们先规定几个符号,便于后面的讨论,留意英文,在阅读文献时有用。

符号意义补充
x x x输入变量(input variable)
y y y输出变量(target variable)
m m m训练集样本数(number of training example)
( x , y ) (x,y) (x,y)单个样本(single training example)
( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))第 i 个样本(i_th training example)
f f f函数,模型,预测器(function, model, estimator)
J J J代价函数(cost function)
y ^ \hat y y^预测值(prediction)

在线性回归问题中, f f f 有着简单的形式,我们从最简单的 单变量线性回归问题(univariable linear regression)入手,先了解一下 模型代价函数 的概念吧。

单变量线性回归问题的模型: f w , b = w x + b f_{w,b}=wx+b fw,b=wx+b

参数含义
w线性模型斜率(slope),权重(weight)
b线性模型截距(intercept),偏置(bias)
(w,b)参数(parameters)

在机器学习中,确定 模型的结构 是至关重要的,这可以大大缩小我们寻找函数的复杂度。问题巧妙的变成了寻找合适的参数,让这个函数拟合样本点。我们就可以通过迭代参数的方式,逐步寻找到最合适的参数。

话虽这么说,我们要如何判断所取的参数是合适的呢?我们应该构造一个函数,他能根据估计的参数和样本,实时将当下的拟合情况映射为数字。这个函数,就是我们说的 代价函数

单变量线性回归问题的代价函数:
e r r = y ^ ( i ) − y ( i ) J ( w , b ) = 1 m ∑ i = 1 m e r r 2 \begin{aligned} &err=\hat{y}^{(i)}-y^{(i)}\\ &J(w,b)=\frac{1}{m}\sum^m_{i=1}err^2 \end{aligned} err=y^(i)y(i)J(w,b)=m1i=1merr2

这就是大名鼎鼎的 平方误差代价函数(the squared error cost function)。它随 预测值与输出变量间的偏差 增大而增大,非常好用于定量描述拟合情况。我们当然希望偏差尽可能小,所以当我们选定的参数恰好让代价函数达到 0 时,我们就说我们找到了最好的拟合参数了。但是,由于所选模型结构的限制我们通常是无法让代价函数为 0 。事实上,代价函数为 0 也不见得是一件好事,后续章节谈论的 过拟合(over-fitting) 现象,将重点介绍原因。

一般而言,我们从模型本身出发,寻找能让 J 最小的参数即可。有时候,由于样本过于庞大,我们还可以根据实际需求,设定一个 条件(condition),及时终止训练,尽快获得模型。以上我们在编程时具体情况,具体分析。

下一个问题是,我们要怎么去寻找合适的参数呢?穷举固非良计,这就要用上我们后面要讲的 梯度下降算法 (gradient descent)了,所谓有脑子的穷举。
不过现在我们已经对回归问题的基本处理流程有了大致了解了,可以愉快的编程了,当然,目前我们无法处理复杂的问题,全在对基本概念进行了解。

下期预告:
(代码课)

  • 寻找数据集
  • 学会数据的导入
  • 编程实现 函数,代价函数,与迭代逻辑

(理论课)

  • 梯度下降算法简介

代码课

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值