介绍
本博客将结合样例介绍监督学习/Supervised Learning/SL
下的第一大分支:回归/Regression
。
开始前的准备
开始前,请先确保你的python环境中有以下包:
pandas
,numpy
,sklearn
。
本文的所有代码可在Anaconda
的Jupyter Lab
里运行。
正文
首先来理解下:为什么回归/Regression
是一种监督学习?这个问题的本质是什么?
我们首先要理解回归问题的本质。简单来说,回归问题的本质是,对于一个映射 f f f,
f : R n ↦ R f:\mathbb{R}^n\mapsto \mathbb{R} f:Rn↦R
,我们有它定义域/Domain
和对应域/Codomain
的一些数组。我们想要通过这些已有的数据来找到一个最符合这些数据的模型/回归函数。
换个角度看,对于每一条数据,该映射的定义域可以理解为特征集/Feature Set
,其对应域可理解为标签集/Label Set
。我们要找的就是未知的映射函数,对应着机器学习里的黑箱模型/Blackbox Model
。
但是要把它变成一个完全的监督学习问题,我们还需要定义下我们要优化的目标是什么。既然我们要找到最符合数据的映射,我们可以考虑最小化误差平方和/Sum of Squared Errors/SSE
。对于一个有 m m m条数据的数据集和一个对应的映射 f f f,该映射对于该数据集的误差平方和定义为
ℓ = ∑ i = 1 m ( y ( i ) − f ( x ( i ) ) ) 2 \ell = \sum_{i=1}^m \Big(y^{(i)} - f\big({\bf x}^{(i)}\big)\Big)^2 ℓ=i=1∑m(y(i)−f(x(i)))2
,也就是把每一条数据的真实标签和映射的预测标签的差进行平方后求和。如果我们把误差平方和作为监督学习的损失函数/Loss Function
,则该回归问题可被称为普通最小二乘法线性回归问题/OLS Linear Regression
。我们要做的就是找到映射 f f f,使得误差平方和最小。
我们把这个问题更加严谨地下个定义。让 x {\bf x} x作为特征集, w \bf w w作为每个特征的权重集,则对于线性映射
f ( x ; w ) = w T ⋅ x = w 0 x 0 + w 1 x 1 + . . . + w n x n f({\bf x; w}) = {\bf w}^T\cdot{\bf x}=w_0x_0+w_1x_1+...+w_nx_n f(x;w)=