我的新书:《工业机器学习算法详解与实战》

图书简介

实用性是本书的第一个基本出发点,书中介绍了近年来在工业界被广泛应 用的机器学习算法,这些算法经受了时间的考验,不但效果好而且使用方便。此 外作者也十分注意理论的深度和完整性,组织各章节的内容时力求由浅入深、推 理完整、先后连贯、自成体系,先讲统计学、矩阵、优化方法这些基础知识,再 由简到繁地介绍线性模型、概率图模型、文本向量化算法、树模型和神经网络, 神经网络主要指的是各种深层网络。跟绝大多数机器学习类的图书不同,本书 还会介绍算法周边的一些工程架构及实现原理,比如如何实时地收集训练样本 和监控算法指标、参数服务器的架构设计、做 AB 测试的注意事项等等,了解 这些知识对算法工程师是大有裨益的。

本书充分照顾机器学习初学者的知识水平,理论体系完整、公式推导清晰, 本科毕业的理工科学生都能看懂。另外由于本书跟工业实践结合得很紧密,所 以也非常适合于从事算法相关工作的工程师。

前言

我曾经在字节跳动工作过一段时间,那是一家企业文化让我感到很舒适的公司,我说的舒适指的是平等和开放,公司很有野心,员工也都十分优秀,每年校招总能吸引一大批优秀的毕业生前来面试。在面试算法岗的同学里有很大一部分人面临这样的困境:他们很勤奋,也上过数据挖掘、机器学习的相关课程,但是对算法的思想、特点把握得不准,也看不到各个算法之间的通性和联系,有些同学直接问我有什么书可以推荐。我深深地感到对于那些有一定机器学习基础而经验尚不丰富的同学来说,一本从实际应用出发、深挖算法原理的图书是多么地重要。不久之后我就开始了本书的编写,没想到这一写就是一年半的时间,在整理知识的过程中我也得到了进一步的提升,希望在今后的日子里也能和读者一起进步。
这本书更是写给进入职场的算法工程师的,我确定这里需要一个“更”字。直到今天我一直都是一线码农,我写的都是实际工作中效果好、见效快的算法,如果你是一名算法工程师,在读本书的过程中相信会引起更多的共鸣。我刚参加工作那几年买了不少机器学习方面的书,现在想想当初是多么地焦虑,如果那时我拥有一本《实用算法宝典》会是多么地开心。因此现在写书时心里一直有个美好的愿望,希望我能写出一本工业界的算法宝典,帮广大读者省去四处求索的时间。当然算法工程师还有另一个重要的学习途径------看论文,论文是关于算法的第一手资料,里面有原作者创作的心路历程。但是看论文对读者的知识技能要求比较高,因为写论文的人一般都会对算法的优点大书特书,而对劣势轻描淡写,道行浅的人难以辨别其中的水份有多少。相比之下写书的人会比较客观,他会把不同的算法放在一起对比,而且被写进书里面的算法都经过了时间的考验,所以读书对于初级选手来说是一种更友好的学习方式。
在难易程度上,我对本书的定位是深入浅出。“深入浅出”这个词已经被大家用滥了,看到这个词读者心目中想到的可能只有“浅出”,默认忽略了“深入”。而我一直在提醒自己写书一定要深入,不能为了简单易懂而故意避讳冗长的公式推导,深入才是对读者的负责。对于每一位想成为算法工程师的同学而言,你们都选择了一条注定艰辛的道路,不要幻想着通过轻轻松松看完一本书就能够领会各大主流算法的精髓。然而如果写书只顾着深入,那就成了作者一个人的自嗨,同样是对读者的不负责。为了帮助读者加速理解、减少疑惑,我会尽量从实际应用出发,多举一些工程实践中的例子,详细列出公式的推导过程,给出核心算法的代码实现,道破不同算法的内在联系。

目录

第1章 概述 1
1.1 机器学习基本流程 .......................... 1
1.2 业界常用算法............................. 2
1.3 构建机器学习系统 .......................... 3

第2章 统计学 5
2.1 概率分布 ............................... 5
2.1.1 期望与方差 .......................... 5
2.1.2 概率密度函数......................... 8
2.1.3 累积分布函数......................... 10
2.2 极大似然估计与贝叶斯估计 ..................... 10 
2.2.1 极大似然估计......................... 11 
2.2.2 贝叶斯参数估计........................ 13 
2.2.3 共轭先验与平滑的关系.................... 14
2.3 置信区间 ............................... 15 
2.3.1 t分布............................. 15 
2.3.2 区间估计 ........................... 16 
2.3.3 Wilson置信区间 ....................... 18
2.4 相关性................................. 19 
2.4.1 数值变量的相关性 ...................... 19 
2.4.2 分类变量的相关性 ...................... 21 
2.4.3 顺序变量的相关性 ...................... 26 
2.4.4 分布之间的距离........................ 26

