线性模型

线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,既可以用于分类 也可以用于回归。从数学角度讲,回归就是用超平面做拟合,分类就是用超平面做分割。

谈及线性模型,其实我们很早就已经与它打过交道,还记得高中数学必修3课本中那个顽皮的“最小二乘法”吗?这就是线性模型的经典算法之一:根据给定的(x,y)点对,求出一条与这些点拟合效果最好的直线y=ax+b,之前我们利用下面的公式便可以计算出拟合直线的系数a,b(3.1中给出了具体的计算过程),从而对于一个新的x,可以预测它所对应的y值。
b=x1y1+x2y2+⋯+xnyn−nxˉyˉx12+x22+⋯+xn2−nxˉ2;a=yˉ−bxˉb=\frac{x_{1} y_{1}+x_{2} y_{2}+\cdots+x_{n} y_{n}-n \bar{x} \bar{y}}{x_{1}^{2}+x_{2}^{2}+\cdots+x_{n}^{2}-n \bar{x}^{2}} ; a=\bar{y}-b \bar{x} b=x12​+x22​+⋯+xn2​−nxˉ2x1​y1​+x2​y2​+⋯+xn​yn​−nxˉyˉ​​;a=yˉ​−bxˉ
前面我们提到:在机器学习的术语中,当预测值为连续值时,称为“回归问题”,离散值时为“分类问题”。本篇先从线性回归任务开始,接着讨论分类和多分类问题。

线性回归

  • 线性回归问题就是试图学到一个线性模型尽可能准确地预测新样本的输出值。

    在线性模型,有时这些输入的属性值并不能直接被我们的学习模型所用,需要进行相应的处理。

    对于连续值的属性,一般都可以被学习器所用,有时会根据具体的情形作相应的预处理,例如:归一化等;

    对于离散值的属性,可作下面的处理:

    • 若属性值之间存在“序关系”,则可以将其转化为连续值,例如:身高属性分为“高”“中等”“矮”,可转化为数值:{1, 0.5, 0}。
    • 若属性值之间不存在“序关系”,则通常将其转化为向量的形式,例如:性别属性分为“男”“女”,可转化为二维向量:{(1,0),(0,1)}。

(1)当输入属性只有一个的时候,就是最简单的情形,也就是我们高中时最熟悉的“最小二乘法”(Euclidean distance),首先计算出每个样本预测值与真实值之间的误差并求和,通过最小化均方误差MSE,使用求偏导等于零的方法计算出拟合直线y=wx+b的两个参数w和b,计算过程如下图所示:

(2)当输入属性有多个的时候,例如对于一个样本有d个属性{(x1,x2…xd),y},则y=wx+b需要写成:

通常对于多元问题,常常使用矩阵的形式来表示数据。在本问题中,将具有m个样本的数据集表示成矩阵X,将系数w与b合并成一个列向量,这样每个样本的预测值为:

优化目标是最小化代价函数,所有样本的均方误差最小化就可以写成下面的形式:

同样地,我们使用最小二乘法对w和b进行估计,令均方误差的求导等于0,需要注意的是,当一个矩阵的行列式不等于0时,我们才可能对其求逆,因此对于下式,我们需要考虑矩阵(XTX^TXT)的行列式是否为0,若不为0,则可以求出其解,若为0,则需要使用其它的方法进行计算,书中提到了引入正则化,此处不进行深入。

另一方面,有时像上面这种原始的线性回归可能并不能满足需求,例如:y值并不是线性变化,而是在指数尺度上变化。这时我们可以采用线性模型来逼近y的衍生物,例如lny,这时衍生的线性模型如下所示,实际上就是相当于将指数曲线投影在一条直线上,如下图所示:

更一般地,考虑所有y的衍生物的情形,就得到了“广义线性模型”(generalized linear model),其中,g(*)称为联系函数(link function)。

广义线性模型:线性模型得到的结果的某种变化去模拟/逼近真实值,从而使得使得广义线性模型具有很好的非线性拟合能力

