离散属性连续化

由于不同模型对数据的要求不一样,在建模之前,我们需要对数据做相应的处理。一般的线性回归模型要求属性的数据类型为连续值,故需要对离散属性进行连续化。

具体分两种情况:

  1. 属性值之间有序:也即属性值有明确的大小关系,比方说把三值属性 “高度” 的取值 {高,中,低} 转换(编码)为 {1.0,0.5,0.0};
  2. 属性值之间无序:若该属性有 线性回归 - 图1 个属性值,则把它转换为 线性回归 - 图2 维向量(把1个属性扩展为k个属性),比方说把无序离散属性 “商品” 的取值 {牙膏,牙刷,毛巾} 转换为 (0,0,1),(0,1,0),(1,0,0)。 这种做法在自然语言处理和推荐系统实现中很常见,属性 “单词” 和 “商品” 都是无序离散变量,在建模前往往需要把这样的变量转换为哑变量否则会引入不恰当的序关系,从而影响后续处理(比如距离的计算)。

补充:对应于离散属性连续化,自然也有连续属性离散化。比方说决策树建模就需要将连续属性离散化。此外,在作图观察数据分布特征时,往往也需要对连续属性进行离散化处理(比方说画直方图)。

最小二乘法

回归任务最常用的性能度量是均方误差(mean squared error, MSE)。首先介绍单变量线性回归,试想我们要在二维平面上拟合一条曲线,则每个样例(即每个点)只包含一个实值属性(x值)和一个实值输出标记(y值),此时均方误差可定义为:

线性回归 - 图3%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em(y_i-f(x_i))%5E2%5C%5C%0A%5Cqquad%5Cqquad%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em(yi-wx_i-b)%5E2#card=math&code=E%28f%3BD%29%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em%28yi-f%28x_i%29%29%5E2%5C%5C%0A%5Cqquad%5Cqquad%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%7Bi%3D1%7D%5Em%28y_i-wx_i-b%29%5E2&id=HmG3P)

有时我们会把这样描述模型总误差的式子称为损失函数或者目标函数(当该式是优化目标的时候)。这个函数的自变量是模型的参数 线性回归 - 图4线性回归 - 图5。由于给定训练集时,样本数 线性回归 - 图6 是一个确定值,也即常数,所以可以把 线性回归 - 图7 这一项拿走。

最小二乘法(least square method)就是基于均方误差最小化来进行模型求解的一种方法,寻找可使损失函数值最小的参数 线性回归 - 图8线性回归 - 图9 的过程称为最小二乘参数估计(parameter estimation)

通过对损失函数分别求参数 线性回归 - 图10线性回归 - 图11 的偏导,并且令导数为0,可以得到这两个参数的闭式(closed-form)解(也即解析解):

线性回归 - 图12%7D%7B%5Csum%7Bi%3D1%7D%5Em%20x_i%5E2%20-%20%5Cfrac%7B1%7D%7Bm%7D(%5Csum%7Bi%3D1%7D%5Em%20xi)%5E2%7D%0A#card=math&code=w%20%3D%20%5Cfrac%7B%5Csum%7Bi%3D1%7D%5Em%20yi%28x_i%20-%20%5Cbar%7Bx%7D%29%7D%7B%5Csum%7Bi%3D1%7D%5Em%20xi%5E2%20-%20%5Cfrac%7B1%7D%7Bm%7D%28%5Csum%7Bi%3D1%7D%5Em%20x_i%29%5E2%7D%0A&id=fF9mz)

线性回归 - 图13%0A#card=math&code=b%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum_%7Bi%3D1%7D%5Em%20%28y_i-wx_i%29%0A&id=acow1)

在实际任务中,只要我们把自变量(x, y, m)的值代入就可以求出数值解了。

为什么可以这样求解呢?因为损失函数是一个凸函数(记住是向下凸,类似U型曲线),导数为0表示该函数曲线最低的一点,此时对应的参数值就是能使均方误差最小的参数值。特别地,要判断一个函数是否凸函数,可以求其二阶导数,若二阶导数在区间上非负则称其为凸函数,若在区间上恒大于零则称其为严格凸函数

