机器学习之线性回归

目录

机器学习概述

线性回归


机器学习概述

机器学的定义

现在业内没有统一的机器学习的定义,各个版本所描述的意思基本相同。机器学习是一种方法,让机器具有学习能力,然后根据学习到的知识解决问题。

例如,有很多下棋的程序,能够自己与自己下棋,通过大量的训练,然后具备判断一步棋优劣的能力。再如:给出若干封邮件,告诉计算机哪些是正常邮件,哪些是垃圾邮件,计算机通过学习,然后具备识别垃圾邮件的能力。

机器学习的分类

机器学习主要分为两类:监督学习和无监督学习。

监督学习是指给计算机一个数据集,数据集中的每个数据都包含特征值和目标值,计算机通过学习这个数据集,找到特征和目标之间的关系,然后对一个新的数据,能够根据特征计算出目标值,用于学习的数据集称为训练集。

上述判断垃圾邮件的例子中,标记了正常/垃圾的邮件就是训练集,特征就是每封邮件中的文字,目标值就是 是否为垃圾邮件。

监督学习主要分为两类:分类,回归。

分类是指目标值是离散的监督学习,例如:是否为垃圾邮件,可以用 0,1 表示。目标值没有 0.5,0.6..

回归是指目标值是连续的监督学习,例如:一辆汽车速度与刹车停下需要滑行距离如下,现在要让计算机推算 140Km/h 会滑行多远。这里的制动距离的值就是连续的。

速度 (Km/h)3040505560
制动距离 (m)915.521.327.334.6

无监督学习

无监督学习与监督学习的区别在于:无监督学习的数据是没有标记的,通过无监督学习可以在这些无标记的数据中找到某种结构,或者将具有相似性的数据聚合在一起。

例如,一些手机桌面支持摇一摇自动整理图标,能将相似的图标放在一起。

 

线性回归

前面已经讲到了回归,回归是指目标值是连续的监督学习。

线性:两个变量之间存在一次方函数关系,就称它们之间存在线性关系。(百度百科)

y=kx+b (k, b 是常数) 一次方

z=ax + by + c(a b c 是常数) 一次方

y =ax^2 + bx + c 二次方

线性回归是指:目标值与特征值之间是一次方关系的回归。

举例:超市销售A B C 3种猪肉,有3位顾客卖了不同重量的肉,重量和总价如下。小明想买 2斤A,1斤B,3斤C, 请问需要花多少钱?

 猪肉 A (斤)猪肉 B(斤)猪肉 C(斤)总价(元)
顾客1123178
顾客2344285
顾客3451275

很明显目标值(总金额)与特征(3个重量值)之间是线性关系。这是一个 3元线性回归问题,现实中很多问题是远多于 3 个特征值的,比如预测降雨量,可能与气压,气温,湿度,风向,风速,海拔 ......等相关。

综上所述,可以用下图简要地说明线性回归与机器学习的关系

线性回归问题描述

从简单的一元线性回归开始。用 y 表示表示目标值,x 表示特征值。现在有如下一个训练集,根据这个训练集,找出 y 与 x 之间的关系。

此时可以看出,这些点并不是完全在一条直线上,也就是说用一条直线来表示y与 x 之间的关系会存在误差。误差越小,说明这条直线更准确。

如何表示误差

我们用y 表示实际的目标值,y^ 表示根据直线得出的理论值。我们用如下的方式来表示误差

对每一个样本,用实际值与理论值相减,得到单个误差,再将这些误差值平方后加起来,就是整体的误差。(平方是为了避免正负抵消,与统计学中的方差相同)

如上图所示,有两条直线,哪一条更准确呢?

x(特征值)12345
y(实际目标值)12246
y^(计算的目标值)y^=x12345
误差00-101

整体误差=2

 

x(特征值)12345
y(实际目标值)12246
y^(计算的目标值)y^=-0.6 +1.2x0.61.834.25.4
误差0.40.2-1-0.20.6

整体误差 = 1.6

因此 y^=-0.6 +1.2x是更准确的。

 

上述是误差的基本思想,在机器学习领域中,使用损失函数来表示误差,评估学习结果的正确性。

 

m 表示样本个数,上述例子中 m =  5

y(i)表示第 i 个实际值,例:y(3) =2

y^(i)表示第 i 个理论值,例: y^(3)=3

注:机器学习中使用上标表示第i个数据。

注:有些资料也使用如下的式子表示损失函数

多出的1/2m: 除以m可以理解为均方差,1/2是有些时候为了计算方便而引入的。

实际上多出的 1/2m 这一项并不影响相对误差比较,例如上述例子中,第一条直线误差为2,第二条为1.6,如果都乘以 1/2m, (m=5), 第一条直线误差为0.2, 第二条为 0.16,第二条误差仍然小于第一条。

也就是说,这两种方式都可以判断出哪条线更准确。

 

为了方便对比,我们用统一格式表示理论值: 

损失函数可表示为

所以,线性回归问题就转换为:找到 θ0 和 θ1,使得损失函数的值最小。

 

正规方程求解线性回归

使用矩阵和向量来描述线性回归问题

先回顾一下矩阵。

根据上一节所述描述的理论值的数学表示方式,

使用上标i表示第i个数据, 如果训练集有 m 个数据,则可表示为

此处的 y^, x,θ 都可以看做是向量

如果在 θ0 上乘以常数1,并把1 划入 X 中,则可以用如下方式表示

此时可以得出一个有趣的式子 

刚才已经用向量描述了理论值,现在再回到前面讲到的损失函数 

既然理论的目标值可以向量表示,那么实际的目标值也可以用向量表示

可以发现 y-y^ 结果是一个列向量,每个元素就与损失函数中括号内的部分是一致的。

既然理论值和目标值都可以都可以用向量表示,那损失函数能否用向量来表示呢?答案是可以的。首先回顾一下矩阵的转置。列向量的转置与列向量本身相乘,结果是列向量个元素的平方和。因此,损失函数可以表示为

到此,我们就可以用向量来表示损失函数了。

回到问题的开始,找到 θ0 和 θ1,使得损失函数 J 的值最小。

将 J对 θ求导,并令导数为 0 ,得到的 θ 就是就是 J 最小时的取值。

求导详细过程

到此, θ(θ0,θ1)求解完毕。也就是当 时,损失函数的值最小,也就是误差最小,也就是最优的模型,一元线性回归求解完毕。

 

多元线性回归

前面得到了一元线性回归的最优解公式实际上,该公式同样适用于多元线性回归。

一元线性回归:一个特征值------->目标值,即 x----->y

多元线性回归:多个特征值-------->目标值,即 (x1, x2, ....xn)---->y

由上图可见, 无论是一元线性回归还是多元线性回归,它们的表示方法都是一样的,因此它们的最优解的计算方式也是一样的。

 

Demo

人的体重与身高是存在一定比例关系的。现在随机抽取 70 名 NBA球员,他们的身高体重数据如下,通过线性回归找出体重与身高之间的关系。

https://nba.stats.qq.com/player/list.htm

 

使用工具 Octave (类似 matlab,~免费版的matlab)

准备 Height, Weight 的数据

function theta= NormalEquation(X, y)
	theta = pinv(X'*X)*X'*y

求得 θ(-155.6686,1.2872)

Weigth = -155.6686+1.2872* Height

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值