机器学习------机器学习概述
- [1 什么是机器学习](#1 什么是机器学习)
- [2 为什么使用机器学习](#2 为什么使用机器学习)
- [3 常用术语和示例](#3 常用术语和示例)
- [4 机器学习系统的类型](#4 机器学习系统的类型)
-
- [4.1 有监督学习](#4.1 有监督学习)
- [4.2 无监督学习](#4.2 无监督学习)
- [4.3 半监督学习](#4.3 半监督学习)
- [4.4 强化学习](#4.4 强化学习)
- [4.5 批量学习](#4.5 批量学习)
- [4.6 在线学习(核外学习)](#4.6 在线学习(核外学习))
- [4.7 基于实例的学习](#4.7 基于实例的学习)
- [4.8 基于模型的学习](#4.8 基于模型的学习)
- [5. 机器学习的主要挑战](#5. 机器学习的主要挑战)
-
- [5.1 训练数据不足](#5.1 训练数据不足)
- [5.2 训练数据不具代表性](#5.2 训练数据不具代表性)
- [5.3 低质量数据](#5.3 低质量数据)
- [5.4 无关特性](#5.4 无关特性)
- [5.5 过拟合训练数据](#5.5 过拟合训练数据)
- [5.6 欠拟合数据](#5.6 欠拟合数据)
相关词汇:
有监督学习、无监督学习、半监督学习、强化学习
增量学习、在线学习(核外学习)、批量学习
基于实例学习、基于模型学习、相似度
训练集、标签、预测器、特征
降维、智能化
自动化、训练、评估、启动学习
学习率、噪声(非代表性数据被选中)、适用度函数、成本函数
拟合训练、研究数据、选择模型、训练(成本函数最小化)、预测推断
坏算法、坏数据
采样偏差、无反应偏差
低质量数据、无关特征
特征工程:特征选择、特征提取、创建新特征
过拟合训练(训练数据数量大、噪度复杂):简化模型、收集更多训练数据、减少噪声
正则化:约束模型、降低过拟合
超参数
欠拟合:模型太过简单
评估、训练集、测试集、泛化误差
保持验证、验证集合
1 什么是机器学习
机器学习是一门通过编程让计算机从数据中进行学习的科学。
机器学习是一个研究领域,让计算机无须进行明确编程就具备学习能力。 ------亚瑟·萨缪尔
一个计算机程序利用经验E来学习任务T,性能是P,如果针对任务T的性能P能随着经验E不断增长,则称为机器学习。 ------ 汤姆·米切尔
2 为什么使用机器学习
机器学习可以快速解决以下问题:
- 有解决方案(但解决方案需要大量人工微调或需要遵循大量规则)的问题:机器学习算法通常可以简化代码,相比传统该方法有更好的性能。
- 传统方法难以解决的复杂问题:最好的机器学习技术也许可以找到解决方案。
- 环境有波动:机器学习算法可以适应新的数据。
- 洞察复杂问题和大量数据。
3 常用术语和示例
- 分析生产线上的产品图像来对产品进行自动分类。------这是图像分类问题,使用卷积神经网络(CNN)
- 通过脑部扫描发现肿瘤。------这是语义分割,图像中的每个像素都需要被分类,也是用CNN。
- 自动分类新闻。------这是自然语言处理(NLP),更具体的是文本分类,可以使用循环神经网络(RNN)、CNN、或者 Transformer。
- 论坛中自动标记恶评。------文本分类,使用相同的自然语言处理工具。
- 自动对长文章做总结。------这是自然语言处理的一个分支,叫做文本总结,使用的是相同的工具。
- 创建一个聊天机器人或者个人助理。------这个涉及到自然语言处理的很多分支,包括自然语言理解(NLU) 和问答模块。
- 基于很多性能指标来预测公司下一年的收入。------这是一个回归问题(如预测值),需要使用回归模型进行处理。例如线性回归或多项式回归、SVM回归、随机森林回归或者人工神经网络,如果考虑过去的指标,可以使用RNN、CNN、或者Transfromer。
- 让应用对语音命令做出反应。------这是语音识别,要求能处理音频采样。因为音频是很长、很复杂的序列,所以一般使用 RNN、CNN或Transformer进行处理。
- 检测信用卡欺诈。------这是异常检测。
- 给予客户的购买记录来对客户进行分析,对每一类客户设计不同的市场策略。------这是聚类问题。
- 用清晰而有洞察力的图标来表示复杂的高维数据。------这是数据可视化,经常设计降维技术。
- 基于以前的购买记录给客户推荐可能感兴趣的产品。------这是推荐系统,一个版是是将以前的购买记录输入人工神经网络,从而输出客户最可能购买的产品。这个神经网络是在所有客户的购买记录上训练的。
- 为游戏建造智能机器人。------者通常是通过强化学习来解决。 例如 AlphaGo。
4 机器学习系统的类型
- 有监督学习、无监督学习、半监督学习(是否在人类监督下训练)和强化学习。
- 在线学习和批量学习(是否可以动态地进行增量学习)。
- 基于实例的学习和基于模型的学习(是简单地将新的数据点和已知的数据点进行匹配,还是像科学家那样,对训练数据进行模式检测然后建立一个预测模型)。
4.1 有监督学习
有监督学习中,提供给算法的包含所需解决方案的训练集成为标签。
常见的有监督学习算法:
- k-近邻算法
- 线性回归
- 逻辑回归
- 支持向量机(SVM)
- 决策树和随机森林
- 神经网络
4.2 无监督学习
无监督学习的训练数据都是未经标记的,系统会在没有"老师"的情况下学习。
常见的无监督学习的常见算法:
- 聚类算法
- k-均值算法
- DBSCAN
- 分层聚类分析(HCA)
- 异常检测和新颖性检测
- 单类SVM
- 孤立森林
- 可视化和降维
- 主成分分析(PCA)
- 核主成分分析(LLE)
- 局部线性嵌入(t-SNE)
- 关联规则学习
- Apriori
- Eclar
4.3 半监督学习
由于通常给数据做标记是非常耗时和昂贵的,往往会有很多未标记的数据而很少有已标记的数据。有些算法可以处理已标记的数据。这称为半监督学习。
大多数半监督学习算法是无监督算法和有监督算法的结合(无监督学习负责分类,有监督学习使用分类好的样本进进行下一步训练)。
4.4 强化学习
强化学习的学习系统(其语境中称为智能体)能够观察环境、做出选择、执行动作,并获得回报(或者是以负面汇报的形式获得惩罚)。比如 AlphaGo。
4.5 批量学习
批量学习中,系统无法进行增量学习------即必须使用所有可用数据进行训练。这需要大量时间和计算资源,所以i通常都是离线完成的。离线学习就是先训练系统,然后将其投入生产环境这时学习过程停止,它只是将其所学到的应用出来。
如果希望批量学习新数据,需要在完整数据集的基础上重新训练系统的新版本,然后停用旧系统,用新系统取而代之。
批量学习可以在 训练、评估、和自动启动机器学习的过程中实现自动化,来适应数据的变化。
4.6 在线学习(核外学习)
在线学习可以持续地给系统提供训练数据,逐步积累学习成果,这种提供数据的方式可以是单独的,也可以采用小批量的小组数据来进行训练。
需要接收持续的数据流,同时对数据流的变化做出快速或自主的反应,使用在线学习是一个很好的方式。
对于超大数据集,在线学习同样也适用,算法每次只加载部分数据,并针对这部分数据进行训练,然后不断重复这个过程,知道完成所有的数据的训练,这称为核外学习。
4.7 基于实例的学习
举个垃圾邮箱识别的例子,最简单的学习方式是标记垃圾邮箱,然后将所有相同的邮箱标记为垃圾邮箱。
基于实例的学习可以使用相似度度量的方式,一种相似度度量方式是计算他们之间相同的单词数目,如果新邮件与垃圾邮件有很多相似单词,系统可以标记为垃圾邮箱。
基于实例的学习就是系统用心学习示例,然后通过相似度度量来比较新的实例和已经学习的实例,从而泛化新实例。
4.8 基于模型的学习
基于模型的学习是构建示例的模型,然后使用该模型进行预测。
模型选择是根据研究数据得出数据的数学规律(比如结果是一个线性函数)的过程。
效用函数(或适应度函数) 用来衡量模型的性能表现有多好。
成本函数用来衡量模型有多差。
训练模型指的是根据提供的训练样本,找出最符合提供数据的线性模型的参数。
模型可以指一个模型的类型(例如线性回归),也可以指一个完全特定的模型架构(例如有一个输入和一个输出的线性回归),或者可用于预测的训练模型(例如有一个输入和一个输出的线性回归,使用参数θ0 和 θ1 ).模型选择包含选择模型的类型和完全指定它的架构。
5. 机器学习的主要挑战
5.1 训练数据不足
大部分机器学习算法需要大量的数据才能正常工作,即使是最简单的问题,很可能需要成千上万个示例。
5.2 训练数据不具代表性
使用不具代表性的训练集训练出来的模型不可能做出准确的预估。针对想要泛化的案例使用具有代表性的训练集至关重要。不过做起来的时候很难:如果样本集太小,将会出现采样噪音(即非代表性数据被选中);非常大的样本数据,如果采样方式欠妥,也同样可能导致非代表性数据集,这就是所谓的样本偏差。
5.3 低质量数据
训练集满是错误、异常值和噪声(例如低质量的测量产生的数据),所以花时间来清理训练数据是非常值得的投入。
5.4 无关特性
训练数据里包含足够多的相关特征以及较少的无关特征,系统才能够进行学习。
特征工程:提取出一组好的用来训练的特征集。包含以下几个特点:
- 特征选择(从现有特征中选择最有用的特征进行训练)
- 特征提取(将现有特征进行整合,产生更有用的特征,降维算法可以提供帮助)
- 通过收集新数据创建新特征。
5.5 过拟合训练数据
过拟合指的是模型在训练数据上表现良好,但是泛化时却不尽人意(假如你在国外旅游,被出租车司机敲诈,可能会过度认为那个国家的所有出租车司机都是强盗,机器学习也会陷入同样的陷阱)。
当模型相对于训练数据的数量和噪度都过于复杂时,会发生过拟合,可能的解决方案有如下措施:
- 简化模型:可以选择较少参数的模型,也可以减少训练数据中的属性数量,或者是约束模型。
- 收集更多的训练数据。
- 减少训练数据中的噪声(例如修复数据错误和消除异常值)。
正则化:通过约束模型使其更简单,并降低过拟合的风险,这个过程称为正则化。应用正则化的成都可以通过一个超参数来控制。
超惨数:超参数是学习算法的参数,因此它不受算法本身的影响。超参数必须在训练之前设置好,并且在训练期间保持不变。
5.6 欠拟合数据
欠拟合和过拟合正好相反,它的产生通常是因为对于底层的数据结构来说,模型太过简单(例如用线性模型来描述生活满意度就是欠拟合,现实情况远比模型复杂)。
解决欠拟合的主要方式有:
- 选择一个带有更多参数、更强大的模型。
- 给学习算法提供更好的特征集(特征工程)。
- 减少模型中的约束(例如,减少正则化超参数)