课时1 引言(Introduction)

为什么机器学习这么流行

  • 实际上,机器学习是从AI即人工智能发展出来的一个领域,机器学习是为计算机开发的一项新功能,如今它涉及工业和基础科学中的许多领域。

应用

  • 数据挖掘,机器学习如此普遍的原因之一就是网络和自动化技术的发展,这意味着我们拥有了前所未有的大量的数据集。现在大量硅谷公司,收集网络点击数据或者说点击流数据,并试图采用机器学习算法来挖掘数据,更好地理解用户并更好地为用户服务。
  • 医疗记录,随着自动化的出现,现在我们有了电子医疗记录,假如我们能将医疗记录转化为医疗知识,就能更好地理解疾病。
  • 计算生物学,因为自动化生物学家收集了关于基因序列DNA序列等的大量数据,机器学习算法让我们更好地理解人类基因组,以及身为人类意味着什么;同样在工程学所有的领域,我们正设法采用学习算法,来理解越来越大的数据集。
  • 机器应用的第二个领域是我们无法手动编写的程序,例如已经在自动直升飞机领域研究了很多年,我们就是不知道如何编写程序,使直升飞机自己飞行,唯一可行的就是,让计算机自己学习驾驶直升飞机。
  • 手写识别,如今在美国国内或是跨国邮寄,不再昂贵的原因之一,就是当你写好这样一个信封后,学习算法能够读取你的手写体,然后自动地给你的信规划路线,因此邮寄几千公里之外的信也只需要花费几分钱。
  • 事实上,假如你知道自然语言处理或计算机视觉,这些是AI中有关理解语言或理解图像的领域。现在大部分的自然语言处理和计算机视觉,就是应用了机器学习。
  • 学习算法还广泛应用于私人定制程序中,每次当你使用亚马逊或者Netflix或iTunes Genius,它就会推荐电影、产品或者音乐给你,这就是机器学习。
  • 最后机器学习还被用来理解人类的学习过程和大脑。

机器学习的定义

即使在机器学习从业者中,也没有对机器学习的统一定义。下面列举一些现有的对机器学习的定义:

  • Arthur Samuel(1959)对机器学习的定义:在没有明确设置的情况下,使计算机具有学习能力的研究领域。
    这是有点不正式也是比较陈旧的一个定义。下面是一个更新的定义 :
  • Tom Mitchell(1998)一个适当的学习问题定义:计算机程序从经验 E 中学习,解决某一任务 T 进行某一性能度量 P,通过 P 测定在 T 上的表现因经验 E 而提高。

例题

  • 假设你的邮件程序观察你将哪些邮件标记为垃圾邮件,因此在这样的邮件客户端,你可能标记其中一些邮箱为垃圾邮件,而其他的不标记,基于你标记的垃圾邮件,你的邮件程序学会了如何更好地过滤垃圾邮件。
    • 答:在这个例子中,任务 T 是指给邮件分类;观察你是否把邮件标记为垃圾邮件,这是经验 E;正确归类的邮件的比例,这是性能度量 P。

机器学习的类型

目前有各种不同类型的学习算法,最主要的两类是监督学习无监督学习

  • 简单来说,监督学习就是我们会教计算机做某件事情,然而在无监督学习中,我们让计算机自己学习。
  • 其他的热词:强化学习和推荐学习。最常使用的两类学习算法时监督学习和非监督学习。

监督学习(Supervised Learning)

  • 监督学习是指我们给算法一个数据集,其中包含了正确答案,算法的目的就是给出更多的正确答案。
  • 在监督学习中,对于数据集中的每个样本都有对应的标签,监督学习包括回归问题和分类问题。
    • 回归是指我们的目标是预测一个连续值输出。
    • 分类问题的目的是预测离散值输出。
  • 你想用无限多种特征,好让你的算法可以利用大量的特征,或者说线索来做推测。那你怎么处理无限多个特征,甚至怎么存储这些特征都存在问题,你电脑的内存肯定不够用。我们以后会讲一个算法,叫支持向量机,里面有一个巧妙的数学技巧,能让计算机处理无限多个特征

无监督学习

  • 在无监督学习中,我们所用的数据和之前的不同,数据没有任何标签,都具有相同的标签或者都没有标签。
    • 对于给定的数据集,无监督学习算法可能判定该数据集包含两个不同的簇,这就是聚类算法
  • 举例:谷歌新闻所做的就是每天去网络上收集几万条甚至几十万条新闻,然后将他们组合成一个个新闻专题。
  • 著名的一个例子:鸡尾酒晚会,分离不同的声音。处理音频的需要用到C++或者Java库,很复杂的代码来分离音频,实际上,只需要一行代码
[W,s,v]= svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x`);
  • 编程环境:Octave 开源免费的软件,使用 Octave 或 Matlab 这类的工具,许多算法都可以用几行代码来实现,一般都是先用Octave 建立软件原型,因为 Octave 中实现这些,学习算法的速度很快,这里每一个函数,例如 svd 即奇异值分解的缩写,其实这个已经作为线性代数常规函数,内置在 Octave 软件中了,如果想要用 C++ 或者 Java 做这个,将需要写很多代码,还要连接复杂的 C++ 或 Java 库。
    • 很多在硅谷大公司工作的人,会先用 Octave 来建立学习算法原型,只有在这个算法可以工作后,才将其迁移到 C++、Java 或其他编译环境。这样比一开始就用 C++,能够更快地实现算法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玥玥&编程学习记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值