zoukankan      html  css  js  c++  java
  • 从线性回归到神经网络

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

    前提

    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

    李航-统计学习方法

    周志华-机器学习

  • 相关阅读:
    模式应用:自定义匹配
    WPF架构学习总结
    脑子是用来想事的,不是记事的
    参加峰会“金点子”的材料
    我所想的GIX4的权限
    Process, Thread, STA, MTA, COM object
    JAVA 游戏分享 “是男人就下100层”
    关于静态方法和实例方法的一些误区。
    软区域
    Dispose, Finalization, and Resource Management
  • 原文地址:https://www.cnblogs.com/tianyadream/p/12512806.html
Copyright © 2011-2022 走看看