《机器学习算法原理与编程实践》书籍深入浅出地介绍了机器学习的基础理论和广泛应用的算法,覆盖了从传统算法到最新的深度学习技术,作者通过清晰的问题描述、策略解析、数学推导和代码实现,有效地桥接了理论与实践之间的鸿沟,对初学者而言,书中对编程语言和开发环境的详细介绍,以及对对象、矩阵和矢量化编程的讲解,大大降低了入门的难度,高级读者会欣赏到深度学习、贝叶斯网络和隐马尔科夫模型等高级主题的深入讨论,书中对数学原理的透彻解析与程序代码的紧密结合,不仅帮助读者加深对复杂公式的理解,还提供了实际应用的示例,促进了机器学习技术的理解和运用,通过对Linux操作系统下机器学习环境的部署讲解,本书还展现了对实战环境的重视,整体而言,这本书不仅是技术的传授,更是对机器学习领域热点的洞察和探索,适合所有层次的读者深入学习。
本书是机器学习原理和算法编码实现的基本书籍。内容分为两条主线:单个算法的原理解释和机器学习理论的发展和变化。除了传统的分类、聚类、预测等常用算法外,该算法还增加了深度学习、贝叶斯网络、隐马尔科夫模型等内容。对于每个算法,它包括问题、解决策略、数学推导、编码实现和结果评估。数学推导力图从浅到深。数学原理与程序代码的结构逐一比较有助于降低学习门槛,加深对公式的理解,发挥促进和扩大机器学习的作用。
目录
- 第1章 机器学习的基础 1
- 1.1 编程语言与开发环境 2
- 1.1.1 搭建Python开发环境 2
- 1.1.2 安装Python算法库 4
- 1.1.3 IDE配置及其安装测试 5
- 1.2 对象、矩阵与矢量化编程 8
- 1.2.1 对象与维度 8
- 1.2.2 初识矩阵 10
- 1.2.3 矢量化编程与GPU运算 13
- 1.2.4 理解数学公式与NumPy矩阵运算 14
- 1.2.5 Linalg线性代数库 18
- 1.3 机器学习的数学基础 20
- 1.3.1 相似性的度量 21
- 1.3.2 各类距离的意义与Python实现 22
- 1.3.3 理解随机性 29
- 1.3.4 回顾概率论 30
- 1.3.5 多元统计基础 32
- 1.3.6 特征间的相关性 33
- 1.3.7 再谈矩阵——空间的变换 35
- 1.3.8 数据归一化 40
- 1.4 数据处理与可视化 42
- 1.4.1 数据的导入和内存管理 42
- 1.4.2 表与线性结构的可视化 45
- 1.4.3 树与分类结构的可视化 46
- 1.4.4 图与网络结构的可视化 47
- 1.5 Linux操作系统下部署Python机器学习开发环境 48
- 1.5.1 Linux发行版的选择 48
- 1.5.2 CentOS部署多版本Python实例 49
- 1.5.3 安装NumPy、SciPy、Matplotlib开发包 52
- 1.5.4 安装Scikit-Learn开发包 54
- 1.6 结语 55
- 第2章 中文文本分类 56
- 2.1 文本挖掘与文本分类的概念 56
- 2.2 文本分类项目 58
- 2.2.1 文本预处理 58
- 2.2.2 中文分词介绍 61
- 2.2.3 Scikit-Learn库简介 66
- 2.2.4 向量空间模型 70
- 2.2.5 权重策略:TF-IDF方法 71
- 2.2.6 使用朴素贝叶斯分类模块 74
- 2.2.7 分类结果评估 76
- 2.3 分类算法:朴素贝叶斯 78
- 2.3.1 贝叶斯公式推导 78
- 2.3.2 朴素贝叶斯算法实现 79
- 2.3.3 算法的改进 82
- 2.3.4 评估分类结果 82
- 2.4 分类算法:kNN 83
- 2.4.1 kNN算法原理 83
- 2.4.2 kNN算法的Python实现 86
- 2.4.3 评估分类结果 88
- 2.5 结语 88
- 第3章 决策树的发展 89
- 3.1 决策树的基本思想 89
- 3.1.1 从一个实例开始 90
- 3.1.2 决策树的算法框架 95
- 3.1.3 信息熵测度 96
- 3.2 ID3决策树 98
- 3.2.1 ID3算法 98
- 3.2.2 ID3的实现 101
- 3.2.3 决策树主方法 101
- 3.2.4 训练决策树 103
- 3.2.5 持久化决策树 104
- 3.2.6 决策树分类 105
- 3.2.7 算法评估 106
- 3.3 C4.5算法 106
- 3.3.1 信息增益率 106
- 3.3.2 C4.5的实现 108
- 3.3.3 训练决策树 108
- 3.3.4 分类数据 109
- 3.4 Scikit-Learn与回归树 110
- 3.4.1 回归算法原理 110
- 3.4.2 *小剩余方差法 111
- 3.4.3 模型树 113
- 3.4.4 剪枝策略 113
- 3.4.5 Scikit-Learn实现 115
- 3.5 结语 117
- 第4章 推荐系统原理 118
- 4.1 推荐系统概述 119
- 4.1.1 从亚马逊网站认识推荐系统 119
- 4.1.2 推荐系统的架构 122
- 4.1.3 开源推荐系统 125
- 4.2 协同过滤及其算法 126
- 4.2.1 协同过滤 126
- 4.2.2 数据预处理 127
- 4.2.3 使用Scikit-Learn的KMeans聚类 127
- 4.2.4 User CF原理 129
- 4.2.5 Item CF原理 131
- 4.2.6 SVD原理与计算 132
- 4.3 KMeans算法详解 135
- 4.3.1 KMeans算法流程 135
- 4.3.2 辅助函数 136
- 4.3.3 聚类主函数 137
- 4.3.4 评估分类结果 139
- 4.4 聚类的改进:二分KMeans算法 141
- 4.4.1 二分聚类主函数 141
- 4.4.2 评估分类结果 142
- 4.5 SVD算法详解 143
- 4.5.1 SVD算法回顾 143
- 4.5.2 常用距离函数 146
- 4.5.3 SVD数据集 146
- 4.5.4 SVD算法主函数 147
- 4.5.5 评估结果 147
- 4.6 结语 148
- 第5章 梯度寻优 149
- 5.1 **化与计算复杂性 149
- 5.1.1 **化理论 149
- 5.1.2 **化的数学描述 150
- 5.1.3 凸集与分离定理 151
- 5.1.4 凸函数及其性质 153
- 5.1.5 局部**与全局** 155
- 5.1.6 计算复杂性与NP问题 156
- 5.1.7 逐次逼近法 159
- 5.2 Logistic梯度下降法 163
- 5.2.1 梯度下降法 164
- 5.2.2 线性分类器 166
- 5.2.3 Logistic函数——世界不是非黑即白 169
- 5.2.4 算法流程 171
- 5.2.5 对测试集进行分类 175
- 5.3 算法分析 175
- 5.3.1 超平面的变化趋势 176
- 5.3.2 超平面的收敛评估 177
- 5.3.3 权重向量的收敛评估 179
- 5.3.4 算法总体评价 180
- 5.4 随机梯度下降法:算法改进与评估 180
- 5.4.1 主函数 181
- 5.4.2 程序输出 182
- 5.4.3 步长变化率 183
- 5.4.4 权重收敛评估 184
- 5.4.5 权重分量的变化趋势 185
- 5.4.6 算法总体评价 187
- 5.5 结语 187
- 第6章 神经网络初步 189
- 6.1 神经网络简史 189
- 6.1.1 起源与早期发展 189
- 6.1.2 中期发展 190
- 6.1.3 当前的发展与反思 192
- 6.2 BP神经网络理论 192
- 6.2.1 线性不可分问题 192
- 6.2.2 BP网络构成 193
- 6.2.3 BP网络的训练过程 196
- 6.3 BP网络的实现和评估 199
- 6.3.1 BP网络类与主要方法 199
- 6.3.2 设计BP网络 199
- 6.3.3 辅助函数 202
- 6.3.4 主函数 203
- 6.3.5 分类器 204
- 6.3.6 执行分类并输出结果 205
- 6.3.7 BP网络评估 207
- 6.4 自组织特征映射神经网络 208
- 6.4.1 SOM网络框架 208
- 6.4.2 SOM类 211
- 6.4.3 功能函数 212
- 6.4.4 SOM网络的实现 212
- 6.4.5 聚类结果 213
- 6.5 Boltzmann机算法 215
- 6.5.1 问题的提出 215
- 6.5.2 模拟退火原理 216
- 6.5.3 Boltzmann分布与退火过程 217
- 6.5.4 Boltzmann机类与功能函数 219
- 6.5.5 *短路径的实现 222
- 6.5.6 执行算法 223
- 6.5.7 评估结果 224
- 6.6 结语 225
- 第7章 预测的技术与哲学 226
- 7.1 线性系统的预测 226
- 7.1.1 回归与现代预测学 226
- 7.1.2 *小二乘法 227
- 7.1.3 代码实现 229
- 7.1.4 正规方程组法 231
- 7.1.5 正规方程组的代码实现 232
- 7.1.6 算法评估 232
- 7.2 径向基网络 233
- 7.2.1 RBF网络 233
- 7.2.2 辅助函数 236
- 7.2.3 使用RBF预测 236
- 7.2.4 评估预测结果 238
- 7.3 岭回归 238
- 7.3.1 验证多重共线性 239
- 7.3.2 岭回归理论 240
- 7.3.3 岭际分析 240
- 7.3.4 k值的判定 242
- 7.3.5 辅助函数 243
- 7.3.6 岭回归的实现与k值计算 243
- 7.3.7 算法评估 244
- 7.4 预测的哲学 245
- 7.4.1 从《周易》谈起 246
- 7.4.2 两仪生四象 249
- 7.4.3 周期三与混沌 251
- 7.4.4 Logistic中的吸引子 254
- 7.4.5 三生万物 258
- 7.4.6 八卦图及其推演 261
- 7.5 结语 263
- 第8章 **分类器——支持向量机 265
- 8.1 支持向量机的理论基础 266
- 8.1.1 经验风险** 266
- 8.1.2 关键定理与VC维 267
- 8.1.3 结构风险** 270
- 8.2 SVM的数学推导 272
- 8.2.1 **间隔超平面 272
- 8.2.2 拉格朗日乘子法 275
- 8.2.3 KKT条件与对偶变换 276
- 8.2.4 分类器函数 277
- 8.2.5 映射到高维空间 278
- 8.2.6 核函数法 280
- 8.2.7 离群点的松弛变量 281
- 8.3 SMO算法 284
- 8.3.1 SMO求解SVM 284
- 8.3.2 构造SMO类 288
- 8.3.3 主函数 290
- 8.3.4 训练数据 291
- 8.3.5 分类并评估算法 293
- 8.4 SVM中文文本分类 293
- 8.4.1 回顾中文文本分类 294
- 8.4.2 Scikit-Learn SVM分类 294
- 8.4.3 评估结果 295
- 8.5 结语 296
- 第9章 人脸识别中的机器学习 297
- 9.1 模式识别概述 297
- 9.1.1 认知与模式 29