一 机器学习概览

  • 机器学习的广义概念是:机器学习是让计算机具有学习的能力,无需进行明确编程.
  • 机器学习的工程性概念是:计算机程序利用经验E学习任务T,性能是P,如果针对任务T的性能P随着经验E不断增长,则为机器学习.
  • 使用机器学习挖掘大量数据,发现不显著的规律,称为数据挖掘.
  • 根据训练时监督的量和类型分为:
  1. 监督学习:训练数据包含了标签,如分类,回归.
  2. 非监督学习:训练数据没有标签.如聚类,降维,可视化.
  3. 半监督学习:大量不带标签数据加上小部分带标签数据.如深度信念网络.
  4. 强化学习:系统执行动作,获得奖励,然后学习策略.如AlphaGo.
  • 根据是否从导入的数据流进行持续学习分为:
  1. 批量学习(离线学习):不能进行持续学习,如果想学习新数据就要重新训练并更换系统.
  2. 在线学习:可以使用小批量持续地训练.缺点是坏数据会导致性能下滑.
  • 根据如何进行归纳推广分为:
  1. 基于实例学习:先用记忆学习案例,然后用相似度测量推广到新的例子.
  2. 基于模型学习:建立这些样本的模型,然后使用模型进行预测.
  • 机器学习的主要挑战:
  1. 数据量不足
  2. 没有代表性的训练数据
  3. 低质量数据
  4. 不相关的特征
  5. 过拟合
  6. 欠拟合
  • 使用训练集训练模型参数,验证集选取超参数,测试集预估误差率.为了避免浪费训练数据在验证集上,一般使用交叉验证.

二 一个完整的机器学习项目

  • 本章的目标是建立一个房价预测系统,这是一个回归问题.主要步骤为:项目概述-获取数据-发现并可视化数据,发现规律-为机器学习算法准备数据-选择模型,进行训练-微调模型-给出解决方案-部署,监控,维护系统.
  • 均方根误差(RMSE)是回归问题的典型指标..
  • 平均绝对误差(MAE)也是一种选择.
  • 在类似RMSE和MAE这样的范数中,范数的指数越高,就越关注大的值而忽略小的值.
  • 利用pd.read_csv()读取数据后,可以用head(),info(),value_counts()和describe()方法大致了解数据.
  • 在对测试集采样时,需要保证数据集中的每个分层都要用足够的实例位于测试集中.可以将最重要的一类特征进行离散处理,然后使用sklearn的StratifiedShuffleSplit类分层采样.
  • 使用corr(),和pd.tools.plotting.scatter_matrix()方法可以探索特征之间的相关性.
  • 特征之间相互组合产生的新特征也很重要.
  • 大多数机器学习算法不能处理缺失的特征.可以:
  1. dropna()去除对应行
  2. drop()去掉对应属性
  3. fillna()赋值
  4. 使用sklearn的Imputer类来处理
  • 对于文本和类别属性,可以用sklearn的OneHotEncoder来处理.
  • 特征缩放是最重要的数据转换之一.可以用线性函数归一化(Normalization,减去最小值,除以最大值与最小值的差值,sklearn中的MinMaxScaler)标准化(Standardization,减去平均值,除以方差,sklearn中的StandardScaler)来实现.
  • sklearn提供了Pipeline类来实现流水线.
  • sklearn的GridSearchCV可以用于网格搜索最佳的超参数组合.适用于搜索空间不大的情况.
  • sklearn的RandomizedSearchCV可以用于随机搜索最佳的超参数组合.适用于搜索空间很大的情况.

三 分类

  • 二分类问题的准度一般采用准确率(Precision),召回率(Recall)F1值(2*P*R/(P+R)).ROC曲线也是一个常用的工具,它是真正例率对假正例率的曲线.ROC曲线下的面积称为AUC,AUC越接近1分类器的效果就越好.
  • SVM或线性分类器是严格的二分类器,可以通过OvA(一对所有)OvO(一对一)策略让它们执行多类分类.Sklearn会自动执行OvA或OvO(对SVM).
  • 多标签分类是指分类器给一个样例输出多个类别.
  • 多输出-多类分类是指分类器的输出是多标签的,并且每个标签有多个值.例如图像去噪.

