之前上了台大的机器学习基石课程,里面用的教材是《Learning from data》,最近看了看觉得不错,打算深入看下去,内容上和台大的课程差不太多,但是有些点讲的更深入,想了解课程里面讲什么的童鞋可以看我之前关于课程的第一章总结列表:

  1. 机器学习定义及PLA算法
  2. 机器学习的分类
  3. 机器学习的可能性
  我打算边看书边复习讲义,然后用自己的话把每章能看懂的点总结下,欢迎大家指正。由于用语会尽量口语保证易懂,所以会有失严谨性,具体的细节可以看本书。《Learning from data

  
  第一章主要解决两个问题:
  1. 通过一个例子介绍机器学习算法;
  2. 粗略的证明为什么机器学习是可行的?
  关于第一点
  虽然举得例子PLA比较简单,也基本没啥可用性,但是确实比较适合做为第一个机器学习算法给初学者基本的印象。这个算法的理解在于迭代不等式,为什么这个等式可以不断纠错直到最终的收敛?
 
  Cousera课程的ppt上有个很直观的解释:
  
  当y=+1时,表示x与w(也就是直线的法向量,假设w朝向正的这边)的夹角小于90℃,如果有一个点它与w的夹角大于90℃说明是分错的点,做一个向量的加法即可让朝着与x夹角减小的方向前进(问题1,不一定一次就搞定吧?)。
  迭代的方向没问题之后,剩下的就是为什么会收敛?证明思路是构造一个最终的完美的wf(即可以完全平分数据集的直线),然后证明w最终在有限轮之后可以和wf的夹角为0,具体证明可以看这里。 
  
  2 前一个PLA的例子是给初学者直观的映像,什么是机器学习算法,个人觉得第一章最精华的地方是第二点,即粗略证明机器学习是可能的。
  首先,什么是机器学习?从这本书的书名我们可以得到简单的解释,是指机器从数据中学习,这个非常关键,有些时候不是学习而是记忆,例如人们学习数学公式,由于公式已经是确定的理论成果,已经经过实践检验的,那个不是学习而是记忆,然后理解,而学习是它的反向过程,即要求人或机器去推导出这样一个公式,所以机器学习的先觉条件是数据。之后才是算法之类的。
  有了数据以后,我们就要开始学习了。假设全部的数据用D表示,我们拿到的用于训练的数据用d表示,所谓学习,本质上是得到一个假设函数g,这个g在抽样数据集d上错误率很小,更重要的是,它在全集D的错误率也很低,这样我们就可以用g去预测未来各种情况了,也就是说我们学到了g。严格来说,机器学习伴随着两个过程,一个是学习即求解g,第二个就是验证了。
  换句话说。这里有两个问题我们需要解决:
  1. 这个假设g怎么得到?-- 学习
  2. 怎么保证我们的g在全集D的错误率很低?全集D是无限大的,我们怎么知道?-- 验证
  第一个问题,就是机器学习算法要知道的,就是从一堆假设里面选。怎么选?当然选能够在我们的d上表现最好的,这样我们就得到了那个g。其实这个问题没那么简单,因为有第二个问题。怎么验证得到的g在全集的错误率低?d上的错误率和D上的错误率有没有关系呢?这个叫做g的泛化能力。我们只能求助于概率统计了,那个神奇的公式就是hoffeding inequality。如下所示:
  
  从公式的形式不能看出,它能表示假设h在d和D上的错误率之差在一定的范围内的概率,我们只需要让这个概率越大越好。从公式,我们就可以发现,只要N越大,这个就能得到保证,看看,数据的多少也很重要。这里有两个隐形的条件:
  1. h是固定的,也就是说,这个公式只预先得到的h有作用;
  2. d的抽取,必须能够反映D的概率分布,这个很自然,如果d只能表示一部分,那我们学不全嘛,会有很多没见过的样子,怎么学。。。,所以一般都是随机抽取,而不是人工看到哪个数据顺眼选哪个,这个和直觉是相符的,我们做抽样检查就是基于这个原理;
   问题又来了,机器学习的训练过程就是先确定数据,再从茫茫多(暂且理解为M个)的假设里面选取最佳的假设,这样的话hoffeding inequality就不能直接用了?当然不会,花了这么大力气隆重介绍的神奇公式最后不能用岂不很惨。首先明确,问题是什么?我们要证明:
    
  这个东西是有上限的,这样g才能够在全集D上错误率有所保障。条件呢? 我们有M个假设,这个是预先确定的,因为机器学习算法已经定好了才能学,而我们选的g是从M中来的,所以可以得到:
    
  在概率里面一个事件A可以推导出另一个事件B则其发生的概率是小于等于B的,所以得到了最终M个概率的和:
  
  这个上限是很松的,而且很多机器学习算法的假设貌似是无限啊,像PLA,那可是全体直线。。。这个问题是第二章要证明的,结论肯定是,还有个更紧的上线能够保证g的错误率在d和D上接近。有了这个,我们就能够放心的选取错误率最小的假设作为g了,因为这个错误率可以泛化到全集。这里再次说明下,那我们去找错误率为0的就行了啊,可是要找到那个假设得要多少备胎啊,备胎越多M越大,泛化能力就下来了,那就有可能选到的最小的不一定在全集D表现好(例子可参见这里提到的硬币翻转实验),可见万事万物都是要平衡的。

