《Sklearn与TensorFlow机器学习实用指南》学习笔记 第1章 机器学习概览

《Sklearn与TensorFlow机器学习实用指南》学习笔记

第1章 机器学习概览

什么是机器学习?

机器学习是通过编程让计算机从数据中进行学习的科学(和艺术)。
广义概念:机器学习是让计算机具有学习的能力,无需进行明确编程。
工程性概念:计算机程序利用经验E学习任务T,性能是P,如果针对任务T的性能P随着经验E不断增长,则称为机器学习。

为什么使用机器学习?

使用机器学习方法挖掘大量数据,可以发现并不显著的规律。这称作数据挖掘。

机器学习善于:

  • 需要进行大量手工调整或需要拥有长串规则才能解决的问题:机器学习算法通常可以简化代码、提高性能。
  • 问题复杂、传统方法难以解决:最好的机器学习方法可以找到解决方案。
  • 环境有波动:机器学习算法可以适应新数据。
  • 洞察复杂问题和大量数据。

机器学习系统的类型

  • 是否在人类监督下进行训练(监督、非监督、半监督和强化学习)
  • 是否可以动态渐进学习(在线学习 vs 批量学习)
  • 它们是否只是通过简单地比较新的数据点和已知的数据点,还是在训练数据中进行模式识别,以建立一个预测模型,就像科学家所做的那样(基于实例学习 VS 基于模型学习)

监督/非监督学习

机器学习可以根据训练时监督的量和类型进行分类。主要4类:监督学习、非监督学习、半监督学习和强化学习。

监督学习

在监督学习中,用来训练算法的训练数据包含了答案,称为标签。
重要的监督学习算法:K近邻算法、线性回归、逻辑回归、支持向量机(SVM)、决策树和随机森林、神经网络。

非监督学习

非监督学习中,训练数据是没有加标签的。

  • 聚类
    K均值、层次聚类分析(Hierarchical Cluster Analysis,HCA)
    期望最大值
  • 可视化和降维
    主成分分析(Principal Component Analysis,PCA)
    核主成分分析
    局部线性嵌入(Locally-Linear Embedding,LLE)
    t-分布邻域嵌入算法(t-distributed Stochastic Neighbor Embedding,t-SNE)
  • 关联规则学习
    Apriori算法
    Eclat算法
半监督学习

算法可以处理部分带标签的训练数据,通常是大量不带标签数据加上小部分带标签数据。这称作半监督学习。
一些图片存储服务,比如 Google Photos,是半监督学习的好例子。一旦你上传了所有家庭相片,它就能自动识别到人物 A 出现在了相片 1、5、11 中,另一个人 B 出现在了相片 2、5、7 中。这是算法的非监督部分(聚类)。现在系统需要的就是你告诉它这两个人是谁。只要给每个人一个标签,算法就可以命名每张照片中的每个人,特别适合搜索照片。
多数半监督学习算法是非监督和监督算法的结合。例如,深度信念网络(deep belief networks)是基于被称为互相叠加的受限玻尔兹曼机(restricted Boltzman machines,RBM)的非监督组件。RBM是先用非监督方法进行训练,再用监督学习方法对整个系统进行微调。

强化学习

强化学习非常不同。学习系统在这里被称为智能体(agent),可以对环境进行观察、选择和执行动作,并获得奖励作为回报(负奖励是惩罚)。然后他必须自己学习哪个是最佳方法(称为策略,policy),以得到长久的最大奖励。策略决定了智能体在给定情况下应该采取的行动。

批量和在线学习

批量学习

在批量学习中,系统不能进行持续学习:必须用所有可用数据进行训练。这通常会占用大量时间和计算资源,所以一般是线下做的。首先是进行训练,然后部署在生产环境且停止学习,它只是使用已经学到的策略。这称为离线学习。
若想让一个批量学习系统明白新数据,就需要从头训练一个系统的新版本,使用全部数据集(不仅有新数据也有老数据),然后停掉老系统,换上新系统。

在线学习

在在线学习中,是用数据实例持续地进行训练,可以一次一个或一次几个实例(称为小批量)。
在线学习系统的一个重要参数是,它们可以多快地适应数据的改变:这被称为学习速率。若设定一个高学习速率,系统就可以快速适应新数据,但是也会快速忘记老数据。相反的,若设定的学习速率低,系统的惰性就会强:即,它学的更慢,但对新数据中的噪声或没有代表性的数据点结果不那么敏感。
在线学习的挑战之一是,若用坏数据被用来进行训练,系统的性能就会逐渐下滑。要减小这种风险,需要密集检测,若检测到性能下降,要快速关闭(或是回滚到一个之前的状态)。

基于实例 vs 基于模型学习

基于实例学习

基于实例学习:系统先用记忆学习案例,然后使用相似度测量推广到新的例子。

基于模型学习

基于模型学习:建立样本的模型,然后使用这个模型进行预测。

机器学习的主要挑战

  • 训练数据量不足
  • 没有代表性的训练数据
  • 低质量数据
  • 不相关的特征
  • 过拟合训练数据
    过拟合发生在相对于训练数据的量和噪声,模型过于复杂的情况。解决方案:1、简化模型,通过选择一个参数更少的模型(比如使用线性模型,而不是高阶多项式模型)、减少训练数据的属性数、或限制一下模型。2、手机更多的训练数据。3、减小训练数据的噪声(比如,修改数据错误和去除异常值)。
    限定一个模型以让它更简单并且降低过拟合的风险被称作正则化(regularization)
    正则化的度可以用一个超参数(hyperparameter) 控制。超参数是一个学习算法的参数(而不是模型的)。这样,它是不会被学习算法本身影响的,它优于训练,在训练中保持不变的。若设定的超参数非常大,就会得到一个几乎是平的模型(斜率接近于0);这种学习算法几乎肯定不会过拟合训练数据,但是也很难得到一个好的解。
  • 欠拟合训练数据
    解决欠拟合的方法:1、选择一个更强大的模型,带有更多参数。2、用更好的特征训练学习算法(特征工程)。3、减小对模型的限制(比如,减小正则化超参数)。

测试和确认

将数据分成两个集合:训练集测试集。对新样本的错误率称作推广错误(或样本外错误),通过模型对测试集的评估,可以预估这个错误。这个值可以评价模型对新样本的性能。
若训练错误率低(即,模型在训练集上错误不多),但是推广错误率高,意味着模型对训练数据过拟合。
保留一个集合,称作验证集。用训练集和多个超参数训练多个模型,选择在验证集上有最佳性能的模型和超参数。当对模型满意时,用测试集再做最后一次测试,以得到推广误差率的预估。
为了避免“浪费”过多训练数据在验证集上,通常的办法是使用交叉验证:训练集分为互补的子集,每个模型用不同的子集训练,再用剩下的子集验证。一旦确定模型类型和超参数,最终的模型使用这些超参数和全部的训练集进行训练,用测试集得到推广误差率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值