第3章 矩阵 29 
3.1 矩阵的物理意义............................ 29
3.1.1 矩阵是什么 .......................... 29 
3.1.2 矩阵的行列式......................... 30 
3.1.3 矩阵的逆 ........................... 30 
3.1.4 特征值和特征向量 ...................... 31
3.2 矩阵的数值稳定性 .......................... 32 
3.2.1 矩阵数值稳定性的度量.................... 32 
3.2.2 基于列主元的gaussjordan消元法 ............. 32 
3.2.3 岭回归............................. 36
3.3 矩阵分解 ............................... 37 
3.3.1 特征值分解与奇异值分解 .................. 37 
3.3.2 高维稀疏矩阵的特征值分解 ................. 39 
3.3.3 基于矩阵分解的推荐算法 .................. 43
3.4 矩阵编程实践............................. 44 
3.4.1 numpy数组运算 ....................... 44 
3.4.2 稀疏矩阵的压缩方法..................... 48 
3.4.3 用MapReduce实现矩阵乘法 ................ 50

第4章 优化方法 51
4.1 无约束优化方法............................ 51 
4.1.1 梯度下降法 .......................... 51 
4.1.2 拟牛顿法 ........................... 53
4.2 带约束优化方法............................ 55
4.3 在线学习方法............................. 58 
4.3.1 SGD.............................. 58 4.3.2 
FTRL............................. 59
4.4 深度学习中的优化方法........................ 66 
4.4.1 动量法............................. 66 
4.4.2 AdaGrad ........................... 67 
4.4.3 RMSprop ........................... 67 
4.4.4 Adadelta ........................... 67 
4.4.5 Adam ............................. 68
4.5 EM算法................................ 68 
4.5.1 Jensen不等式 ........................ 69 
4.5.2 EM算法 ........................... 69 
4.5.3 高斯混合模型......................... 73

第5章 线性模型 75
5.1 广义线性模型............................. 75 
5.1.1 指数族分布 .......................... 75 
5.1.2 广义线性模型......................... 76
5.2 LR................................... 79
5.3 FM................................... 80 
5.3.1 特征组合 ........................... 80 
5.3.2 分解机制 ........................... 81 
5.3.3 FM造新特征的思路 ..................... 83
5.4 FFM.................................. 84
5.5 算法实验对比............................. 91

第6章 概率图模型 93
6.1 隐马尔可夫模型............................ 94 
6.1.1 模型介绍 ........................... 94 
6.1.2 模型训练 ........................... 97 
6.1.3 模型预测 ........................... 98
6.2 条件随机场 .............................. 99 
6.2.1 CRF模型及特征函数 .................... 99 
6.2.2 向前变量和向后变量.....................103 
6.2.3 模型训练 ...........................105 
6.2.4 模型预测 ...........................107 
6.2.5 CRF与HMM的对比....................107

第7章 文本向量化 109
7.1 词向量.................................109 
7.1.1 word2vec ...........................109 
7.1.2 fastText............................113 
7.1.3 GloVe.............................114 
7.1.4 算法实验对比.........................116
7.2 文档向量 ...............................118 
7.2.1 ParagraphVector.......................118 
7.2.2 LDA..............................120

第8章 树模型 125
8.1 决策树.................................125 
8.1.1 分类树.............................125 
8.1.2 回归树.............................129 
8.1.3 剪枝..............................132
8.2 随机森林 ...............................133
8.3 AdaBoost ...............................134
8.4 XGBoost ...............................136
8.5 LightGBM...............................140 
8.5.1 GOSS.............................141 
8.5.2 互斥特征捆绑.........................141 
8.5.3 Leaf-Wise生长策略 .....................142 
8.5.4 DART.............................143
8.6 算法实验对比.............................144

第9章 神经网络 149
9.1 神经网络概述.............................149 
9.1.1 网络模型 ...........................149 
9.1.2 反向传播 ...........................152 
9.1.3 损失函数 ...........................153 
9.1.4 过拟合问题 ..........................153 
9.1.5 梯度消失 ...........................155 
9.1.6 参数初始化 ..........................156
9.2 卷积神经网络.............................157 
9.2.1 卷积..............................157 
9.2.2 池化..............................159 
9.2.3 CNN网络结构 ........................160 
9.2.4 textCNN ...........................161
9.3 循环神经网络.............................162 
9.3.1 RNN通用架构........................162 
9.3.2 RNN的学习问题.......................164 
9.3.3 GRU..............................167 
9.3.4 LSTM.............................168 
9.3.5 seq2seq ............................171
9.4 注意力机制 ..............................173

第 10 章 Keras 编程 177 
10.1快速上手 ...............................177 
10.2 Keras 层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
10.2.1 Keras 内置层 . . . . . . . . . . . . . . . . . . . . . . . . . 179
10.2.2自定义层 ...........................186 
10.3调试技巧 ...............................190 
10.3.1查看中间层的输出 ......................190 
10.3.2回调函数 ...........................191 
10.4CNN和RNN的实现 ........................194

