西瓜书的第三章,主要讲解的是线性模型相关知识
基本形式
给定d个属性描述的示例$x=(x_1,x_2,…,x_d)$;线性模型通过学习到的一个属性的线性组合来表示:
$$
f(x)=w_1x_1+w_2x_2+…+w_dx_d+b
$$
一般是写成向量形式
$$
f(x)=w^Tx+b
$$
其中$w=(w_1,w_2,…,w_d)$,称之为权重;$b$称之为偏置
线性回归
优化目标
给定数据集$D={(x_1,y_1),(x_2,y_2),…,(x_m,y_m)};x_i=(x_{i1};x_{i2};…;x_(id)),y_i \in R$
线性回归的目的是通过学习使得$f(x_i)=wx_i+b$和$y_i$近似相等,或者说使得二者之间的差距尽可能的小,优化目标是
$$
\begin{align}
(w*,b)
&=arg \min_{(w,b)}\sum(f(x_i)-y_i)^2 \
&=arg \min_{(w,b)}\sum(y_i-wx_i-b)^2
\end {align}
$$
$(w*,b)$是取得最优值时候的解
均方误差MSE
均方误差mean-squared-error,MSE
。基于均方误差最小化来进行模型求解的方法称之为“最小二乘法”。该方法是视图找到一条线,使得所有样本到直线上的距离之和是最小的,令
$$
E_{(w,b)}=\sum_{i=1}m(y_i-wx_i-b)2
$$
现将上式分别对$w,b$求导,令两个导数等于0,求出$w,b$
另一种表达方式:
$b$的解为:
$$
b=\frac{1}{m}\sum^m_{(i=1)}(y_i-wx_i)
$$
i
两个参数的具体求解过程[线性回归参数求解]((https://www.jianshu.com/p/79c57c6a3815)
多元线性回归
数据集$D$中出现了$d$个属性
$$
f( x)=w^Tx_i+b
$$
将$w,b$引入向量形式:$\hat w=(w;b)$;标记也是向量形式$y=(y_1,y_2,…,y_m)$,有
$$
\hat w^*=arg\min_{\hat w}(y-X\hat w)^T(y-X\hat w)
$$
线性模型为
$$
f(\hat x_i)=\hat x_iT(XTX){-1}XTy
$$
正则化
当实际的数据中变量数目远多于样本数目,导致X的行数多余列数,不是满秩矩阵,存在多个$\hat w$使得均方误差最小化。解决这个问题,引入正则化
对数线性回归
$$
lny=w^Tx+b
$$
即表示为:
$$
y=e{wTx+b}
$$
一般情况下,g(.)是单调可微函数,满足
$$
y=g{-1}(wTx+b)
$$
这样的模型称之为广义线性模型,其中g称之为联系函数;对数线性回归是广义线性模型在g=ln()
时候的特例
对数几率回归
当考虑二分类的时候,输出标记为$y\in{0,1}$。对数几率函数(也称之为Sigmoid函数)可以表示为
$$
y=\frac{1}{1+e^{-z}}
$$
其中$z$最理想的模型是阶跃函数
- 若z大于0,判断为正例
- 若z小于0,判断为反例
- 若z等于0,则任意判别
$$
z=w^Tx+b
$$
那么:
$$
y=\frac{1}{1+e{-(wTx+b)}}
$$
$$
ln \frac{y}{1-y}=w^Tx+b
$$
根据假设:y
是正例,1-y
是表示反例;$\frac{y}{1-y}$表示的是几率;$ln\frac{y}{1-y}$表示的是对数几率。此时对应的模型称之为对数几率回归
线性判别分析LDA
思想
线性判别分析Linear Discriminant Analysis
最早在二分类问题上有Fisher提出来,因此也称之为Fisher判别分析.
给定训练集,将样例投影到一条直线上,使得同类样本的投影点更接近,异类样本的投影点尽可能远离
给定数据集$D={(x_i,y_i)}^m_{i=1}$,$y_i \in {0,1}$;令$X_i、\mu_i、\sum_i$分别表示第$i \in {0,1}$类示例的集合、均值向量、协方差矩阵。
- 两类样本的中心在直线上的投影分别为$wT\mu_0、wT\mu _1$
- 两类样本的协方差矩阵分别为$wT\sum_0w、wT\sum_1w$
笔记:直线是一维空间,所以上面的4个量都是常数
条件:
- 同类样本更加的近,可以让同类样本的协方差尽可能小,$wT\sum_0w+wT\sum_1w$尽可能小
- 异类样本的尽可能远,可以让类中心的距离尽可能的大,$||wT\mu_0-wT\mu _1||^2_2$尽可能大
- 同时考虑上面的两个情况,得到最大化的优化目标
$$
J=\frac{||wT\mu_0-wT\mu _1||2_2}{wT\sum_0w+w^T\sum_1w}
$$
定义类内散度矩阵
为:
$$
\begin{align}S_w&= \sum_0+\sum_1 \&= \sum_{x \in X_0}(x-\mu_0)(x-\mu_0)^T+\sum_{x \in X_1}(x-\mu_1)(x-\mu_1)^T\end{align}
$$
定义类间散度矩阵
为:
$$
S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T
$$
那么,优化目标可以重写如下,这就是LDA欲优化的目标:
$$
J=\frac{wTS_bw}{wTS_ww}
$$
多分类学习
3种拆分策略
多分类的学习任务通常是拆分成为二分类的任务来解决的。常见的拆分策略包含:
- 一对一,
One vs One,OvO
;需要$N(N-1)/2$个分类器 - 一对其余,
One vs Rest,OvR
;需要N个分类器 - 多对多,
Many vs Many, MvM
;常用的技术是纠错输出编码Error Correcting Output Codes,ECOC
纠错输出编码ECOC
主要工作是分为两步:
- 编码:将N个类别做M次划分,一部分作为正例,一部分作为反例,形成一个二分类训练集;这样共产生M个训练集
- 解码:M个分类器分别对测试样本进行预测,预测标记组成一个编码;将这个预测编码和各自的编码进行比较,返回距离最小的类别作为最终预测结果。
类别划分通过**“编码矩阵”**来实现,常用的是:
- 二元码:正类和反类
- 三元码:正类、反类和停用类
类别不平衡
类别不平衡指的就是分类任务重不同类别的训练样例数目差别很大的情况。通常采用的再缩放rescaling来解决
- 直接对样例中的反例进行欠采样
- 直接对样例中的正例进行过采样
- 直接基于原始训练集进行学习,称之为阈值移动
几个主要的特点
- 欠采样的时间开销通常是小于过采样
- 欠采样若采用的是随机丢弃,可能造成重要信息缺失