赞
踩
可能有的小伙伴要问道,为什么这里要提及到机器学习呢,作者你是不是故意这样呢?为什么要在python还没有讲多少时就讲机器学习呢?
这里向大家介绍机器学习,并不是作者故意的。其实是由于机器学习是很重要的,它和python的联系是十分紧密的,在之后的博客中会陆陆续续向大家介绍有关机器学习的内容。
这里会循序渐进地向大家介绍机器学习的有关内容。
这里主要向大家介绍机器学习的一些基础概念,包括有监督,无监督,泛化能力,过拟合欠拟合(方差和偏差以及解决方案),交叉验证
一:机器学习简介
这里引用百度百科上的话:
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
其实说白了,机器学习就是计算机模拟人类进行学习,不断改善自身的能力。
二:机器学习的重要性(研究意义)
机器学习是人工智能的核心,特别是如何在经验学习中改善具体算法的性能。有下面的定义:
“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 “机器学习是对能通过经验自动改进的计算机算法的研究”。 “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。”
机器学习可以更好地发挥人工智能的性能,优化计算机程序,让计算机拥有超高的性能,用来完成人类可能无法完成的工作。
在很多领域,机器学习已经发挥出其超强的性能。
经典定义:利用经验改善自身的性能。从过去的大量数据中”总结“出来”泛化规律“的能力,用于新数据预测。
三:机器学习方式
在机器学习领域,有几种主要的学习方式,下面介绍两种最常用的方式。
1.监督式学习
监督学习(supervised learning):通过已有的训练样本(即已知数据以及其对应的输出)来训练,从而得到一个最优模型,再利用这个模型将所有新的数据样本映射为相应的输出结果,对输出结果进行简单的判断从而实现分类的目的,那么这个最优模型也就具有了对未知数据进行分类的能力。
就是通过不断训练,从而得到一个最优模型,实现对未知数据进行相应操作的能力。
在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,对手写数字识别中的“1“,”2“,”3“,”4“等。在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。监督式学习的常见应用场景如分类问题和回归问题。常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)
系统一直被训练,直到达到所需的精度水平。
在机器学习中,计算机 = 学生,周围的环境 = 老师。
最终目标:根据在学习过程中获得的经验技能,对没学习过的问题也可以做出正确解答,使计算机获得这种泛化能力。
应用:手写文字识别、声音处理、图像处理、垃圾邮件分类与拦截、网页检索、基因诊断、股票预测等。
典型任务:预测数值型数据的回归、预测分类标签的分类、预测顺序的排列。
2.无监督式学习
我们事先没有任何训练数据样本,需要直接对数据进行建模。外界没有经验和训练数据样本提供给它们,完全靠自己摸索。就需要计算机自己去不断摸索了
在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括Apriori算法以及k-Means算法。
在机器学习中,在没有老师的情况下,学生自学的过程。
最终目标:无监督学习不局限于解决有正确答案的问题,只是让计算机自己去探索未知事物。
应用:人造卫星故障诊断、视频分析、社交网站解析、声音信号解析、数据可视化、监督学习的前处理工具等。
典型任务:聚类、异常检测。
其实机器学习还有半监督和强化学习的方式,但这里就不详细说明了,在之后的学习中会涉及到。
无监督学习在无法提供训练数据样本或者提供训练数据样本的成本太高的时候进行,这样既可以锻炼计算机的能力,又可以节约成本。因此并不都是有"老师"教的情况下是好的。
四:泛化能力
1.什么是泛化能力
百度百科定义:泛化能力(generalization ability)是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。
2.通俗定义
通俗来讲就是指学习到的模型对未知数据的预测能力。在实际情况中,我们通常通过测试误差来评价学习方法的泛化能力。
3.泛化能力误差的定义
根据PAC理论,泛化误差可以直观理解为以e指数的形式正比于假设空间的复杂度,反比于数据量的个数。
就是数据量越多,模型效果越好,模型假设空间复杂度越简单,模型效果越好。
4.如何提高数据的泛化能力
首先我们可以增加数据量,其次可以进行正则化(和python的正则表达式不同),凸优化。
五:过拟合和欠拟合
1.过拟合
定义:就是在训练时的结果很好,但是在预测时出问题
产生原因:模型的复杂度和变量过多,训练数据少
解决方案:(1)尽量减少特征的数量 (2)early stopping (3)数据集扩增 (4)dropout (5)正则化包括L1、L2 (6)清洗数据。
这里就不一一讲解了。
2.欠拟合
定义:模型的能力不足,不能很好地捕捉数据特征,数据不能很好的拟合
产生原因:模型不够复杂
解决方案:(1)添加其他特征项 (2)添加多项式特征 (2)减少正则化参数
避免欠拟合: 寻找更好的特征—–具有代表性的
用更多的特征—–增大输入向量的维度
六:方差和偏差
1.方差
定义:就是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。反应预测的波动情况。
2.偏差
定义:就是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,即算法本身的拟合能力。
七:过拟合,欠拟合和方差,偏差的关系
1.过拟合会出现高方差问题
欠拟合会出现高偏差问题
我们看上面的三个图,第一个图,当训练的数据较少时,就会出现欠拟合,数据不能很好地拟合,就会出现高偏差问题。
对于过拟合,训练集的效果是非常好的,但是验证集上的效果却并不好,随着验证的数据增多,验证集中的有些数据可能很符合过拟合的那条曲线,也有可能很不符合,所以数据方差就大了,就会出现高方差的情况。最后就会如最后一张图一样,随着模型参数个数的增加,模型的偏差逐渐降低,方差逐渐增大,当两者相等时,我们获得了期望的模型复杂度。
2.提供更多的数据能否解决欠拟合问题
在模型复杂度不够的情况下,向模型提供的数据的量并不重要。模型根本无法表示数据,需要更复杂的模型。
3.error公式
Error = Bias^2 + Variance+Noise
Bias:偏差。
Variance:方差。
Noise:噪音。就是在拟合的情况下,偏离训练平均值的数据,影响了整体数据,出现了过拟合情况。
七:交叉验证
判断模型的好和坏,就是衡量模型的(方差+偏差)和的最小值。因此主要的关注点就是平衡Bias和Variance。现在通用的衡量方法采用的是交叉验证的思想。
作用:用于防止模型过于复杂而引起的过拟合。
定义:交叉验证是一种评估统计分析、机器学习算法对独立于训练数据的数据集的泛化能力(generalize)。
基本思想:把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对模型进行训练,再利用验证集来测试模型的泛化误差。以此来做为评价分类器的性能指标。交叉验证是一种预测模型拟合性能的方法。
条件:一般要满足:
(1)训练集的比例要足够多,一般大于一半
(2)训练集和测试集要均匀抽样
常见交叉验证方法:
Holdout 验证:
将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为此分类器的性能指标。
K-fold cross-validation(常用)
K次交叉验证,将训练集分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。
Leave-One-Out Cross Validation
正如名称所建议, 留一验证(Leave-One-Out Cross Validation, LOOCV)意指只使用原本样本中的一项来当做验证资料, 而剩余的则留下来当做训练资料。
七:书籍推荐
2.
3.
4.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。