本入门教程主要参考以下教材/教程
李宏毅2021春机器学习课程https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html
李航《统计学习方法》第二版
之前说机器学习是要找到一个函数,那么怎么找到这个函数呢?一般分为如下三步:
- 初始化一个带有未知参数的函数(最简单的就是一次函数,也可以是二次,三次等等)
- 为测试数据定义合适的损失函数(Loss Function)
- 优化(Optimization)
在这里我们使用一个具体的例子来进行具体理解:GDP预测任务
目前有中国从1960年至2020年以美元计价的GDP生产总值表格[可下载]的数据,下表是部分数据
年份 | 1960 | 1961 | 1962 | 1963 | … | 2017 | 2018 | 2019 | 2020 |
GDP(单位:亿美元) | 597.16 | 500.57 | 472.09 | 507.07 | … | 123104.1 | 138948.2 | 142799.40 | 147227.30 |
- 请你预测未来几年的中国GDP数据。
- 美国2020年GDP为208937.46亿美元;根据你的预测,假设美国GDP不变的前提下,中国在哪一年可以超过美国?
回顾:这个任务属于回归还是分类?
Tips:这个任务本质就是利用以前的数据设计一个最好的函数,用这个函数预测后几年的GDP数据。
一、初始化函数
第一步需要写出一个带有未知参数的函数,我们先选择最简单的一次函数进行猜测
$$y=b+\omega \cdot x_{1}$$
- \(y\)是要预测的GDP值
- \(x_{1}\)是对应的年份
- \(w, b\)是未知参数,需要通过机器学习得到
特征(Feature):在这个训练中,\(x_{1}\)是已知的也就是对应的年份,我们把它叫做特征。(在这里似乎不好理解,这是因为我们简化了这个问题;实际上GDP应该会和人口,人民币与美元汇率等等因素相关,这些有关的因素就是特征,相当于函数的自变量。)
参数(Parameter):在这个训练中, \(w, b\)为未知参数。 \(w\)是与特征相乘的参数 ,称为Weight; \(b\) 是直接加上的参数,称为Bias(偏移)。
模型(Model): 带有未知参数的函数即为模型。
这里不妨初始化直线为:
$$y=100+50 \cdot x_{1}$$
二、定义损失函数
损失函数(Loss Fuction):Loss也是一个函数,输入是模型中的参数 \(w, b\) ,输出的结果说明这个参数设定为某一值的时候,这个数值好不好。
如何计算Loss?需要通过已给的数据来进行判断;就是函数预估的结果(记为 \(\widehat{y}= b+\omega \cdot x_{1} \) )和实际的结果(记为 \(y\) )之间的差距。衡量差距的方式不只一种,但是这里使用最简单的\(\left| y-\widehat{y}\right|\) [L1 Loss] 确定Loss函数的值。
标签(Label):真实的y值
为什么需要Loss函数?从Loss函数的定义易知,其值越小,预估的 \(\widehat{y}\)和实际的 \(y\)差距越小,模型吻合的越好。 我们可以通过最小化(Minimize)Loss函数的方式,遍历所有可能的 \(x_{1}\) 取值,计算出每一个Loss值并求和。
这个数据集有从1960开始到2020共61年的数据,自变量 \(x_{1}\)有61个取值。计算Loss函数的时候应该充分考虑不同 \(x_{1}\)对应的值 ,不妨记Loss值对应为\(e_{1960},e_{1961},…,e_{2020}\) ,考虑初始化函数,对应的值则为:
$$e_{1960}=\left|y-\hat{y} \right|=\left|597.16-(100+50*1960) \right|$$
最后的Loss函数可以设为:
$$Loss: L=\frac{1}{N}\sum_{i=1960}^{2020}e_{i}=\frac{1}{N}\left ( e_{1960}+e_{1961}+…+e_{2020}\right )$$
Tips:这里使用的Loss计算方式称为L1 Loss,或者MAE(mean absolute error);当然还有L2 Loss,即为平方相减求绝对值得到,也称为MSE(mean square error)。
最后一个部分优化涉及导数的相关内容,将在补充后继续讲解。