第 11 章 推荐系统实战 201 
11.1问题建模 ...............................201 
11.2数据预处理 ..............................204
11.2.1 归一化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
11.2.2特征哈希 ...........................206 
11.3模型探索 ...............................207 
11.3.1 基于共现的模型 . . . . . . . . . . . . . . . . . . . . . . . . 207 
11.3.2 图模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 
11.3.3 DeepFM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 
11.3.4 DCN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 
11.4推荐服务 ...............................219 
11.4.1 RPC 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 
11.4.2 gRPC 的使用 . . . . . . . . . . . . . . . . . . . . . . . . . 220 
11.4.3 服务发现与负载均衡 . . . . . . . . . . . . . . . . . . . . . 224

第 12 章 收集训练数据 227 
12.1日志的设计 ..............................227 
12.2日志的传输 ..............................229 
12.3日志的合并 ..............................236 
12.4样本的存储 ..............................246

第 13 章 分布式训练 249 
13.1参数服务器 ..............................249 
13.2基于PS的优化算法 .........................255 
13.3在线学习 ...............................257

第14章 A/B测试 259 
14.1试验分组 ...............................259 
14.2指标监控 ...............................264
14.2.1 指标的计算 . . . . . . . . . . . . . . . . . . . . . . . . . . 264 
14.2.2指标的上报与存储 ......................265 
14.2.3指标的展现与监控 ......................267
14.3 试验结果分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

原文地址:https://www.cnblogs.com/zhangchaoyang/p/12247946.html

时间: 2024-08-30 00:02:48

我的新书:《工业机器学习算法详解与实战》的相关文章

AdaBoost算法详解与实战

[原创]Liu_LongPo 转载请注明出处 [CSDN]http://blog.csdn.net/llp1992 AdaBoost算法是基于单层决策树等弱分类算法的强学习分类算法.单层决策树算法也是一种分类算法,但是其分类效果较差,只根据一个特征进行数据划分,因此单层决策树算法被称为弱分类算法:而AdaBoost算法通过将多个弱分类算法串行训练而成,属于强分类算法. AdaBoost算法是boosting算法的一种,它所串联的弱分类器一般都是一致的,而且它训练是的关注点在于被之前分类器分错的数

机器学习经典算法详解及Python实现---朴素贝叶斯分类及其在文本分类、垃圾邮件检测中的应用

摘要: 朴素贝叶斯分类是贝叶斯分类器的一种,贝叶斯分类算法是统计学的一种分类方法,利用概率统计知识进行分类,其分类原理就是利用贝叶斯公式根据某对象的先验概率计算出其后验概率(即该对象属于某一类的概率),然后选择具有最大后验概率的类作为该对象所属的类.总的来说:当样本特征个数较多或者特征之间相关性较大时,朴素贝叶斯分类效率比不上决策树模型:当各特征相关性较小时,朴素贝叶斯分类性能最为良好.另外朴素贝叶斯的计算过程类条件概率等计算彼此是独立的,因此特别适于分布式计算.本文详述了朴素贝叶斯分类的统计学

机器学习经典算法详解及Python实现--基于SMO的SVM分类器

原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector machine,简称SVM.通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解. (一)理解SVM基本原理 1,SVM的本质--分类 给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些

机器学习经典算法详解及Python实现--聚类及K均值、二分K-均值聚类算法

摘要 聚类是一种无监督的学习(无监督学习不依赖预先定义的类或带类标记的训练实例),它将相似的对象归到同一个簇中,它是观察式学习,而非示例式的学习,有点像全自动分类.说白了,聚类(clustering)是完全可以按字面意思来理解的--将相同.相似.相近.相关的对象实例聚成一类的过程.机器学习中常见的聚类算法包括 k-Means算法.期望最大化算法(Expectation Maximization,EM,参考"EM算法原理").谱聚类算法(参考机器学习算法复习-谱聚类)以及人工神经网络算法

机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树

摘要: Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Regression Tree),本文介绍了CART用于离散标签分类决策和连续特征回归时的原理.决策树创建过程分析了信息混乱度度量Gini指数.连续和离散特征的特殊处理.连续和离散特征共存时函数的特殊处理和后剪枝:用于回归时则介绍了回归树和模型树的原理.适用场景和创建过程.个人认为,回归树和模型树

机器学习经典算法详解及Python实现--线性回归(Linear Regression)算法

(一)认识回归 回归是统计学中最有力的工具之一.机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型.连续性而定义的.顾名思义,分类算法用于离散型分布预测,如前面讲过的KNN.决策树.朴素贝叶斯.adaboost.SVM.Logistic回归都是分类算法:回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签. 回归的目的就是建立一个回归方程用来预测目

EM算法(3):EM算法详解

目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法详解

[转] KMP算法详解

转载自:http://www.matrix67.com/blog/archives/115 KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段.    我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法.KMP算法是拿来处理字符串匹配的.换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串).比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串.

[搜索]波特词干(Porter Streamming)提取算法详解(3)

 接上 [搜索]波特词干(Porter Streamming)提取算法详解(2) 下面分为5大步骤来使用前面提到的替换条件来进行词干提取. 左边是规则,右边是提取成功或者失败的例子(用小写字母表示). 步骤1 SSES -> SS                   caresses  ->  caress IES  -> I                          ponies    ->  poni ties      ->  ti SS   -> S