实用机器学习
作者:孙亮,黄倩 著
出版时间:2017
内容简介
大数据时代为机器学习的应用提供了广阔的空间,各行各业涉及数据分析的工作都需要使用机器学习算法。本书围绕实际数据分析的流程展开,着重介绍数据探索、数据预处理和常用的机器学习算法模型。本书从解决实际问题的角度出发,介绍回归算法、分类算法、推荐算法、排序算法和集成学习算法。在介绍每种机器学习算法模型时,书中不但阐述基本原理,而且讨论模型的评价与选择。为方便读者学习各种算法,本书介绍了R语言中相应的软件包并给出了示例程序。本书的一大特色就是贴近工程实践。首先,本书仅侧重介绍当前工业界常用的机器学习算法,而不追求知识内容的覆盖面;其次,本书在介绍每类机器学习算法时,力求通俗易懂地阐述算法思想,而不追求理论的深度,让读者借助代码获得直观的体验。
目录
第1章 引论 1
1.1 什么是机器学习 1
1.2 机器学习算法的分类 2
1.3 实际应用 3
1.3.1 病人住院时间预测 3
1.3.2 信用分数估计 4
1.3.3 Netflix上的影片推荐 4
1.3.4 酒店推荐 5
1.3.5 讨论 6
1.4 本书概述 7
1.4.1 本书结构 9
1.4.2 阅读材料及其他资源 10
第2章 R语言 12
2.1 R的简单介绍 12
2.2 R的初步体验 13
2.3 基本语法 14
2.3.1 语句 14
2.3.2 函数 17
2.4 常用数据结构 19
2.4.1 向量 19
2.4.2 因子 23
2.4.3 矩阵 24
2.4.4 数据框 26
2.4.5 列表 29
2.4.6 下标系统 33
2.5 公式对象和apply函数 34
2.6 R软件包 36
2.6.1 软件包的安装 37
2.6.2 软件包的使用 38
2.6.3 软件包的开发 38
2.7 网络资源 38
第3章 数学基础 39
3.1 概率 39
3.1.1 基本概念 39
3.1.2 基本公式 40
3.1.3 常用分布 42
3.1.4 随机向量及其分布 43
3.1.5 随机变量的数字特征 46
3.1.6 随机向量的数字特征 48
3.2 统计 49
3.2.1 常用数据特征 49
3.2.2 参数估计 52
3.3 矩阵 54
3.3.1 基本概念 54
3.3.2 基本运算 56
3.3.3 特征值与特征向量 57
3.3.4 矩阵分解 60
3.3.5 主成分分析 62
3.3.6 R中矩阵的计算 68
第4章 数据探索和预处理 74
4.1 数据类型 74
4.2 数据探索 75
4.2.1 常用统计量 76
4.2.2 使用R实际探索数据 76
4.3 数据预处理 82
4.3.1 缺失值的处理 82
4.3.2 数据的标准化 83
4.3.3 删除已有变量 85
4.3.4 数据的变换 86
4.3.5 构建新的变量:哑变量 86
4.3.6 离群数据的处理 88
4.4 数据可视化 89
4.4.1 直方图 89
4.4.2 柱状图 92
4.4.3 茎叶图 95
4.4.4 箱线图 96
4.4.5 散点图 100
第5章 回归分析 104
5.1 回归分析的基本思想 104
5.2 线性回归和最小二乘法 105
5.2.1 最小二乘法的几何解释 106
5.2.2 线性回归和极大似然估计 107
5.3 岭回归和Lasso 108
5.3.1 岭回归 108
5.3.2 Lasso与稀疏解 110
5.3.3 Elastic Net 114
5.4 回归算法的评价和选取 114
5.4.1 均方差和均方根误差 114
5.4.2 可决系数 114
5.4.3 偏差-方差权衡 115
5.5 案例分析 118
5.5.1 数据导入和探索 118
5.5.2 数据预处理 120
5.5.3 将数据集分成训练集和测试集 121
5.5.4 建立一个简单的线性回归模型 121
5.5.5 建立岭回归和Lasso模型 122
5.5.6 选取合适的模型 124
5.5.7 构造新的变量 126
5.6 小结 126
第6章 分类算法 127
6.1 分类的基本思想 127
6.2 决策树 130
6.2.1 基本原理 130
6.2.2 决策树学习 131
6.2.3 过拟合和剪枝 138
6.2.4 实际使用 139
6.2.5 讨论 148
6.3 逻辑回归 148
6.3.1 sigmoid函数的性质 148
6.3.2 通过极大似然估计来估计参数 149
6.3.3 牛顿法 151
6.3.4 正则化项的引入 153
6.3.5 实际使用 154
6.4 支持向量机 161
6.4.1 基本思想:最大化分类间隔 161
6.4.2 最大分类间隔的数学表示 163
6.4.3 如何处理线性不可分的数据 164
6.4.4 Hinge损失函数 166
6.4.5 对偶问题 168
6.4.6 非线性支持向量机和核技巧 170
6.4.7 实际使用 173
6.5 损失函数和不同的分类算法 175
6.5.1 损失函数 175
6.5.2 正则化项 178
6.6 交叉检验和caret包 180
6.6.1 模型选择和交叉检验 180
6.6.2 在R中实现交叉检验以及caret包 182
6.7 分类算法的评价和比较 192
6.7.1 准确率 193
6.7.2 混淆矩阵 193
6.7.3 精确率、召回率和F1度量 195
6.7.4 ROC曲线和AUC 196
6.7.5 R中评价标准的计算 199
6.8 不平衡分类问题 201
6.8.1 使用不同的算法评价标准 201
6.8.2 样本权值 201
6.8.3 取样方法 202
6.8.4 代价敏感学习 203
第7章 推荐算法 205
7.1 推荐系统基础 205
7.1.1 常用符号 208
7.1.2 推荐算法的评价标准 209
7.2 基于内容的推荐算法 210
7.3 基于矩阵分解的算法 211
7.3.1 无矩阵分解的基准方法 211
7.3.2 基于奇异值分解的推荐算法 212
7.3.3 基于SVD推荐算法的变体 216
7.4 基于邻域的推荐算法 222
7.4.1 基于用户的邻域推荐算法 223
7.4.2 基于商品的邻域推荐算法 225
7.4.3 混合算法 226
7.4.4 相似度的计算 227
7.5 R中recommenderlab的实际 使用 232
7.6 推荐算法的评价和选取 250
第8章 排序学习 253
8.1 排序学习简介 253
8.1.1 解决排序问题的基本思路 254
8.1.2 构造特征 255
8.1.3 获取相关度分数 256
8.1.4 数学符号 257
8.2 排序算法的评价 257
8.2.1 MAP 258
8.2.2 DCG 260
8.2.3 NDCG 261
8.2.4 讨论 261
8.3 逐点方法 262
8.3.1 基于SVM的逐点排序方法 263
8.3.2 逐点方法讨论 264
8.4 逐对方法 265
8.4.1 Ranking SVM算法 265
8.4.2 IR-SVM算法 266
8.4.3 RankNet算法 267
8.4.4 LambdaRank算法 271
8.4.5 LambdaMART算法 273
8.5 逐列方法 279
8.5.1 SVMmap算法 279
8.5.2 讨论 283
第9章 集成学习 284
9.1 集成学习简介 284
9.2 bagging简介 285
9.3 随机森林 289
9.3.1 训练随机森林的基本流程 289
9.3.2 利用随机森林估计变量的 重要性 290
9.3.3 随机森林的实际使用 291
9.4 boosting简介 300
9.4.1 boosting和指数损失函数 301
9.4.2 AdaBoost算法 302
9.4.3 AdaBoost的实际使用 306
9.4.4 讨论 311
9.5 提升决策树和梯度提升算法 311
9.5.1 提升决策树和梯度提升算法的基本原理 311
9.5.2 如何避免过拟合 315
9.5.3 gbm包的实际使用 318
9.5.4 讨论 327
9.6 学习器的聚合及stacking 328
9.6.1 简单平均 328
9.6.2 加权平均 329
9.6.3 stacking的基本思想及应用 329
9.7 小结 331
参考文献 332
索引 334