第三章 线性模型

今天是杰伦生日,听到新歌了,我觉得还不错。网上有些人批评它,哎,虽然人各有好,但是还是有点忿忿不平……我这么多年也就粉杰伦一个。

 

好了,今天开始进入机器学习正题了。开始一个个模型涌来。其实我觉得学模型学算法还是很愉快的,因为这个东西很明确,像一个个实用的工具,你会有种很充实的感觉,反正不管中间听懂多少,都有种成就感。

我之前有听过吴恩达的课,他的课对这些模型建立、数学推导都讲的很详细(这里真的很佩服他),我有记笔记,但是没整理,有些推导隔了太久也忘了。周志华的书像是一个入门书,给你讲一个宏观层面的东西,细节方面其实没有太注重。我想了想,很多的数学推导放以后写吧,先按这本书的节奏来。

 

3.1基本形式

d个属性描述的示例x=(x1,x2,...,xd),其中,xi是x在第i个属性上的取值。线性模型就是试图构造这么一个函数用来预测,函数是:


一般也写成:

w就是前面的系数列向量,b是常数。

 

这个模型都很熟悉,比如说我要研究一个人的异性吸引力和哪些因素有关。我得到这个函数:

吸引力=0.7*外貌+0.6*气质+0.3*身高+0.4*学识+2

像外貌啊这些都是属性,0.7这些是我工作的主体,要把它们确定出来,之后就可以用它来判断你有多大吸引力,哪个因素最影响吸引力之类的。

 

3.2线性回归

先假设我的样本只有一个属性,我们就忽略关于属性的下标。试图学得:


,使得

就是想预测和真实差距越小越好嘛,这个差距怎么衡量呢?前面提过的均方误差是个不错的主意,用它来求得w和b:


:带个*是求得的解的意思

这个()就是当括号里的式子最小时取得的w和b值是多少。

对括号里的式子分别对w和b求导,令其为0,可以求得我们期待的w和b。(不写啦)

 

这个还不够普遍,多个属性才是常态。那我们现在就试图学得:

使得。这里的的xi,w都是向量了。

这叫“多元线性回归”。为了方便后面做数学处理,先变个形:

w和b写成一体:,也就是这样

数据集D表示成m*(d+1)矩阵X,也就是这样


标记写成向量形式,像这样


m就是数据集样本容量,d是特征向量维数(属性数)。

 

也是用均方误差最小方法:

