背景:一直想要梳理一下自己对广义线性模型的认识及思考,所有就有了这篇随笔。

前提

1、首先明确,介绍模型会按照模型的三要素来展开,即模型(模型的参数空间),策略(如何选择最优模型,一般指代价函数/损失函数),算法(模型学习参数的方法,包括最优化方法等)

2、因为介绍的模型都是线性模型及其演化,有个概念必须要介绍

超平面:N维空间的N-1维子空间,比如当N=2时,超平面就是二维空间中的一条线

 

一、线性回归

该算法主要拟合一个线性超平面,用于回归任务(预测值为连续值)。举个例子,房价预测任务,如果只考虑房屋面积,则训练出的超平面及为二维空间关于面积和房价的直线。

模型:

若样本用d维特征来表示,则有

 

使用向量的形式表示为

 

 则模型的参数空间为w及b

 

策略:

 

 最小化均方误差

 

算法:

这里有两种方法,

一种方法是算出参数的表达式,直接求解(该方法一般不使用,原因随着特征或者样本数量增长,计算的时间复杂度指数级增加),如下

 

 

 

 

 

 

 另一种方法是最优化理论中的迭代方法,最常用的是梯度下降法,参数通过加上负梯度进行更新,

求梯度

 

 使用梯度对参数进行更新(这里使用的是批梯度下降算法)

 

 

问题:当目标变量与特征之间为非线性关系,我们又该怎样去拟合呢

 

二、多项式回归

思路如下图所示

 

 模型整体和线性回归相似,所以这里不展开讨论

 

问题:线性回归可以解决回归问题,那针对分类问题,我们应该怎样用线性模型去解决呢?

 

三、感知机

线性回归在N维空间中找到了线性超平面去拟合数据,同时,该线性超平面也把特征空间划分成了两份,据此,我们可以思考,这个超平面可以拿来进行分类吗?当然可以,感知机就是这样做的。

 

模型:

 

 我们可以看到,感知机就是使用sign函数对线性回归结果映射到了{-1,1}

 

策略:

 

 

算法:

 

 

 

 

问题:感知机可以用于分类,且能够输出预测样本对应的类别,但清楚感知机原理的我们知道,虽然有可能N个样本都被预测为A类,但实际他们属于A类的可能性是不同的,具体表现在有的样本点在特征空间中距离分类超平面比较近,有的则比较远;鉴于此,我们能不能输出某样本属于A类别的概率呢?

 

四、逻辑回归(logistics regression)

 

模型:

感知机使用线性回归模型作为分类超平面,将线性回归结果映射到{-1,1}的离散集合上

 

 其中红框的值域为负无穷到正无穷,那我们能不能使用一个函数将其映射到[0,1]呢。逻辑回归便是选择了sigmoid函数进行映射,

 

 

 

 该函数既可以实现区间映射,又具有单调可微的特性(方便使用迭代的最优化方法计算模型参数)

另外,对于“逻辑回归”的名字,很多人觉得这是个“假名”,“误导人”,认为它明明是分类算法却叫做“回归”

其实,他还真的和名字所述,是对“对数”进行了“回归”

上一个公式可以变化为

 

 定义y/1-y为事件发生的“几率”,则逻辑回归的是指是对几率的对数进行回归拟合。

 

策略:

采用极大似然估计

 

 

算法:

由于目标函数连续可导,根据凸优化理论,可以通过一阶法(梯度下降等)或二阶法(牛顿法)等进行参数迭代计算

 

 

问题:对于分类任务,感知机和逻辑回归都只能处理线性可分的任务,那如何才能处理线性不可分的任务呢?而且按照之前支持向量机迭代求解分类超平面的方式,我们只是在众多的符合条件的分类超平面中选择了一个,那能否选择一个相对更好一些的分类超平面呢?

 

五、支持向量机(SVM)

支持向量机通过以下思路解决了上述问题:

(1)针对分类超平面的选择问题,SVM采用最大间隔的方法,使超平面距离两侧不同类别的点尽可能地远

 

 

(2)针对在当前维度的特征空间下线性不可分的问题,我们对其进行维度扩张,在更高的维度对其进行线性划分。在当前维度线性不可分不代表在更高维度线性不可分。举个例子,演员拍摄吻戏经常采用错位的方式,在镜头所能看到的二维平面中,找不到一条直线将他们的嘴分割开来,但考虑三维空间,在一个现场工作人员看来,有大量的可选平面将他们两人的嘴分开。再比如下图中的异或问题

 

 

 

 接下来又有另一个问题,我们已经用高维向量计算表示出了最大分类间隔,那怎样去表示具体的高维向量呢,考虑到维度可能会很高,计算复杂度可能会很大,我们可以采用核函数来进行等价计算

 

 

 

 支持向量机的核心就是以上两点,更多细节可以看一下其他的博客或书籍,篇幅原因不再展开

 

问题:除了SVM之外,还有其他方法可以解决线性不可分问题吗?

 

六、神经网络

神经网络通过特征之间的组合(多层),不仅能够解决线性不可分问题,还能够保留数据的时空结构(有位置关系的图像数据和有时间先后关系的自然语言),再该类数据集上表现出强大的应用能力。

总之,当前kaggle上表现最好的两类算法,梯度提升算法更加适合于表格类型结构的数据,需要进行特征工程,对少量样本也能学习到较好的模型;神经网络更加适合有时空结构的数据,不需要复杂的特征工程,是端对端的学习,但需要大量的训练数据作为支撑。

个人认为神经网络的强悍之处在于对时空数据的保留与学习能力+无处不在的特征组合。

 

 

 

神经网络具体内容略多,不展开啦,本文重点梳理思路。

 

 

参考:

https://www.cnblogs.com/huangyc/p/9706575.html
https://blog.csdn.net/qq_36523839/article/details/82924804

李航-统计学习方法

周志华-机器学习

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/tianyadream/p/12512806.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!