机器学习理论系列一:Linear Regression(线性回归)

Linear Regression 美 [ˈlɪniər] [rɪˈɡrɛʃən] : 线性回归
Loss funcition 美 [lɔs] [ˈfʌŋkʃən] : 损失函数
Gradient Descent 美[ˈɡrediənt] [dɪˈsɛnt] : 梯度下降
Model 美 [ˈmɑdl] : 模型

本文是对李宏毅教授课程的笔记加上自己的理解重新组织,如有错误,感谢指出。
视频及 PPT 原教程:https://pan.baidu.com/s/1geFro9H 密码:50sc
线性回归中维基百科的定义如下:

在统计学中,线性回归(Linear regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。 这种函数是一个或多个称为回归系数的模型参数的线性组合。

线性回归用途最多的地方就是做预测,根据已知的数据建立一个模型(也就是一个很复杂的函数),然后利用这个模型做预测。先举一个例子,即预测进化后神奇宝贝的 cp 值。

数据收集

假设我们有一些神奇宝贝的数据,他们有种类 ,cp 值,hp 值,weight ,height 以及进化后的 cp 值。我们选取其中的 10 只做训练。

Model

下边是线性回归的最一般表示:


这里的 $x_i$ 可以是 cp , weight , height 的值, 而 y 代表进化后的 cp 值,我们需要做的工作是确定 $w_i$ 和 b 的值。而 $x_i$ 的选取会直接影响到模型预测的准确性。

进化后的 cp 和什么因素相关?最直接的和进化前的 cp 一定相关,所以我们先用一个最简单的模型试一下:


即 $x_i$ 只取一个 cp 值,w 和 b 的值可以有无数个,例如


那么,我们应该选哪一个的 w 和 b 的值呢?

Goodness of Function

我们定义一个函数,来评估当前的模型好不好,也就是 w 和 b 好不好。我们叫他为 Loss funcition ,他越小代表 w 和 b 越好。如果预测的完全正确,那么他将是 0 。


把 f 代入:


$b + w * x{^n_{cp}}$ 就是 f ,也就是预测的 cp 值
y 上边一个三角 ( y 帽)指的是进化后的 cp 值。

Best Function

求 $f_1$ 的 w 和 cp 的 对应的 loss 值
$$ L = \sum_{i=0}^{10} ( \hat{y} - ( 10.0 + 9.0 · x{^n_{cp}} ) )^2$$
先把 w = 9.0 和 b = 10.0 的值带入,然后把已知的数据的 cp 值分别带入函数中,然后把预测出来的 cp 值 和原本的 cp 值 $\hat{y}$ 做个差,再平方一下(消除负数的影响),然后把每一个数据都这样做,然后加起来得到 L 。

同理,求出 $f_1$,$f_2$,$f_3$ …… 的 loss 值,然后把它的分布图画出来。


每一个点都代表一个 f
颜色深代表 loss 值大,颜色浅代表 loss 值小
最小的 f 是叉号的地方,目测 w 是 2.4 , b 是 -190。

所以我们得到的模型就是
$$f = -190 + 2.4 · x_{cp}$$
这样,我们就可以愉快的预测进化后的 cp 值了。

Test & 重新设计模型

咦?准确率似乎不是很高。原因很简单,我们的模型太简单了。让我们回到 Model 那个阶段,重新设计 Model 。

之前的 Model 我们用了最简单的
$$ y = b + w · x_{cp}$$
我们不妨,再加个 $x{^2_{cp}}$ ,变成
$$ y = b + w_1 · x_{cp} + w_2 · x{^2_{cp}}$$
不是线性回归吗?怎么出现了 2 次项。
仔细观察线性回归 Model 的定义 $y = b + \sum w_ix_i$ ,我们可以把 $ x_{cp}$ 和 $ x{^2_{cp}}$ 整体都当做是 $x_i$ 项,不管平不平方,他们都可以看做常数项,而我们的自变量是 $w_i$ ,它是 1 次的,那我们就是线性的。

同理,我们还可以再加入 3 次项, 4 次项,让 Model 更复杂,然后再进行 Test 查看预测的结果的 loss 值够不够小。

当然,我们还可以把其他的因素加入到模型中。

我们可以看到,似乎 HP 的值对进化后的 CP 值是有一定影响的,HP 值越大,进化后的 CP 值也越大。
我们继续复杂我们的模型。
$$ y = b + w_1 · x_{cp} + w_2 · x{^2_{cp}}+ w_3·x_{hp} + w_4·x{^2_{hp}}$$
然后我们向上边一样穷举 b , $w_1$, $w_2$ , $w_3$ , $w_4$ 的值,观察哪一个 b , $w_1$, $w_2$ , $w_3$ , $w_4$ 会使得 loss 值最小。

那大概是疯了,上边是两个变量能穷举,这 5 个变量或者更多这一辈子也算不完。
所以除了穷举的方法,还有其他的方法去求 b 和 $w_i$ 的值吗?
没错,就是 Gradient Descent (梯度下降),不管 w 有多少个都可以轻轻松松求出来,且听下篇文章。

其实,步骤就是对现实就行抽象,找到影响预测的因素,找到一批数据,然后设计一个模型,利用数据对模型训练(求出最佳的 b 和 $w_i$) ,然后进行测试,看结果的准确率是否能接受,然后再进行模型的修改,反反复复直到满意。

不如思考下课程中的例子股票预测,无人驾驶,购物推荐,找一下影响预测的因素是什么,理一理具体的过程。

windliang wechat