一、概述
1.1、前言
1、人工智能、机器学习、深度学习关系
- 人工智能的基础是机器学习,机器学习包含了深度学习,深度学习主要应用于神经网络领域。
2、什么是机器学习
- 与传统应用程序的区别:机器学习是让机器去学习;应用程序是让机器去运行得到程序最终的结果。
- 定义:从广义上来说,机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。
- 机器学习这些领域有着千丝万缕的联系,机器学习是它们的基础:
1、模式识别=机器学习。两者的主要区别在于前者是从工业界发展起来的概念,后者则主要源自计算机学科。
2、数据挖掘=机器学习+数据库。大部分数据挖掘中的算法是机器学习的算法在数据库中的优化。
3、统计学习近似等于机器学习。机器学习中的大多数方法来自统计学;但是在某种程度上两者是有分别的,这个分别在于:统计学习者重点关注的是统计模型的发展与优化,偏数学,而机器学习者更关注的是能够解决问题,偏实践,因此机器学习研究者会重点研究学习算法在计算机上执行的效率与准确性的提升。
4、计算机视觉=图像处理+机器学习。图像处理技术用于将图像处理为适合进入机器学习模型中的输入,机器学习则负责从图像中识别出相关的模式。
5、语音识别=语音处理+机器学习。
6、自然语言处理=文本处理+机器学习。
1.2、如何入手机器学习
1、学习环境
- 使用语言:Python3
- 框架:scikit-learn、NumPy、Matplotlib等等
- 数据集:scikit-learn自带数据集、网上公开的大型数据集比如鸢尾花数据集、MNIST数据集等
- 机器语言常用大型数据集地址:8款大型机器学习数据集顶级资源
- 项目学习开源平台:github
- 硬性基础:本科高数、线代、概率论基础扎实
2、开发环境
- 使用anaconda:Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项;Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等。
- 安装anaconda:Anaconda详细安装及使用教程(带图文)
- 开发idea:jupyter notebook 和 PyCharm
- anaconda常用命令:anaconda常用命令
- Jupyter-NoteBook开发技巧:Jupyter-NoteBook-你应该知道的N个小技巧
二、机器学习基础
2.1、基本数据
1、以鸢尾花数据集来阐述数据
- 数据整体叫做数据集
- 每一行数据称为样本
- 除最后一列种类外,每一列表达为样本的一个特征(属性)
- 最后一列称为标记(向量)
- X叫做数据矩阵,y是运算得到的向量结果
- 第i个样本写作 X ( i ) X^{(i)} X(i),每一个 X ( i ) X^{(i)} X(i)也可叫做一个特征向量,第i个样本的第j个特征值 X j ( i ) X^{(i)}_j Xj(i),第i个样本的标记写作 y ( i ) y^{(i)} y(i)
2、特征空间
- 以鸢尾花数的前两个特征为例,数据组成的一个二维空间就是一个特征空间;分类任务的本质就是在特征空间内划分;下图只取了两个特征,但是鸢尾花数据集一共有四个特征,所以可以组成思维的特征空间。
3、以数字5的图片举例
- 每一个像素点都是特征,28*28 就是784个特征;彩色图像的特征会更多
2.2、基本任务
- 机器学习包含了监督学习,而监督学习主要解决的就是分类任务和回归任务
1、分类任务
- 定义:输出变量为有限个离散变量的预测问题为分类问题;狭义上说就是输出值为一个类别值的即是分类任务。分类任务举例:图片识别猫或者狗、数字识别、人脸识别、明日天气是晴多云或者下雨等。
- 二分类任务:就是结果只有两种类别的分类任务;举例:图片识别猫或者狗、垃圾邮件识别等
- 多分类任务:就是结果有超过两个的多个类型;举例:数字识别、人脸识别等
- 多标签分类任务:就是一个样本它可能属于多种类别,比如老虎即属于食肉动物又属于猫科动物
- 总结:多分类任务可以转换为二分类任务、有一些算法支持二分类任务,还有一些算法支持多分类任务;甚至有一部分算法既支持二分类任务又支持多分类任务。
2、回归任务
- 定义:输入变量与输出变量均为连续变量的预测问题是回归问题;狭义上来说输出值为连续的一组数值即是回归问题。回归任务举例:房屋价格预测、股市预测、明日天气是多少度等。
- 总结:一些回归任务也可以简化成一个分类任务
3、机器学习的基本流程
- 学习资料就是数据集
4、分类任务和回归任务的区别
2.3、监督学习与非监督学习
1、监督学习
- 定义:数据集是有特征(feature)和标签(label)的,即便是没有标签的,机器也是可以通过特征和标签之间的关系,判断出标签;前面的鸢尾花数据集处理就是典型的监督学习,监督学习主要解决的就是分类任务和回归任务。
- 举例理解:高考试题是在考试前就有标准答案的,在学习和做题的过程中,可以对照答案,分析问题找出方法。在高考题没有给出答案的时候,也是可以给出正确的解决。这就是监督学习。
- 总结:给定数据,预测标签。
2、非监督学习
- 定义: 只有特征(feature),没有标签(label);使用的数据是没有标记过的,即不知道输入数据对应的输出结果是什么。
- 举例理解:高考前的一些模拟试卷,是没有标准答案的,也就是没有参照是对还是错,但是我们还是可以根据这些问题之间的联系将语文、数学、英语分开,这个过程就叫做聚类。
- 总结:给定数据,寻找隐藏的结构。
- 非监督学习的意义:辅助监督学习,对数据进行降维处理,聚类分析,特征提取,特征压缩(PCA),方便可视化(将很高维的数据降至三维甚至二维),异常检测。
2.4、半监督学习和增强学习
1、半监督学习
- 定义: 使用的数据,一部分是标记过的,而大部分是没有标记的。和监督学习相比较,半监督学习的成本较低,但是又能达到较高的准确度。
- 举例理解:在公司的实际问题中,通常只有少量的有标记的数据,因为对数据进行标记的代价有时很高;比如在生物学中,对某种蛋白质的结构分析或者功能鉴定,可能会花上生物学家很多年的工作,而大量的未标记的数据却很容易得到。
- 处理流程:一般先利用半监督学习算法将未标记的数据聚类标记,然后在使用监督学习得到我们的需求数据模型。
2、增强学习
- 定义:增强学习也是使用未标记的数据,但是可以通过一些方法知道你是离正确答案越来越近还是越来越远(奖惩函数)。可以把奖惩函数看作正确答案的一个延迟、稀疏的形式。可以得到一个延迟的反馈,并且只有提示你是离答案越来越近还是越来越远。
- 应用举例:阿尔法Go就是一个增强学习的应用、美剧西部世界里面的人工智能NPC、无人驾驶
2.5、批量学习和在线学习
1、批量学习
- 定义:所谓的批量学习是指在训练模型时,一次性的把所有样本全部输入,可以理解为填鸭式。批量学习的代价函数是由平均误差定义的(要先算出特征x所有样本的总误差除以样本数)。由于批量学习一次性需要所有样本,因此批量学习有着存储要求(要存储这些训练样本)
- 如何适应环境变化:定时批量学习
- 优点:简单,只需要学习算法的本身,新数据来了,不需要重新学习
- 缺点:批量学习中,系统无法进行增量学习——即必须使用所有可用数据进行训练,每次重新批量学习运算量巨大;在某些环境变化非常快的情况下,基本是不可能的
2、在线学习
- 定义:每次输入样例,马上就会拿到正确的结果(股市),然后马上将数据迭代到机器学习算法中
- 优点:及时反映新的环境变化
- 问题:新的数据带来不好的变化?
- 解决:需要加强对数据的监控,非监督学习(可以检测异常数据)
- 应用场景:使用于数据量巨大,完全无法批量学习的环境
2.6、参数学习和非参数学习
1、参数学习
- 定义:一旦学习到可参数,就不需要原有的数据集,比如说线性回归
2、非参数学习KNN、决策树、随机森林
- 定义:不对模型进行过多假设,非参数不等于没参数