四 训练模型

  • 介绍了批量梯度下降,随机梯度下降和小批量梯度下降,不再赘述.
  • 如果添加特征的高阶组合作为新特征,线性回归也能拟合非线性关系.
  • 一个模型的泛化误差是由偏差(高偏差意味着欠拟合),方差(高方差意味着过拟合),不可约误差组成的.
  • 训练中的损失函数应该易于求导,测试过程中的评价函数应该接近最后的客观表现.
  • 正则化前对数据进行放缩是非常重要的.
  • 岭(Ridge)回归是在线性回归的损失函数直接加上一个L2正则项
  • Lasso回归是在线性回归的损失函数直接加上一个L1正则项.它倾向于完全消除最不重要的特征的权重.
  • 弹性网络(ElasticNet)介于Ridge回归和Lasso回归之间,它的正则项是两者正则项的简单混合.
  • 早停(early stop)也是一种正则化方法.一旦验证集误差停止下降,就提早停止训练.
  • Logistic回归是一种分类算法.它计算输入特征的加权和,然后将结果输入logistic函数后输出.并根据输出值与阈值的比较决定分类结果.它的损失函数是对数损失,可以使用梯度下降求解.
  • Softmax回归用参数向量计算每个类的得分,然后将得分传入softmax函数作为概率传出.使用的损失函数是交叉熵,用于衡量待测类别与目标类别的匹配程度.

五 支持向量机

  • SVM能做线性或非线性的分类,回归,适合复杂但中小规模数据集的分类问题.SVM的最大间隔分类是由线性平面边缘的支持向量决定的.SVM对特征缩放很敏感.

  • SVM的核技巧可以使得不添加高次数的多项式特征或相似特征就产生同样的效果.常用的核函数是linear,poly和RBF,以及一些针对特定数据结构的核函数.

《Hands-On Machine Learning with Scikit-Learn&TensorFlow》读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. servlet生命周期深入理解

    什么是Servlet Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中 ...

  2. golang基础类型

    1.变量 Go使用关键字var定义变量,类型信息放在变量名后面,初始化为零,如下: 在函数内部还有一种更简洁的:=定义方式 变量赋值,两个变量可直接交换 注意:函数内部定义的变量没使用的话编译器会报错 ...

  3. 《剑指offer》第二十一题(调整数组顺序使奇数位于偶数前面)

    // 面试题21:调整数组顺序使奇数位于偶数前面 // 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有 // 奇数位于数组的前半部分,所有偶数位于数组的后半部分. #inclu ...

  4. iOS Socket编程-C语言版(TCP)

    . TCP Socket编程 TCP是面向连接的,安全可靠的传输层协议.TCP的程序基本框架设计图: TCP的程序基本框架设计图.jpg 注意:Socket通信一定有要服务端和客户端. 1.1 TCP ...

  5. Java基础十--接口

    Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...

  6. HTTP协议的请求与响应和CSS属性和定位

    HTTP协议的请求与响应和CSS属性和定位 一.HTTP协议 1.1 HTTP定义 HTTP(Hypertext Transport Protocol),超文本传输协议. 一种详细规定了浏览器和web ...

  7. <yii 框架学习> yii 框架改为中文提示

    工作需要用到yii框架,但发现yii框架自带的提示都是英文的.上网找资料才发现其实可以自己陪置 . 将项目protected/config/main.php里的app配置加上language=> ...

  8. External RNA Controls Consortium (ERCC)

    ERCC是啥? 外部RNA控制联盟,就是一套RNA-seq,基因表达检测过程中的控制系统,使得结果具有可重复性. RNA Spike-in Controls for Gene Expression W ...

  9. 构建NCBI本地BLAST数据库 (NR NT等) | blastx/diamond使用方法 | blast构建索引 | makeblastdb

    参考链接: FTP README 如何下载 NCBI NR NT数据库? 下载blast:ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+ 先了解 ...

  10. hihoCoder-1087 Hamiltonian Cycle (记忆化搜索)

    描述 Given a directed graph containing n vertice (numbered from 1 to n) and m edges. Can you tell us h ...