对数几率回归

回归就是通过输入的属性值得到一个预测值,利用上述广义线性模型的特征,是否可以通过一个联系函数,将预测值转化为离散值从而进行分类呢?线性几率回归正是研究这样的问题。对数几率引入了一个对数几率函数(logistic function),将预测值投影到0-1之间,从而将线性回归问题转化为二分类问题。

若将y看做样本为正例的概率,(1-y)看做样本为反例的概率,则上式实际上使用线性回归模型的预测结果器逼近真实标记的对数几率。因此这个模型称为“对数几率回归”(logistic regression),也有一些书籍称之为“逻辑回归”。

假设对于输入X分类为 1 和0的概率分别为:
P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)\begin{gathered} P(y=1 \mid x ; \theta)=h_{\theta}(x) \\ P(y=0 \mid x ; \theta)=1-h_{\theta}(x) \end{gathered} P(y=1∣x;θ)=hθ​(x)P(y=0∣x;θ)=1−hθ​(x)​
则概率函数为:
P(y∣x;θ)=(hθ)y⋅(1−hθ)1−yP(y \mid x ; \theta)=\left(h_{\theta}\right)^{y} \cdot\left(1-h_{\theta}\right)^{1-y} P(y∣x;θ)=(hθ​)y⋅(1−hθ​)1−y
假设样本数据有m个, 并且独立, 则他们的联合分布可以由各边际分布的乘积表示, 则有似然函数为:
L(θ)=∏i=1mP(y(i)∣x(i);θ)=∏i=1m(hθ(x(i)))y(i)⋅(1−hθ(x(i)))1−y(i)L(\theta)=\prod_{i=1}^{m} P\left(y^{(i)} \mid x^{(i)} ; \theta\right)=\prod_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)\right)^{y^{(i)}} \cdot\left(1-h_{\theta}\left(x^{(i)}\right)\right)^{1-y^{(i)}} L(θ)=i=1∏m​P(y(i)∣x(i);θ)=i=1∏m​(hθ​(x(i)))y(i)⋅(1−hθ​(x(i)))1−y(i)
取对数似然函数:
l(θ)=log⁡(L(θ))=∑i=1m[log⁡((hθ(x(i)))y(i))+log⁡((1−hθ(x(i)))1−y(i))]l(\theta)=\log (L(\theta))=\sum_{i=1}^{m}\left[\log \left(\left(h_{\theta}\left(x^{(i)}\right)\right)^{y^{(i)}}\right)+\log \left(\left(1-h_{\theta}\left(x^{(i)}\right)\right)^{1-y^{(i)}}\right)\right] l(θ)=log(L(θ))=i=1∑m​[log((hθ​(x(i)))y(i))+log((1−hθ​(x(i)))1−y(i))]
化简:
l(θ)=log⁡(L(θ))=∑i=1m[y(i)log⁡(hθ(x(i)))+(1−y(i))log⁡((1−hθ(x(i)))]l(\theta)=\log (L(\theta))=\sum_{i=1}^{m}\left[y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right) \log \left(\left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]\right. l(θ)=log(L(θ))=i=1∑m​[y(i)log(hθ​(x(i)))+(1−y(i))log((1−hθ​(x(i)))]
为了求解最优的㟥数 θ\thetaθ, 则需要最大化上述的对数似然函数,而上述的对数似然函数是以和的形式展示的,取负号,并乘以一个常数项,问题则变为求最小值, 转 化如下:
−1m∑i=1m[y(i)log⁡(hθ(x(i)))+(1−y(i))log⁡((1−hθ(x(i)))]-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right) \log \left(\left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]\right. −m1​i=1∑m​[y(i)log(hθ​(x(i)))+(1−y(i))log((1−hθ​(x(i)))]
就是逻辑回归的损失函数

线性判别分析

线性判别分析(Linear Discriminant Analysis,简称LDA),其基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远。如图所示:

想让同类样本点的投影点尽可能接近,不同类样本点投影之间尽可能远,即:让各类的协方差之和尽可能小,不同类之间中心的距离尽可能大。基于这样的考虑,LDA定义了两个散度矩阵。

  • 类内散度矩阵(within-class scatter matrix)

  • 类间散度矩阵(between-class scaltter matrix)

因此得到了LDA的最大化目标:“广义瑞利商”(generalized Rayleigh quotient)。

从而分类问题转化为最优化求解w的问题,当求解出w后,对新的样本进行分类时,只需将该样本点投影到这条直线上,根据与各个类别的中心值进行比较,从而判定出新样本与哪个类别距离最近。求解w的方法如下所示,使用的方法为λ乘子。

若将w看做一个投影矩阵,类似PCA的思想,则LDA可将样本投影到N-1维空间(N为类簇数),投影的过程使用了类别信息(标记信息),因此LDA也常被视为一种经典的监督降维技术。

多分类学习

现实中我们经常遇到不只两个类别的分类问题,即多分类问题,在这种情形下,我们常常运用“拆分”的策略,通过多个二分类学习器来解决多分类问题,即将多分类问题拆解为多个二分类问题,训练出多个二分类学习器,最后将多个分类结果进行集成得出结论。最为经典的拆分策略有三种:“一对一”(OvO)、“一对其余”(OvR)和“多对多”(MvM),核心思想与示意图如下所示。

  • OvO:给定数据集D,假定其中有N个真实类别,将这N个类别进行两两配对(一个正类/一个反类),从而产生N(N-1)/2个二分类学习器,在测试阶段,将新样本放入所有的二分类学习器中测试,得出N(N-1)个结果,最终通过投票产生最终的分类结果。

  • OvM:给定数据集D,假定其中有N个真实类别,每次取出一个类作为正类,剩余的所有类别作为一个新的反类,从而产生N个二分类学习器,在测试阶段,得出N个结果,若仅有一个学习器预测为正类,则对应的类标作为最终分类结果。

  • MvM:给定数据集D,假定其中有N个真实类别,每次取若干个类作为正类,若干个类作为反类(通过ECOC码给出,编码),若进行了M次划分,则生成了M个二分类学习器,在测试阶段(解码),得出M个结果组成一个新的码,最终通过计算海明/欧式距离选择距离最小的类别作为最终分类结果。

类别不平衡问题

类别不平衡(class-imbanlance)就是指分类问题中不同类别的训练样本相差悬殊的情况,例如正例有900个,而反例只有100个,这个时候我们就需要进行相应的处理来平衡这个问题。常见的做法有三种:

  1. 在训练样本较多的类别中进行“欠采样”(undersampling),比如从正例中采出100个,常见的算法有:EasyEnsemble。
  2. 在训练样本较少的类别中进行“过采样”(oversampling),例如通过对反例中的数据进行插值,来产生额外的反例,常见的算法有SMOTE。
  3. 直接基于原数据集进行学习,对预测值进行“再缩放”处理。其中再缩放也是代价敏感学习的基础。

机器学习(五)线性模型详解相关推荐

  1. python随机森林变量重要性_随机森林如何评估特征重要性【机器学习面试题详解】...

    今天爱分享给大家带来随机森林如何评估特征重要性[机器学习面试题详解],希望能够帮助到大家. 解析: 衡量变量重要性的方法有两种,Decrease GINI 和 Decrease Accuracy: 1 ...

  2. 极智AI | 量化实现分享五:详解格灵深瞳 EQ 量化算法实现

    欢迎关注我的公众号 [极智视界],回复001获取Google编程规范   O_o   >_<   o_O   O_o   ~_~   o_O   大家好,我是极智视界,本文剖析一下格灵深瞳 ...

  3. 五步详解小学数学之盈亏问题

    给幺儿写了一个五步详解小学盈亏问题,比网上搜到的简单明了: 一.两大元素概念: 二.盈与亏的概念: 三.解决盈亏问题,套用的公式 四.问题中除了盈.亏,还有平,就是刚好分完的情况: 五.最后的大bos ...

  4. 机器学习分类器评价指标详解(Precision, Recall, PR, ROC, AUC等)(一)

    为了系统性地理解机器学习模型的不同评价指标及其之间的关系,我们将从其定义出发,探究其物理含义及彼此之间的联系,并从数学上给出相应的公式推导,以方便后续用到时复习理解.由于篇幅较长,因此将其分为两篇,这 ...

  5. 机器学习经典算法详解及Python实现--元算法、AdaBoost

    http://blog.csdn.net/suipingsp/article/details/41822313 第一节,元算法略述 遇到罕见病例时,医院会组织专家团进行临床会诊共同分析病例以判定结果. ...

  6. matlab中k-means算法_机器学习 | KMeans聚类分析详解

    大量数据中具有"相似"特征的数据点或样本划分为一个类别.聚类分析提供了样本集在非监督模式下的类别划分.聚类的基本思想是"物以类聚.人以群分",将大量数据集中相似 ...

  7. 高速的二舍八入三七作五_详解青银高速市区段计费方法人工车道比ETC贵3元

    青岛新闻网1月7日讯(记者 江东旭 )今天,记者从青岛市交通运输局获悉,根据交通运输部关于取消高速公路省界收费站工作安排,2020年1月1日0时完成高速公路收费系统切换,进入全国高速公路联网收费模式. ...

  8. 绘制系列(五)-DrawText()详解

    绘制系列(五)-DrawText()详解 文字基础知识 1.setTextAlign() 设置文字对齐方式(起始点相对于文字) canvas.drawText("文字",起始点,p ...

  9. Liblinear机器学习库教程详解(基于Python API)

    前言 Liblinear机器学习库主要实现SVM算法,在处理大规模数据时速度快,但也有缺点,就是太吃内存,博客 https://blog.csdn.net/roguesir/article/detai ...

  10. Android Telephony分析(五) ---- TelephonyRegistry详解

    本文紧接着上一篇文章<Android Telephony分析(四) -- TelephonyManager详解 >的1.4小节.  从TelephonyRegistry的大部分方法中:  ...

最新文章

  1. 如何在Web页面上直接打开、编辑、创建Office文档 (转载)
  2. http常见状态码详解
  3. 如何更高效地压缩时序数据?基于深度强化学习的探索
  4. Hopsan -- 液压、电力等行业的仿真开源软件
  5. php sql desc,PHP SQL 查询封装
  6. node.js——麻将算法(七)简易版麻将出牌AI2.0
  7. 静态代码块和单例混合
  8. 贷前调查必须采集的十大客户信息
  9. 【HDL系列】半减器、全减器和减法器原理和设计
  10. 2022茶艺师(中级)考题及模拟考试
  11. modeler 连接oracle,用 IBM SPSS Modeler 整合不同数据库之间的数据
  12. 蓝桥 卷“兔”来袭编程竞赛专场-04栅栏加密 题解
  13. C#中Property和Attribute的区别
  14. php四则运算出题器
  15. xstart连接linux桌面使用的端口,配置XManager5连接Linux图形化界面详解
  16. 浅谈:支付结算系统的重要性
  17. 云服务器配置网站卡顿,大型网游云服务器要多大配置才能解决卡顿等问题?
  18. Vue 组件/ Prop单向数据流 / $emit自定义方法
  19. 【时间处理】Python 计算两个日期相差的天数
  20. pygame 界面制作编程需要

热门文章

  1. CGI 程 式 设 计
  2. 在线淘礼金免单采集网源码
  3. 2023华南理工大学计算机考研信息汇总
  4. 什么是软件成分分析(SCA)安全测试技术
  5. 关于微店整合微信支付时出现的的各种问题的记录 php版
  6. Beyond compare3.3 绿色版+右键菜单修复方法.rar
  7. Win10 蓝牙鼠标,删除失败
  8. openlayes3在地图上画点线
  9. HttpServletResponse对象实现文件下载
  10. 华为数据之道(4):华为是如何构建数据综合治理体系的?