多元线性回归

前面是直线拟合,样例只有一个属性。对于样例包含多个属性的情况,我们就要用到多元线性回归(multivariate linear regression)(又称作多变量线性回归)了。

线性回归 - 图14#card=math&code=%5Cmathbf%7B%5Chat%7Bw%7D%7D%20%3D%20%28%5Cmathbf%7Bw%7D%3Bb%29&id=URjQP)。把数据集表示为 线性回归 - 图15#card=math&code=m%20%5Ctimes%20%28d%2B1%29&id=iHyzg) 大小的矩阵,每一行对应一个样例,前 线性回归 - 图16 列是样例的 线性回归 - 图17 个属性,最后一列恒置为1,对应偏置项。把样例的实值标记也写作向量形式,记作 线性回归 - 图18。则此时损失函数为:

线性回归 - 图19%5ET%20(%5Cmathbf%7By%7D%20-%20X%5Cmathbf%7B%5Chat%7Bw%7D%7D)%0A#card=math&code=E_%7B%5Cmathbf%7B%5Chat%7Bw%7D%7D%7D%20%3D%20%28%5Cmathbf%7By%7D%20-%20X%5Cmathbf%7B%5Chat%7Bw%7D%7D%29%5ET%20%28%5Cmathbf%7By%7D%20-%20X%5Cmathbf%7B%5Chat%7Bw%7D%7D%29%0A&id=JgMUg)

同样使用最小二乘法进行参数估计,首先对 线性回归 - 图20 求导:

线性回归 - 图21%0A#card=math&code=%5Cfrac%7B%5Cpartial%20E_%7B%5Cmathbf%7B%5Chat%7Bw%7D%7D%7D%7D%7B%5Cpartial%20%5Cmathbf%7B%5Chat%7Bw%7D%7D%7D%20%3D%202%20X%5ET%28X%5Cmathbf%7B%5Chat%7Bw%7D%7D%20-%20%5Cmathbf%7By%7D%29%0A&id=qbAme)

令该式值为0可得到 线性回归 - 图22 的闭式解:

线性回归 - 图23%5E%7B-1%7DX%5ET%5Cmathbf%7By%7D%0A#card=math&code=%5Cmathbf%7B%5Chat%7Bw%7D%7D%2A%20%3D%20%28X%5ETX%29%5E%7B-1%7DX%5ET%5Cmathbf%7By%7D%0A&id=F5zck)

这就要求 线性回归 - 图24 必须是可逆矩阵,也即必须是满秩矩阵(full-rank matrix),这是线性代数方面的知识,书中并未展开讨论。但是!现实任务中 往往不是满秩的,很多时候 线性回归 - 图25 的列数很多,甚至超出行数(例如推荐系统,商品数是远远超出用户数的),此时 线性回归 - 图26 显然不满秩,会解出多个 线性回归 - 图27。这些解都能使得均方误差最小化,这时就需要由学习算法的归纳偏好决定了,常见的做法是引入正则化(regularization)项。

广义线性模型

除了直接让模型预测值逼近实值标记 线性回归 - 图28,我们还可以让它逼近 线性回归 - 图29 的衍生物,这就是广义线性模型(generalized linear model)的思想,也即:

线性回归 - 图30%0A#card=math&code=y%20%3D%20g%5E%7B-1%7D%28%5Cmathbf%7Bw%5ETx%7D%20%2B%20b%29%0A&id=P5iDv)

其中 线性回归 - 图31#card=math&code=g%28%5Ccdot%29&id=VTO3e) 称为联系函数(link function),要求单调可微。使用广义线性模型我们可以实现强大的非线性函数映射功能。比方说对数线性回归(log-linear regression),令 线性回归 - 图32%20%3D%20ln(%5Ccdot)#card=math&code=g%28%5Ccdot%29%20%3D%20ln%28%5Ccdot%29&id=QnYb3),此时模型预测值对应的是实值标记在指数尺度上的变化

线性回归 - 图33