机器学习算法原理、实现与实践——机器学习的三要素

1 模型

在监督学习中,模型就是所要学习的条件概率分布或决策函数。模型的假设空间包含所有可能的条件概率分布或决策函数。例如,假设决策函数是输入变量的线性函数,那么模型的假设空间就是这些线性函数构成的函数的集合。

假设空间用$\mathcal{F}$表示。假设空间可以定义为决策函数的集合
$$\mathcal{F}=\{f|Y=f(X)\}$$

其中,$X$和$Y$是定义在输入空间$\mathcal{X}$和输出空间$\mathcal{Y}$上的变量。这时$\mathcal{F}$通常是由一个参数向量决定的函数族
$$\mathcal{F}=\{f|Y=f_{\theta}(X),\theta\in \mathbf{R}^n\}$$

参数向量$\theta$取值于$n$维欧氏空间$\mathbf{R}^n$,称为参数空间(parameter space)。

假设空间也可以定义为条件概率的集合
$$\mathcal{F}=\{P|P(Y|X)\}$$

其中,$X$和$Y$是定义在输入空间$\mathcal{X}$和输出空间$\mathcal{Y}$上的变量。这时$\mathcal{F}$通常是由一个参数向量决定的条件概率分布族

$$\mathcal{F}=\{P|P_{\theta}(Y|X),\theta\in \mathbf{R}^n\}$$

称由决策函数表示的模型为非概率模型,由条件概率表示的模型为概率模型

2 策略

有了模型的假设空间,机器学习接着要考虑的是按照什么样的准则学习或选择最优的模型。
首先引入损失函数风险函数的概念。损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。

2.1 损失函数与风险函数

对于给定的输入$X$和假设空间$\mathcal{F}$中选择的决策函数模型$f$,由$f(X)$给出相应的输入$Y$,这个输出的预没值$f(X)$与真实值$Y$可能一致,也可能不一致,用一个损失函数或代价函数来度量预测的错误程度。损失函数是$f(x)$和$Y$的非负实值函数,记作$L(Y,f(X))$

几种常用的损失函数:

1) 0-1损失函数(0-1 loss function)
$$L(Y,f(X)) = \begin{cases}1, &Y\neq f(X) \\ 0, & Y=f(X)\end{cases}$$

2) 平方损失函数(quadratic loss function)
$$L(Y,f(X)) = (Y – f(X))^2$$

3)绝对损失函数(absolute loss function)
$$L(Y,f(X)) = |Y-f(X)|$$

4) 对数损失函数(logarithmic loss function)或对数似然损失函数
$$L(Y,P(Y|X)) = –logP(Y|X)$$

损失函数值越小,模型就越好。由于模型的输入、输出$(X,Y)$是随机变量,遵循联合分布$P(X,Y)$,所以损失函数的期望是
$$R_{exp}(f)=E_P[L(Y,f(X))]=\int_{\mathcal{X}\times\mathcal{Y}}L(y,f(x))P(x,y)dxdy$$

这是理论上模型$f(X)$关于联合分布$P(X,Y)$的平均意义下的损失,称为风险函数(risk function)或期望损失(expected loss)。

学习的目标就是选择期望风险最小的模型。由于联合分布$P(X,Y)$是所有样本所遵循的统计规律,它是未知的,所以$R_{exp}(f)$不能直接计算。实际上如果知道了联合分布,那么可以直接计算出$P(Y|X) = \int_{\mathcal{X}}P(x,y)dx$,也就不需要学习了。
所以用上面那种方式定义风险函数是不行的,那样的话监督学习变成了一个病态问题。

对于给定的训练数据集
$$T={(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)}$$

模型$f(X)$关于训练数据集的平均损失称为经验风险(empirical risk)或经验损失(empirical loss),记作$R_{emp}$:
$$R_{emp}(f) = \frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))$$

期望风险$R_{exp}(f)$是模型关于联合分布的期望损失,经验风险$R_{emp}(f)$是模型关于训练样本集的平均损失。根据大数定律,当样本容量$N$趋于无穷时,经验风险$R_{emp}(f)$趋向于期望风险$R_{exp}(f)$

所以,一个很自然的想法是用经验风险估计期望风险。但是,由于现实中训练样本数目很有限,所以用经验风险估计期望风险常常不理想,要对经验风险进行一定的矫正。这就关系到监督学习的两个基本策略:经验风险最小化结构风险最小化

2.2 经验风险最小化与结构风险最小化

在假设空间、损失函数以及训练数据集确定的情况下,经验风险函数式就可以确定。经验风险最小化的策略认为,经验风险最小的模型就是最优的模型。根据这一策略,按照经验风险最小化求最佳模型就是求解最优化问题:
$$\min_{f\in\mathcal{F}}\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))$$

其中$\mathcal{F}$是假设空间。

当样本容量足够大时,经验风险最小化能保证有很好的学习效果,在现实中广泛采用。比如极大似然估计就是经验风险最小化的一个例子。当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计。
但是当样本容量很小时,经验风险最小化学习效果就未必很好,会产生“过拟合(over-fitting)”现象。

结构风险最小化(structural risk minimization SRM)是为了防止过拟合而提出来的策略。结构风险最小化等价于正则化。结构风险在经验风险上加上表示模型复杂度的正则化项或罚项。在假设空间,损失函数以及训练样本集确定的情况下,结构风险的定义是
$$R_{srm}(f) = \frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))+\lambda J(f)$$

