主要内容
1 什么是机器学习
2 机器学习分类
3 机器学习的挑战
4 测试与验证
开始
1 什么是机器学习
来自百度百科的定义:
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
引申问题(为啥需要机器学习):
例如:使用传统编程手段处理垃圾邮件,一般通过正则表达式匹配常用垃圾邮件的关键字,然后区分是否是垃圾邮件,
问题是,程序中的匹配规则相对是固定的,而垃圾邮件不断的发展,程序中的 匹配规则不能及时更新(也做不到实时更新,只能适应一段时期的规则);而机器学习不同之处在于可以通过对邮件数据的学习,根据我们建立的模型增量的方式进行自动的学习,自动适应新的垃圾邮件的特点,从而自动标识出垃圾邮件。(问题是我们建立的模式是什么,机器学习如何进行实施等问题,这里需要进一步的知识点..., 如果一下子就说的明白,机器学习你也用不着学了!)
2 机器学习分类
①按是否在人类的监督下训练:
监督学习、无监督学习、半监督学习和强化学习;
②按是否可以动态地增量学习:
在线学习和批量学习
③按不同方式
基于实例的学习(将新的数据点和已知的数据点进行匹配)
基于模型的学习(像科学家一样对数据进行模式检测,建立一个预测模型)
多种模式可以相互结合完成最后的任务,邮件过滤器可以是使用深度神经网络模型对邮件进行过滤,
实际上是一个在线的、基于模型的和监督学习的学习系统。
2.1 按是否有标记分类
按训练是接收监督的数量机器学习分为4中类型:
1️⃣监督学习:
分类任务是一个典型的监督式学习任务,例如邮件过滤器通过大量的电子邮件示例以所属类别进行训练,然后学习如何对新邮件进行分类;
还有通过预测变量,对一组给定的特征来预测一个目标数值,例如汽车的价格,这类任务称为回归任务,要训练这样的系统需要大量的汽车示例,包括它们的预测变量和标签。
备注:
在机器学习中,属性是一种数据类型,例如“里程”;而特征取决于上下文,包含多种含义,特征意味着一个属性加上它的值,例如“里程=20000”;
常见的监督式学习算法有
K-近邻算法、线性回归、逻辑回归、支持向量机(SVM)、决策树和随机森林和神经网络
2️⃣无监督学习
无监督学习数据都是未经标记的
例如拥有大量自己博客的数据,我们通过一个聚类算法来检测相似访客的分组,这个算法不太可能告诉每个访客属于哪个分组,算法只能自己寻找访客相互之间关联,无须人的帮助。
可视化算法在提供了大量的复杂的、未标记的数据,得到2D或3D的呈现。
例如:t-SNE算法的可视化示例,突显了各种语义簇
降维任务是在不丢失太多信息的前提下简化数据,其中一个方法是将多个相关特征合并为一个,例如汽车的里程与车龄有很大的关系,使用降维方法会将它们合并起来形成一个汽车磨损的特征,这个过程叫特征提取;
异常检测是无监督学习的一个重要任务,例如检测异常信用卡交易防止欺诈。
无监督学习中还有关联规则学习,目的是挖掘大量数据,发现属性之间的关系,例如超市中买烤肉酱和薯片的人也倾向于购买牛排,这样就将几样商品排放得近一些。
常见的算法有
聚类算法、k-Means、分层聚类分析(HCA)、最大期望算法、可视化和降维、主成分分析(PCA)、核主成分分析(Kernel PCA)、局部线性嵌入、t-分布随机近邻嵌入(t-SNE)、关联规则学习、Apriori、Eclat
3️⃣半监督学习
半监督学习可以出来部分标记和大量未标记的训练数据;
例如:google的相册自动识别人物A出现哪几张照片中,然后告诉这个是谁,系统会自动给每一张照片中这个命名,对应图片搜素非常重要。
4️⃣强化学习
强化学习系统(在其语境中称为智能体)能够观察环境,做出选择,执行操作,并获得回报( reward),或者是以负面回报的形式获得惩罚。所以它必须自行学习什么是最好的策略( policy),从而随着时间推移获得最大的回报。
2.2 批量学习和在线学习
从传入的数据流角度进行增量学习;
1️⃣批量学习
在批量学习中,系统无法进行增量学习——即必须使用所有可用
数据进行训练。这需要大量时间和计算资源,所以通常情形下,都是离线完成的。离线学习就是先训练系统,然后将其投入生产环境,这时学习过程停止,它只是将其所学到的应用出来。
2️⃣在线学习
在在线学习中, 你可以循序渐进地给系统提供训练数据, 逐步积累学习成果。
注意:
在线学习系统的一个重要参数是其适应不断变化的数据的速度,
这就是所谓的学习率。
在线学习面临的一个重大挑战是,如果给系统输入不良数据,系
统的性能将会逐渐下降。我们需要监控输入数据, 并对异常数据做出响应( 例如, 使用异常检测算法)
2.3 基于实例与基于模型的学习
泛化的主要方法有两种: 基于实例的学习和基于模型的学习
名词解释:
在机器学习方法中,泛化能力通俗来讲就是指学习到的模型对未知数据的预测能力。在实际情况中,我们通常通过测试误差来评价学习方法的泛化能力。
1️⃣基于实例的学习
例如:如果以这种方式创建一个垃圾邮件过滤器, 那它可能只会标记那些跟已被用户标记
为垃圾邮件完全相同的邮件——这虽然不是最差的解决方案, 但肯定也不是最好的。
除了完全相同的, 你还可以通过编程让系统标记与已知的垃圾邮件非常相似的邮件。
基于实例的学习: 系统先完全记住学习示例, 然后通过某种相似度度量方式将其泛化到新的实例
2️⃣基于模型的学习
从一组示例集中实现泛化的另一种方法是构建这些示例的模型,然后使用该模型进行预测。 这就是基于模型的学习。
3 机器学习的挑战
一个成功的机器学习项目, 关键部分是提取出一组好的用来训练的特征集, 这个过程叫作特征工程, 包括以下几点。
特征选择: 从现有特征中选择最有用的特征进行训练。
特征提取: 将现有特征进行整合, 产生更有用的特征( 正如前文提到的, 降维算法可以提供帮助) 。
通过收集新数据创造新特征
3.1 训练数据过度拟合
假设你正在国外旅游, 被出租车司机狠宰了一刀, 你很可能会说, 那个国家的所有出租车司机都是强盗。 过度概括是我们人类常做的事情, 不幸的是, 如果我们不小心, 机器很可能也会陷入同样的陷阱。 在机器学习中, 这称为过度拟合, 也就是指模型在训练数据上表现良好, 但是泛化时却不尽如人意。
当模型相对于训练数据的数量和噪度都过于复杂时,会发生过度拟合。可能的解决方案如下。
·简化模型:可以选择较少参数的模型(例如,选择线性模型而不是高阶多项式模型),可以减少训练数据中的属性数量,又或者是约束模型。
·收集更多的训练数据。
·减少训练数据中的噪声( 例如, 修复数据错误和消除异常值) 。
3.2 欠拟合
现实情况远比模型复杂得多,所以即便是对于用来训练的示例,该模型产生的预测都
一定是不准确的。
解决这个问题的主要方式有:
·选择一个带有更多参数、更强大的模型
·给学习算法提供更好的特征集(特征工程)
·减少模型中的约束(比如,减少正则化超参数)
4 测试与验证
将数据分割成两部分:训练集和测试集。顾名思义,你可以用训练集的数据来训练模型,然后用测试集的数据来测试模型。应对新场景的误差率称为泛化误差(或者样例外误差),通过测试集来评估你的模型,就可以得到对这个误差的评估。这个估值可以告诉你,你的模型在处理新场景时的能力如何。
如果训练误差很低(模型对于训练集来说很少出错),但是泛化误差很高,那说明你的模型对于训练数据存在过度拟合。