机器学习笔记九——线性模型原理以及python实现案例
1、线性模型概述
给定一个由d个属性描述的实例 ,其中是
是x在第i个属性上的取值,线性模型(linear model) 的原理是试图学得一个通过属性的线性组合来进行预测的函数,即
向量形式:
其中权重向量 和偏置项b是待估计的参数。
线性模型具有良好的可解释性(comprehensibility),每个属性对应的权重可以理解为它对预测的重要性,并且建模较为简单,许多功能更为强大的非线性模型(nonlinear model)都是在线性模型的基础上引入层级结构或高维映射得到的。
2 、广义线性模型
除了直接让模型预测值逼近实值标记 y,我们还可以让它逼近 y 的衍生物,这就是 广义线性模型(generalized linear model) 的思想,即:
其中 g(⋅)称为 联系函数(link function),要求单调可微。使用广义线性模型我们可以实现强大的 非线性函数映射 功能。比方说 对数线性回归(log-linear regression),令 g(⋅)=ln(⋅),此时模型预测值对应的是实值标记在指数尺度上的变化:
广义线性模型的参数估计常通过加权最小二乘法或极大似然法进行。
3、经典的线性模型
3.1 线性回归
目的:用于回归,进行预测
- 数据预处理:
一般的线性回归模型要求属性的数据类型为连续值,故需要对离散属性进行连续化。 -
离散属性连续化
分两种情况- 属性值之间有序:也即属性值有明确的大小关系,比方说把二值属性“身高”的取值 {高,矮} 可转化为 {1.0,0.0},三值属性 “高度”的取值 {高,中,低} 转换(编码)为 {1.0,0.5,0.0};
- 属性值之间无序:若该属性有 k个属性值,则通常把它转换为 k 维向量,比方说把无序离散属性 “商品” 的取值 {牙膏,牙刷,毛巾} 转换为 (0,0,1),(0,1,0),(1,0,0)。 这种做法在 自然语言处理和推荐系统 实现中很常见,属性 “单词” 和 “商品” 都是无序离散变量,在建模前往往需要把这样的变量转换为哑变量,否则会引入不恰当的序关系,从而影响后续处理(比如距离的计算)。
3.1.1 单变量线性回归
样本只有一个属性x
-
模型函数:用于预测
-
损失函数或目标函数:均方误差,也称平方损失
其中,是第i个样本的预测值,是第i个样本的真实值,m是数据集D中共有m个样本。 -
参数估计:的估计
- 方法:最小二乘法
基于均方误差最小化来进行模型求解的一种方法,叫作最小二乘法。
- 求解:
通过对损失函数分别求参数 和b 的偏导,并且令导数为0,可以得到这两个参数的 闭式(closed-form)解(也即解)
求解过程
- 方法:最小二乘法
3.1.2 多变量线性回归
多变量线性回归,又称多元线性回归
样本有多个属性
-
模型函数:用于预测
令把数据集D表示为 m×(d+1)大小的矩阵 X,其中每一行对应一个样例,该行前 d 列是样例的 d 个属性,最后一列恒置为1,对应偏置项。把样例的真实值标记也写作向量形式。
则 -
损失函数或目标函数:均方误差,也称平方损失
其中,是第i个样本的预测值,是第i个样本的真实值,m是数据集D中共有m个样本。 -
参数估计:的估计
- 方法:最小二乘法
基于均方误差最小化来进行模型求解的一种方法,叫作最小二乘法。
- 求解:
通过对损失函数分别求参数 和b 的偏导,并且令导数为0,可以得到这两个参数的 闭式(closed-form)解(也即解)
求解过程
- 方法:最小二乘法
注: 这就要求 必须是可逆矩阵,也即必须是满秩矩阵(full-rank matrix) 或者是 正定矩阵(positive definite matrix),但是!现实任务中 往往不是满秩的,很多时候 X的列数很多,甚至超出行数(例如 推荐系统,商品数是远远超出用户数的),此时 显然不满秩,会解出多个 这些解都能使得均方误差最小化,选择哪一个解作为输出,这时就需要由学习算法的归纳偏好决定了,常见的做法是引入 正则化项。
线性回归实例
3.2 对数几率回归(逻辑回归)
目的: 监督学习,解决二分类问题
模型函数:
其实广义线性模型已经给了我们答案,我们要做的就是 找到一个单调可微的联系函数,把两者联系起来。
对于一个二分类任务,比较理想的联系函数是 单位阶跃函数(unit-step function):
但是单位阶跃函数不连续,所以不能直接用作联系函数。这时思路转换为 如何在一定程度上近似单位阶跃函数 呢?对数几率函数(logistic function) 正是我们所需要的常用的替代函数(注意这里的 y 依然是实值):
未完待续