其中$J(f)$为模型的复杂度,是定义在假设空间$\mathcal{F}$上的泛函。模型$f$越复杂,复杂度$J(f)$就越大;反之,模型$f$越简单,复杂度$J(f)$就越小。也就是说复杂度表示了对复杂模型的惩罚。$\lambda\ge 0$是系数,用以权衡经验风险和模型的复杂度。结构风险小需要经验风险与模型复杂度同时小。结构风险小的模型往往对训练数据以及未知的测试数据都有较好的预测。
比如,贝叶斯估计中的最大后验概率估计(maximum posterior probability estimation,MAP)就是结构风险最小化的例子。当模型是条件概率分布、损失函数就是对数损失函数、模型复杂度由模型的先验概率表示时,结构风险最小化就等价于最大后验概率估计。

结构风险最小化的策略认为结构风险最小的模型是最优的模型。所以求最优化模型时,就是求解最优化问题:

$$\min_{f\in\mathcal{F}}\frac{1}{N}L(y_i,f(x_i))+\lambda J(f)$$

这样,监督学习问题就变成了经验风险或结构风险函数的最优化问题。这时经验或结构风险函数是最优化的目标函数。

3 算法

从上面可以看出,在确定寻找最优模型的策略后

机器学习的问题归结为最优化的问题。机器学习讨论的算法问题就成为了求解最优化模型解的算法。而且往往最优化模型没有的解析解,需要用数值计算的方法求解,我们要确保找到全局最优解,以及使求解的过程非常高效。

ML 03、机器学习的三要素的更多相关文章

  1. 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化

    1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...

  2. 机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables)

    机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables) 同样是预测房价问题  如果有多个特征值 那么这种情况下  假设h表示 ...

  3. Web Service基础——规范及三要素

    1. Java中的Web Service规范 Java 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC).JAX-RS.JAXM&SAAJ(废弃). 1.1 JAX- ...

  4. AI Boot Camp 分享之 ML.NET 机器学习指南

    今天在中国七城联动,全球134场的AI BootCamp胜利落幕,广州由卢建晖老师组织,我参与分享了一个主题<ML.NET 机器学习指南和Azure Kinect .NET SDK概要>, ...

  5. 小白学习之pytorch框架(3)-模型训练三要素+torch.nn.Linear()

    模型训练的三要素:数据处理.损失函数.优化算法    数据处理(模块torch.utils.data) 从线性回归的的简洁实现-初始化模型参数(模块torch.nn.init)开始 from torc ...

  6. 【腾讯Bugly干货分享】彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qOMO0LIdA47j3RjhbCWUEQ 作者:李 ...

  7. SEO基础问题:1. 关于网站的三要素你知道多少?

    800x600 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style ...

  8. Http协议:彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

    转载:http://mp.weixin.qq.com/s/uWPls0qrqJKHkHfNLmaenQ 导语 Http 缓存机制作为 web 性能优化的重要手段,对从事 Web 开发的小伙伴们来说是必 ...

  9. 移动web开发之屏幕三要素

    × 目录 [1]屏幕尺寸 [2]分辨率 [3]像素密度 前面的话 实际上,并没有人提过屏幕三要素这个词,仅是我关于移动web开发屏幕相关部分总结归纳的术语.屏幕三要素包括屏幕尺寸.屏幕分辨率和屏幕像素 ...

随机推荐

  1. linux init.d脚本编写模板

    #!/bin/bash ### BEGIN INIT INFO # # Provides: location_server # Required-Start: $local_fs $remote_fs ...

  2. Netbeans连接数据库

    /* Netbeans连接数据库 NetBeans项目的“项目属性”中“库”一栏中.Tab页“编译和运行”中已经加上jdbc的驱动文件 */ Connection conn = null;//连接数据 ...

  3. linux下syscall函数,SYS_gettid,SYS_tgkill

    出处:http://blog.chinaunix.net/uid-28458801-id-4630215.html     linux下syscall函数,SYS_gettid,SYS_tgkill  ...

  4. js中查找一个字符是否存在。

    <script> var a = 'd'; var re = a.indexOf('d'); ){ alert('存在'); } else { alert('不存在'); } </s ...

  5. 繁华模拟赛 David与Vincent的博弈游戏

    #include<iostream> #include<cstdio> #include<string> #include<cstring> #incl ...

  6. 字符串模拟赛T1

    // source code from laekov for c0x17 #define PRID "bxjl" #include <cstdio> #include ...

  7. IIS假死状态处理

    为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制  服务器经常产生“应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制.进程 ID 是 '2 ...

  8. Java和C#运行速度对比:Java比C#快约3倍

    测试条件: Java版本: Java 8, .NET版本:v4.0, Release模式,针对x86平台优化 单线程模式. 测试1:(测试1的代码摘自http://blog.csdn.net/houj ...

  9. ecshop的商品系统数据库整合

    -- 表的结构 `ecs_shop_config` '全站配置信息表'  商店设置   `id`   '全站配置信息自增id',`parent_id`  '父节点id,取值于该表id字段的值',`co ...

  10. IOC原理解释

    spring ioc它其实是一种降低对象耦合关系的设计思想,通常来说,我们在一个类调用另一个类的方法的时候,需要不断的new新的对象来调用该方法,类与类之间耦合度比较高,有了ioc容器以后,ico容器 ...