最近打算系统学习和整理机器学习方面的知识,会将之前看的 Andrew Ng 在 course 课程笔记以及最近看的书籍《hands-on-ml-with-sklearn-and-tf》结合起来,简单总结下机器学习的常用算法,由于数学功底有限,所以可能不会也暂时不能过多深入公式和算法原理,所以就做成一个入门系列吧。
这是本系列的第一篇,也是机器学习概览的上半部分。
1 . 什么是机器学习
简单的定义,机器学习是通过编程让计算机从数据中进行学习的科学(和艺术)。
但还有另外两种定义,一个更广义的定义:
机器学习是让计算机具有学习的能力,无需进行明确编程。 —— 亚瑟·萨缪尔,1959
和一个工程性的定义:
计算机程序利用经验 E 学习任务 T,性能是 P,如果针对任务 T 的性能 P 随着经验 E 不断增长,则称为机器学习。 —— 汤姆·米切尔,1997
一个简单的例子,也是经常提及的例子:垃圾邮件过滤器。它可以根据垃圾邮件(比如,用户标记的垃圾邮件)和普通邮件(非垃圾邮件,也称作 ham)学习标记垃圾邮件。用来进行学习的样例称作训练集。每个训练样例称作训练实例(或样本)。在这个例子中,任务 T 就是标记新邮件是否是垃圾邮件,经验E是训练数据,性能 P 需要定义:例如,可以使用正确分类的比例。这个性能指标称为准确率,通常用在分类任务中。
2. 为什么要用机器学习
为什么要用机器学习方法呢?
原因如下:
- 需要进行大量手工调整或需要拥有长串规则才能解决的问题:机器学习算法通常可以简化代码、提高性能。
- 问题复杂,传统方法难以解决:最好的机器学习方法可以找到解决方案。
- 环境有波动:机器学习算法可以适应新数据。
- 洞察复杂问题和大量数据
一些机器学习的应用例子:
- 数据挖掘
- 一些无法通过手动编程来编写的应用:如自然语言处理,计算机视觉、语音识别等
- 一些自助式的程序:如推荐系统等
- 理解人类是如何学习的
3. 机器学习系统的类型
机器学习有多种类型,可以根据如下规则进行分类:
- 是否在人类监督下进行训练(监督,非监督,半监督和强化学习)
- 是否可以动态渐进学习(在线学习 vs批量学习)
- 它们是否只是通过简单地比较新的数据点和已知的数据点,或者在训练数据中进行模式识别,以建立一个预测模型,就像科学家所做的那样(基于实例学习 vs基于模型学习)
3.1 监督/非监督学习
第一种分类机器学习的方法是可以根据训练时监督的量和类型进行分类。主要有四类:监督学习、非监督学习、半监督学习和强化学习。
3.1.1 监督学习
监督学习,顾名思义就是带有监督的学习,而监督就是体现在训练数据都是有标签的,所有在训练模型的时候可以根据数据的真实标签不断调整模型,从而得到一个性能更好的模型。
监督学习主要有两个常见的典型的任务–分类和回归。
3.1.1.1 分类
分类问题主要就是预测新数据的类别问题。例如上文提到的垃圾邮件过滤器就是一个二分类问题,将邮件分为