Learning From Data 第一章总结的更多相关文章

  1. 《Machine Learning》(第一章)序章

    关键词:机器学习,基本术语,假设空间,归纳偏好,机器学习用途 一.机器学习概述 机器学习是一门从数据中,经过计算得到模型(Model)的一种过程,得到的模型不仅能反应出训练数据集中所蕴含的规律,并且能 ...

  2. 《Deep Learning》译文 第一章 前言(中) 神经网络的变迁与称谓的更迭

    转载请注明出处. 第一章 前言(中) 1.1 本书适合哪些人阅读? 能够说本书的受众目标比較广泛,可是本书可能更适合于例如以下的两类人群.一类是学习过与机器学习相关课程的大学生们(本科生或者研究生). ...

  3. 强化学习 reinforcement learning: An Introduction 第一章, tic-and-toc 代码示例 (结构重建版,注释版)

    强化学习入门最经典的数据估计就是那个大名鼎鼎的  reinforcement learning: An Introduction 了,  最近在看这本书,第一章中给出了一个例子用来说明什么是强化学习, ...

  4. 《驾驭Core Data》 第一章 Core Data概述

    <驾驭Core Data>系列教程综合了<Core Data for iOS>,<Learning Core Data for iOS>,<Core Data ...

  5. Learning Scrapy 中文版翻译 第一章

    第一章:scrapy介绍 欢迎来到scrapy之旅.通过这本书,我们将帮助你从只会一点或者零基础的Scrapy初学者达到熟练使用这个强大的框架在互联网或者其他资源抓取海量的数据.在这一章节,我们将给你 ...

  6. Day1 《机器学习》第一章学习笔记

    <机器学习>这本书算是很好的一本了解机器学习知识的一本入门书籍吧,是南京大学周志华老师所著的鸿篇大作,很早就听闻周老师大名了,算是国内机器学习领域少数的大牛了吧,刚好研究生做这个方向相关的 ...

  7. Nova PhoneGap框架 第一章 前言

    Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...

  8. 《Entity Framework 6 Recipes》翻译系列(2) -----第一章 开始使用实体框架之使用介绍

    Visual Studio 我们在Windows平台上开发应用程序使用的工具主要是Visual Studio.这个集成开发环境已经演化了很多年,从一个简单的C++编辑器和编译器到一个高度集成.支持软件 ...

  9. Asp.Net MVC4 + Oracle + EasyUI 学习 第一章

    Asp.Net MVC4 + Oracle + EasyUI  第一章 --操作数据和验证 本文链接:http://www.cnblogs.com/likeli/p/4234238.html 文章集合 ...

随机推荐

  1. Java关键字

    Java关键字简介 类别 关键字 说明 访问控制 private 私有的 protected 受保护的 public 公共的 类.方法和变量修饰符 abstract 声明抽象 class 类 exte ...

  2. style

    设计的默认单位为px; 为了简化设计,都是以750px为基本单位设计的,如果屏幕大小不同,它会根据屏幕大小自动缩放. 它的样式选择和CSS非常类似,但是和CSS选择器不同的是,它只支持单级选择,不支持 ...

  3. 立flag

    lixintong这半年来一直浪啊浪啊都不认真做题!!!!!!简直是太堕落啦!!lixintong非常讨厌这样的lixintong !!! 鉴于lixintong NOIP 完全爆炸啦! lixint ...

  4. PAT (Basic Level) Practise 1045 快速排序(离散化+主席树区间内的区间求和)

    1045. 快速排序(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 著名的快速排序算法里有一个经典的划分 ...

  5. VirtualBox Ubuntu Server 16.04 手动设置 网络(IP, DNS, 路由)

    1. VirtualBox 设置全局网络 在virtualBox点击菜单管理->全局管理 配置NAT网络 参考下图配置, 依次点击相应的按钮并设置网络(其中DHCP任意, 将来我们都会使用固定I ...

  6. 【SIGGRAPH】【最终幻想XV】的战斗场景实时演示的要点解说

    [SIGGRAPH][最终幻想XV]的战斗场景实时演示的要点解说 原文:西川善司 http://www.4gamer.net/games/999/G999902/20160730004/        ...

  7. Maven环境搭建

    1,下载maven zip版   http://maven.apache.org/download.cgi 2,配置maven环境变量 (1) 新建MAVEN_HOME环境变量  E:\TOOLS\A ...

  8. ScrollBar, Not working

    Case 1: TabPanel autoScroll, DataGridView full anchor. DataGridView full anchor to partial anchor, t ...

  9. 基于fab自动化部署

    fab是一个python库,强大好使,可以做很多帮助你减轻工作量的事情,比如在多台服务器上部署web项目,这里就讲讲使用它简单的方法来执行部署的过程. 关于fab的安装的基本使用,网上一搜一大把,内容 ...

  10. nginx 不带www到www域名的重定向

    如果是单次重定向用 redirect, 如果永久跳转用 permanent,这里用 permanent { listen       80; server_name  xxx.com www.xxx. ...