3.1 基本形式
线性模型的基本形式3.2 线性回归
设属性x
若x是连续属性,则x直接取连续值,如,房价、身高。
若x是离散属性:
其中若x的值存在着顺序关系,那么我们可以将x的取值连续化,如属性为"高度",则取值本为"高"、"中"、"低",连续化后是"1.0"、"0.5"、"0.0";若x的值不存在顺序关系,假设有k的离散取值,则转化为k维向量,如x属性为"耳机",取值为"蓝牙耳机"、"无线耳机",可转化为(0,1)和(1,0)。
假设只有一个属性x
线性回归的目的在于构建一个线性模型,找到相应的参数,使得该模型的预测结果尽可能逼近真实结果,用数学表达如下。
以上就是单属性的模型求解过程。
接下来看看多变量(属性)的模型求解。
多变量的模型求解思路与单变量相似,只是计算更加灵活且复杂。
设样本有d个属性,则目的变成了构建一个模型,求多个参数,使得预测值更加逼近真实值,称为"多元线性回归"。
为了灵活计算和表达,我们可以将参数、数据集和真实结果用向量形式表达。如下:
接着问题就转换为找到对应参数,使得下式最小化。
接下来是广义线性模型
给定一些数据如下图,一开始使用简单的一次函数线性模拟(黄线)
通过对数函数让输出呈指数型,又保持形式上是线性回归,即在求输入(x)到输出(y)的非线性映射。这里的对数函数将预测值(y) 与 真实值(数据)联系了起来,下图容易理解。
上述讲述了用线性模型进行回归学习。
3.3 对数几率回归(分类任务)
对于分类任务,我们可以通过找一个单调可微函数将预测值和真实值联系起来。
- 考虑二分类任务,预测值只有两种,可以由实数0/1表示。
可以考虑最佳的模型是"单位阶跃函数":阶跃函数对数几率函数对数几率函数与单位阶跃函数近似将对数几率函数代入广义线性模型变化与lny = WTx + b相似y
为样本x
为正例的可能性,则1 - y
为反例的可能性,两者的比值称为"几率",对比值取对数,称为"对数几率"。几率与对数几率y
视为p(y=1|x)
,则1-y
就是p(y=0|x)
,则对数几率回归可以写为对数几率回归公式解析过程β
,使得上图最后一个式子最小化。接着就是找一个合适的算法(如牛顿法、梯度下降法),代入算法公式,然后求导令式子为0,求解出对应的参数即可,由于公式复杂难以理解,只是简单概括。
以上就是用对数几率回归进行二分类任务的过程。总结如下:
1.找到接近阶跃函数的对数几率函数。
2.将对率函数作为g-(·),代入广义线性模型,进行变化得到g(·)。
3.将y
和1-y
用g-(·)表示。
4.利用极大似然估计,找到参数矩阵β,使得g(·)最小化。
5.找一个算法(牛顿法、梯度下降法),代入算法公式,求导令式子为0,求解参数即可。
梯度下降法可以去观看吴恩达老师的机器学习第二章。
梯度下降法1
梯度下降法2
梯度下降法3
牛顿法
3.4 线性判别分析
线性判别分析(LDA)
基本思想:将训练样本点投影到一条直线上,同类样本投影尽量接近,异类样本投影尽量远离;然后根据新样本投影的位置判定新样本的分类。
令Xi,μi,∑i分别表示第i类样例的集合、均值向量、协方差矩阵。
则两类样本的中心在直线上的投影为wTμ0和wTμ1;两类样本在直线上所有投影的协方差为wT∑0w和wT∑1w。
为了让分类更加清晰,我们可以考虑让同类样本之间的投影尽可能小,则让同类间的协方差尽可能小;让异类样本之间的投影尽可能远,则让异类的中心距离尽可能大,则我们的目标转化为
3.5 多分类学习
- 基本思路:将多分类任务拆解成多个二分类任务。
- 关键:拆分多分类任务,即拆分策略。有以下三种
假设有N个类别(Class),C1,C2,……,CN
-
一对一(OvO,one vs. one)
一对一就是将N个类别两两配对,为区分Ci和Cj训练一个分类器,最终可得到N(N-1)/2
个分类器。测试时,新样本同时给这N(N-1)/2
个分类器,可得到N(N-1)/2
个结果,最终把预测最多的类别作为分类结果。OvO一对一 -
一对其余(OvR,one vs. rest)
每次将一个类的样例作为正例,所有其他类的样例作为反例来
训练N个分类器。在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。若有多个分类器预测为正类则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。OvR,仅有一个分类器预测为正类N(N-1)/2
个分类器,OvR训练了N
个分类器,OvO的开销比OvR大,但是在类别很多时,OvO的训练时间要比OvR小。 -
多对多(MvM,Many vs. Many)
每次将若干个类作为正类,若干个其他类作为反类。
MvM技术:纠错输出码(ECOC)
ECOC过程有两步:
1)编码
对N个类别做M次划分,每次划分将一部分M类别划为正类,一部
分划为反类,从而形成一个二分类训练集;这样一共产生M个训练集,可训练出M个分类器。类别划分通过"编码矩阵"(coding matrix) 指定。编码过程
2)解码
M个分类器分别对新样本进行预测,这些预测标记组成一个编
码。将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果。解码三元码
ECOC的特性:1)将编码的思想引入类别拆分。
2)在解码过程中具有容错性。
如,上图二远码中对测试示例的正确预测编码是(-1,+1 ,+1 ,-1,+1)
,假设在预测时某个分类器出错了,例如f2出错从而导致了错误编码(-1,-1 ,+1 ,-1,+1)
,但基于这个编码仍能产生正确的最终分类结果 C3。
3.6 类别不平衡问题
类别不平衡:分类任务中不同类别的训练样例数目差别很大的情况。如,训练集中有998个正例,2个反例。这样导致的问题就是精度过高,只要出现新样例,可以认为一定会判断为反例。
实际解决方法:
- 欠采样:即去除样本较多类别的一些样本,使得正、反例数目接近,然后再进行学习。如,正例太多,就去除掉一些正例。
- 过采样:即增加样本较少类别的样本,使得使得正、反例数目接近,然后再进行学习。如,正例太少,就增加一些正例。
- 代价敏感学习