老办法,对arg min后面的式子求导(对,

可得:

=0

想解出,前提是是满秩矩阵或正定矩阵。先就当这个条件满足,

解出:

基本问题解决了,原来的可以写成:

,里面的

现在这个函数的参数全部求出来了,你给一个新样本,它就可以预测了。

 

当然,是满秩矩阵可能性不太大,因为只要特征向量维数大于样本数,就使X矩阵的列数大于行数,就不满秩了。此时就会有多个解,选哪个呢?决定于你的算法归纳偏好。可以考虑引入正则化项。

 

我们再回头看这个简单的线性模型,写成这样:


我们就是想用y来逼近样本实际标记。那如果实际样本标记不是线性变化的呢?比如指数变化。不要慌张,这个模型很牛逼,照用不误。只要稍作改变:


这叫对数线性回归。

实质是让逼近y。表面上还是线性形式,实际上已经是一个输入空间到输出空间的非线性函数映射了。

不妨再大胆点:任意单调可微函数g(.)都可以用到这个模型里:

。这就是广义线性模型。

 

3.3 对数几率回归

 

前面一节注意我们的题目:线性回归。我们解决的预测值连续的回归问题,但是如果我要解决离散值的分类问题怎么办?

其实差不多嘛,比如说,你回归预测值在[0,1]区间连续取,我分类问题结果不是0就是1,其实就很像是回归问题的子问题是不是?

好了,思路其实就是拿回归的模型用的,只是把预测值用个函数转化成0/1值。用什么函数转换呢?

这个很容易想到:


z是回归模型的预测值。

但是这个函数在0点处不可微,不符合我们上一节讲的广义线性模型要求,扔掉……

介绍一个很帅气的sigmoid函数:

它长这个样子:

 

是不是很光滑,而且基本上很逼近前面的单位阶跃函数。

我们把原来的线性模型代进去:

变个形:


研究一波:y是样本为正的例的可能性,可以看一下上面的sigmoid图,他的取值在(0,1),越靠近1就越可能是正例。

1-y就是反例的可能性,这二者一比,就是x样本作为正例的相对可能性,取对数,称为“对数几率”。

那就一目了然了,我们在用线性回归的预测值去逼近真实标记的对数几率。这叫对数几率回归”,当然心中要有B数,这其实是分类

 

好了,原理搞清楚了,搞点实际工作,还是看这个家伙:


怎么求wb呢,用前面的均值误差最小理论上应该也是可以的,但是我认为比较麻烦。我们学点新的法子:极大似然法。

先定义几个概率:

P(y=1|x):样本x是正例的概率,也就是前面的y

P(y=0|x):样本x是反例概率,也就是1-y

所以把可以写成:

P(y=1|x)=y=,

P(y=0|x)=1-y=

 

我们可以通用地把样本是某个标记的概率写成这样:


其中就是sigmoid函数,也就是这个,用β表示(w;b)表示(x;1)。写的很巧妙。

极大似然法的思想就是让每个样本属于真实标记的概率越大越好,整个数据集咱们就把每个样本的概率连乘就好了,求极大:


连乘忍不住就要取对数转成累加,变成对数似然:


接下来把前面的带进去,一通化简,最大化l(w,b)就等价于最小化:

即:

这个可以用梯度下降法来做,详细推导很有趣,能帮助你更深入理解很多东西(先不写啦,放后面弄)。

还可以用牛顿法,牛顿法吴恩达也讲了原理。至于求解的结果也不写了,比较麻烦,主要是理解牛顿法原理。

 

3.4线性判别分析(LDA)


直接看图。对一个分类问题来说,我们说一个学习器性能好的标准是什么?就是同类的尽量靠近,异类尽量远离。形成“簇”的效果。

图中是把数据点投影到一条直线上,看表达式就知道是我们在训练的线性模型。

要使得同类投影点的协方差尽可能小,即尽可能小。 
要使得异类投影点距离尽可能大,也就是。其中Xi,μi,∑i分别表示i类示例的集合,均值向量和协方差矩阵 
故而只要使得

 

尽可能大就好,求解出对应的w就好。

定义两个矩阵:

类内散度矩阵:

类间散度矩阵:

这个没什么说的,不写了。

 

推广到多分类,不写了。

 

 

3.5多分类任务

 

前面分类的情况都是二分类,其实多分类也没什么新的东西,拆解成若干个二分类任务就好了。

经典拆解法:

一对一:OvO

一对其余:OvR

多对多:MvM(纠错输出码)

具体怎么搞,不写了。

 

3.6类别不平衡问题

 

类别不平衡问题指的是训练样本种正反例的数目量级不对等,例如正的例子有99998个,反例只有2个,那么如果学习方法返回的是永远是正例就有99.998%的精度,但没有预测反例的功能,故而没有价值。

处理的基本策略——”再缩放“(rescaling) 
数学形式上把>1判断为正例因为这时候近似认为正反例的数目是相等的,所有0.5的阈值是相对合理的,改成其中m+,m−分别代表训练集种正,反例数目

对应到数据采集层面,很多时候采样数据并不能达到”样本总体的无偏采集“的程度,所有未必能有效的基于训练样本观测几率再推测出真实的几率。 
从技术上大致现在有三类做法: 
①”欠采样“,去除一些例子,使得正反例数目接近再进行学习 
②”过采样“,多采集些反例使得正反例数目接近 /233,数学角度上不是采集角度 
③”阈值移动“,基于原始的训练集进行训练,但再进行分类的时候把嵌入到决策过程(再缩放)。

值得一提的是,”再缩放“是”代价敏感学习“(cost-sensitive learning)的基础。

 

 

 

凌晨一点,哎,写饿了,吃个趣多多睡觉。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值