本书的目标,是让非机器学习领域甚至非计算机专业出身但有学习需求的人,轻松地掌握机器学习的基本知识,从而拥有相关的实战能力。
本书通过AI“小白”小冰拜师程序员咖哥学习机器学习的对话展开,内容轻松,实战性强,主要包括机器学习快速上手路径、数学和Pytho基础知识、机器学习基础算法(线性回归和逻辑回归)、深度神经网络、卷积神经网络、循环神经网络、经典算法、集成学习、无监督和半监督等非监督学习类型、强化学习实战等内容,以及相关实战案例。本书所有案例均通过Python及Scikit-lear机器学习库和Keras 深度学习框架实现,同时还包含丰富的数据分析和数据可视化内容。
本书适合对AI 感兴趣的程序员、项目经理、在校大学生以及任何想以零基础学机器学习的人,用以入门机器学习领域,建立从理论到实战的知识通道。
目录
- 引子:AI 菜鸟的挑战—100 天上线智能预警系统
- 第1 课 机器学习快速上手路径—唯有实战
- 1.1 机器学习的家族谱
- 1.1.1 新手入门机器学习的3 个好消息
- 1.1.2 机器学习就是从数据中发现规律
- 1.1.3 机器学习的类别—监督学习及其他
- 1.1.4 机器学习的重要分支—深度学习
- 1.1.5 机器学习新热点—强化学习
- 1.1.6 机器学习的两大应用场景—回归与分类
- 1.1.7 机器学习的其他应用场景
- 1.2 快捷的云实战学习模式
- 1.2.1 在线学习平台上的机器学习课程
- 1.2.2 用Jupyter Notebook 直接实战
- 1.2.3 用Google Colab 开发第一个机器学习程序
- 1.2.4 在Kaggle 上参与机器学习竞赛
- 1.2.5 在本机上“玩”机器学习
- 1.3 基本机器学习术语
- 1.3.1 特征
- 1.3.2 标签
- 1.3.3 模型
- 1.4 Pytho和机器学习框架
- 1.4.1 为什么选择用Pytho
- 1.4.2 机器学习和深度学习框架
- 1.5 机器学习项目实战架构
- 1.5.1 第1 个环节:问题定义
- 1.5.2 第2 个环节:数据的收集和预处理
- 1.5.3 第3 个环节:选择机器学习模型
- 1.5.4 第4 个环节:训练机器,确定参数
- 1.5.5 第5 个环节:超参数调试和性能优化
- 1.6 本课内容小结
- 1.7 课后练习
- 第2 课 数学和Pytho基础知识—一天搞定
- 2.1 函数描述了事物间的关系
- 2.1.1 什么是函数
- 2.1.2 机器学习中的函数
- 2.2 捕捉函数的变化趋势
- 2.2.1 连续性是求导的前提条件
- 2.2.2 通过求导发现y 如何随x 而变
- 2.2.3 凸函数有一个全局最低点
- 2.3 梯度下降是机器学习的动力之源
- 2.3.1 什么是梯度
- 2.3.2 梯度下降:下山的隐喻
- 2.3.3 梯度下降有什么用
- 2.4 机器学习的数据结构—张量
- 2.4.1 张量的轴、阶和形状
- 2.4.2 标量—0D(阶)张量
- 2.4.3 向量—1D(阶)张量
- 2.4.4 矩阵—2D(阶)张量
- 2.4.5 序列数据 —3D(阶)张量
- 2.4.6 图像数据 —4D(阶)张量
- 2.4.7 视频数据—5D(阶)张量
- 2.4.8 数据的维度和空间的维度
- 2.5 Pytho的张量运算
- 2.5.1 机器学习中张量的创建
- 2.5.2 通过索引和切片访问张量中的数据
- 2.5.3 张量的整体操作和逐元素运算
- 2.5.4 张量的变形和转置
- 2.5.5 Pytho中的广播
- 2.5.6 向量和矩阵的点积运算
- 2.6 机器学习的几何意义
- 2.6.1 机器学习的向量空间
- 2.6.2 深度学习和数据流形
- 2.7 概率与统计研究了随机事件的规律
- 2.7.1 什么是概率
- 2.7.2 正态分布
- 2.7.3 标准差和方差
- 2.8 本课内容小结
- 2.9 课后练习
- 第3 课 线性回归—预测网店的销售额
- 3.1 问题定义:小冰的网店广告该如何投放
- 3.2 数据的收集和预处理
- 3.2.1 收集网店销售额数据
- 3.2.2 数据读取和可视化
- 3.2.3 数据的相关分析
- 3.2.4 数据的散点图
- 3.2.5 数据集清洗和规范化
- 3.2.6 拆分数据集为训练集和测试集
- 3.2.7 把数据归一化
- 3.3 选择机器学习模型
- 3.3.1 确定线性回归模型
- 3.3.2 假设(预测)函数—h (x )
- 3.3.3 损失(误差)函数—L (w ,b )
- 3.4 通过梯度下降找到最佳参数
- 3.4.1 训练机器要有正确的方向
- 3.4.2 凸函数确保有最小损失点
- 3.4.3 梯度下降的实现
- 3.4.4 学习速率也很重要
- 3.5 实现一元线性回归模型并调试超参数
- 3.5.1 权重和偏置的初始值
- 3.5.2 进行梯度下降
- 3.5.3 调试学习速率
- 3.5.4 调试迭代次数
- 3.5.5 在测试集上进行预测
- 3.5.6 用轮廓图描绘L 、w 和b 的关系
- 3.6 实现多元线性回归模型
- 3.6.1 向量化的点积运算
- 3.6.2 多变量的损失函数和梯度下降
- 3.6.3 构建一个线性回归函数模型
- 3.6.4 初始化权重并训练机器
- 3.7 本课内容小结
- 3.8 课后练习
- 第4 课 逻辑回归—给病患和鸢尾花分类
- 4.1 问题定义:判断客户是否患病
- 4.2 从回归问题到分类问题
- 4.2.1 机器学习中的分类问题
- 4.2.2 用线性回归+ 阶跃函数完成分类
- 4.2.3 通过Sigmiod 函数进行转换
- 4.2.4 逻辑回归的假设函数
- 4.2.5 逻辑回归的损失函数
- 4.2.6 逻辑回归的梯度下降
- 4.3 通过逻辑回归解决二元分类问题
- 4.3.1 数据的准备与分析
- 4.3.2 建立逻辑回归模型
- 4.3.3 开始训练机器
- 4.3.4 测试分类结果
- 4.3.5 绘制损失曲线
- 4.3.6 直接调用Sklear库
- 4.3.7 哑特征的使用
- 4.4 问题定义:确定鸢尾花的种类
- 4.5 从二元分类到多元分类
- 4.5.1 以一对多
- 4.5.2 多元分类的损失函数
- 4.6 正则化、欠拟合和过拟合
- 4.6.1 正则化
- 4.6.2 欠拟合和过拟合
- 4.6.3 正则化参数
- 4.7 通过逻辑回归解决多元分类问题
- 4.7.1 数据的准备与分析
- 4.7.2 通过Sklear实现逻辑回归的多元分类
- 4.7.3 正则化参数—C 值的选择
- 4.8 本课内容小结
- 4.9 课后练习
- 第5 课 深度神经网络—找出可能流失的客户
- 5.1 问题定义:咖哥接手的金融项目
- 5.2 神经网络的原理
- 5.2.1 神经网络极简史
- 5.2.2 传统机器学习算法的局限性
- 5.2.3 神经网络的优势
- 5.3 从感知器到单隐层网络
- 5.3.1 感知器是最基本的神经元
- 5.3.2 假设空间要能覆盖特征空间
- 5.3.3 单神经元特征空间的局限性
- 5.3.4 分层:加入一个网络隐层
- 5.4 用Keras 单隐层网络预测客户流失率
- 5.4.1 数据的准备与分析
- 5.4.2 先尝试逻辑回归算法
- 5.4.3 单隐层神经网络的Keras 实现
- 5.4.4 训练单隐层神经网络
- 5.4.5 训练过程的图形化显示
- 5.5 分类数据不平衡问题:只看准确率够用吗
- 5.5.1 混淆矩阵、精确率、召回率和F1 分数
- 5.5.2 使用分类报告和混淆矩阵
- 5.5.3 特征缩放的魔力
- 5.5.4 阈值调整、欠采样和过采样
- 5.6 从单隐层神经网络到深度神经网络
- 5.6.1 梯度下降:正向传播和反向传播
- 5.6.2 深度神经网络中的一些可调超参数
- 5.6.3 梯度下降优化器
- 5.6.4 激活函数:从Sigmoid 到ReLU
- 5.6.5 损失函数的选择
- 5.6.6 评估指标的选择
- 5.7 用Keras 深度神经网络预测客户流失率
- 5.7.1 构建深度神经网络
- 5.7.2 换一换优化器试试
- 5.7.3 神经网络正则化:添加Dropout 层
- 5.8 深度神经网络的调试及性能优化
- 5.8.1 使用回调功能
- 5.8.2 使用TensorBoard
- 5.8.3 神经网络中的过拟合
- 5.8.4 梯度消失和梯度爆炸
- 5.9 本课内容小结
- 5.10 课后练习
- 第6课 卷积神经网络—识别狗狗的图像
- 6.1 问题定义:有趣的狗狗图像识别
- 6.2 卷积网络的结构
- 6.3 卷积层的原理
- 6.3.1 机器通过“模式”进行图像识别
- 6.3.2 平移不变的模式识别
- 6.3.3 用滑动窗口抽取局部特征
- 6.3.4 过滤器和响应通道
- 6.3.5 对特征图进行卷积运算
- 6.3.6 模式层级结构的形成
- 6.3.7 卷积过程中的填充和步幅
- 6.4 池化层的功能
- 6.5 用卷积网络给狗狗图像分类
- 6.5.1 图像数据的读入
- 6.5.2 构建简单的卷积网络
- 6.5.3 训练网络并显示误差和准确率
- 6.6 卷积网络性能优化
- 6.6.1 第一招:更新优化器并设置学习速率
- 6.6.2 第二招:添加Dropout 层
- 6.6.3 “大杀器”:进行数据增强
- 6.7 卷积网络中特征通道的可视化
- 6.8 各种大型卷积网络模型
- 6.8.1 经典的VGGNet
- 6.8.2 采用Inceptio结构的GoogLeNet
- 6.8.3 残差网络ResNet
- 6.9 本课内容小结
- 6.10 课后练习
- 第7 课 循环神经网络—鉴定留言及探索系外行星
- 7.1 问题定义:鉴定评论文本的情感属性
- 7.2 循环神经网络的原理和结构
- 7.2.1 什么是序列数据
- 7.2.2 前馈神经网络处理序列数据的局限性
- 7.2.3 循环神经网络处理序列问题的策略
- 7.2.4 循环神经网络的结构
- 7.3 原始文本如何转化成向量数据
- 7.3.1 文本的向量化:分词
- 7.3.2 通过One-hot 编码分词
- 7.3.3 词嵌入
- 7.4 用SimpleRNN 鉴定评论文本
- 7.4.1 用Tokenizer 给文本分词
- 7.4.2 构建包含词嵌入的SimpleRNN
- 7.4.3 训练网络并查看验证准确率
- 7.5 从SimpleRNN 到LSTM
- 7.5.1 SimpleRNN 的局限性
- 7.5.2 LSTM 网络的记忆传送带
- 7.6 用LSTM 鉴定评论文本
- 7.7 问题定义:太阳系外哪些恒星有行星环绕
- 7.8 用循环神经网络处理时序问题
- 7.8.1 时序数据的导入与处理
- 7.8.2 建模:CNN 和RNN 的组合
- 7.8.3 输出阈值的调整
- 7.8.4 使用函数式API
- 7.9 本课内容小结
- 7.10 课后练习
- 第8 课 经典算法“宝刀未老”
- 8.1 K 最近邻
- 8.2 支持向量机
- 8.3 朴素贝叶斯
- 8.4 决策树
- 8.4.1 熵和特征节点的选择
- 8.4.2 决策树的深度和剪枝
- 8.5 随机森林
- 8.6 如何选择最佳机器学习算法
- 8.7 用网格搜索超参数调优
- 8.8 本课内容小结
- 8.9 课后练习
- 第9 课 集成学习“笑傲江湖”
- 9.1 偏差和方差—机器学习性能优化的风向标
- 9.1.1 目标:降低偏差与方差
- 9.1.2 数据集大小对偏差和方差的影响
- 9.1.3 预测空间的变化带来偏差和方差的变化
- 9.2 Bagging 算法—多个基模型的聚合
- 9.2.1 决策树的聚合
- 9.2.2 从树的聚合到随机森林
- 9.2.3 从随机森林到极端随机森林
- 9.2.4 比较决策树、树的聚合、随机森林、极端随机森林的效率
- 9.3 Boosting 算法—锻炼弱模型的“肌肉”
- 9.3.1 AdaBoost 算法
- 9.3.2 梯度提升算法
- 9.3.3 XGBoost 算法
- 9.3.4 Bagging 算法与Boosting 算法的不同之处
- 9.4 Stacking/Blending 算法—以预测结果作为新特征
- 9.4.1 Stacking 算法
- 9.4.2 Blending 算法
- 9.5 Voting/Averaging 算法—集成基模型的预测结果
- 9.5.1 通过Voting 进行不同算法的集成
- 9.5.2 通过Averaging 集成不同算法的结果
- 9.6 本课内容小结
- 9.7 课后练习
- 第10 课 监督学习之外—其他类型的机器学习
- 10.1 无监督学习—聚类
- 10.1.1 K 均值算法
- 10.1.2 K 值的选取:手肘法
- 10.1.3 用聚类辅助理解营销数据
- 10.2 无监督学习—降维
- 10.2.1 PCA 算法
- 10.2.2 通过PCA 算法进行图像特征采样
- 10.3 半监督学习
- 10.3.1 自我训练
- 10.3.2 合作训练
- 10.3.3 半监督聚类
- 10.4 自监督学习
- 10.4.1 潜隐空间
- 10.4.2 自编码器
- 10.4.3 变分自编码器
- 10.5 生成式学习
- 10.5.1 机器学习的生成式
- 10.5.2 生成式对抗网络
- 10.6 本课内容小结
- 10.7 课后练习
- 第11 课 强化学习实战—咖哥的冰湖挑战
- 11.1 问题定义:帮助智能体完成冰湖挑战
- 11.2 强化学习基础知识
- 11.2.1 延迟满足
- 11.2.2 更复杂的环境
- 11.2.3 强化学习中的元素
- 11.2.4 智能体的视角
- 11.3 强化学习基础算法Q-Learning 详解
- 11.3.1 迷宫游戏的示例
- 11.3.2 强化学习中的局部最优
- 11.3.3 ε -Greedy 策略
- 11.3.4 Q-Learning 算法的伪代码
- 11.4 用Q-Learning 算法来解决冰湖挑战问题
- 11.4.1 环境的初始化
- 11.4.2 Q-Learning 算法的实现
- 11.4.3 Q-Table 的更新过程
- 11.5 从Q-Learning 算法到SARSA算法
- 11.5.1 异策略和同策略
- 11.5.2 SARSA 算法的实现
- 11.6 用SARSA 算法来解决冰湖挑战问题
- 11.7 Deep Q Network 算法:用深度网络实现Q-Learning
- 11.8 本课内容小结
- 11.9 课后练习
- 尾声:如何实现机器学习中的知识迁移及持续性的学习
- 练习答案