本课程主要围绕书籍《白话大数据与机器学习》,提取了其中的机器学习部分,从数据统计、数据指标理解、数据模型、聚类/分类与机器学习、数据应用,以及扩展讨论这样的角度来层层深入,十分适合小白入门,让尤其是不擅长数学的学习者降低对机器学习算法的恐惧感。另外参考书中,为了调节阅读气氛,帮助大家理解,结合大量案例与漫画,将抽象的数学、算法与应用,与现实生活中的案例和事件一一做了关联。
学习人群定位:小白入门
现有资料:《白话大数据与机器学习》高扬
就业方向:算法工程师、数据挖掘工程师、数据分析师、大数据工程师、软件工程师
本课程需要8周, 每周有3~5门课。课程时间安排如下:
课程 | 时间 |
---|---|
第01-02课 | 周一、周二 |
第03课及之后 | 周四、周五 |
自由学习时间 | 周三、周六 |
本周作业 | 本周任何空余时间 |
提交作业的学习链接 | 周日晚20:00前 |
★ 作业学习链接的形式:博客/Github/其他形式
第01课:课程引导&机器学习介绍
本周作业:
制定自己的学习计划,开通自己的学习博客,注册自己的Github。参考资料:
Chapter8(P87)
第01课:基本概念
- 回归的概念
- 线性回归的基本表达形式
- 拟合(打点计时器计算重力加速度→积分)
- 代码实现并画图
第02课:残差分析
- 对打点计时器所画图形进行残差分析
- 最小二乘法的原理(其他资料:最小二乘法理论、推导、算法)
- 对残差平方和求极值(斜率、截距 的推导及含义)
第03课:过拟合
- 什么是过拟合(拟合的函数完美的匹配训练集数据)
- 出现过拟合的原因(样本少,力求完美)
- 举例说明过拟合的危害(描述复杂,失去泛化能力)
- 过拟合的解决办法(减少特征维度,正则化)
第04课:欠拟合
- 什么是欠拟合(拟合的函数和训练集误差较大)
- 欠拟合的原因(参数过少,拟合方法不对)
- 欠拟合的危害
- 欠拟合的解决办法(增加特征维度来解决)
第05课:曲线拟合转化为线性拟合
本周作业:
用博客或Github整理
- 代码实现线性回归算法(尝试使用对数变换法)
- 代码实现最小二乘法的线性拟合
- 整理过拟合及欠拟合的解决办法,并分别采用1-2种办法代码实现
Chapter9(P105)
第01课:数学基础
第02课:聚类概述和K-Means算法
- 聚类现象:归纳和总结相似事物(P105-106)(其他资料:CS 229 - 无监督学习_3 min)
- K-Means算法:算法步骤和代码实现(P106-109)(其他资料:CS 229 - KMeans算法_12 min)
- 有趣模式:Kmeans算法将数据分组的划分方法(P109-110)
- 孤立点:产生原因和应用(P110)
第03课:层次聚类
- 层次聚类:自底向上的层级模式(P110-113)
- 思路1:分裂的层次聚类方法
- 思路2:凝聚的层次聚类方法
- 聚类的3种度量策略 及 Ward策略的代码实现
第04课:密度聚类
- 密度聚类的应用场景:聚类形状不规则 / 与K-Means聚类对比(P113)
- sklearn中密度分类的算法库 - 例子代码实现(P114-116)
- DBSCAN的参数解释:eps、min_samples(P116)
第05课:聚类评估 - 判断聚类的质量
- 聚类质量评估概述:3个方面(P116-124)
- 1 - 聚类趋势:算法步骤和代码
- 2 - 簇数确定:经验法和肘方法、肘方法的代码实现(其他资料: CS229 - 选取聚类数量_8 min)
- 3 - 测定聚类质量:外在方法(参考类簇标准)和内在方法(轮廓系数)、内在方法code
本周作业:
用博客或Github整理
- K-Means:算法步骤及代码实现
- 凝聚的层次聚类:算法步骤及代码实现(P111例子用Maximum策略)
- 密度聚类:算法步骤和代码实现
Chapter10.1 — 10.4
第01课:数学基础
第02课:朴素贝叶斯
- 基本**:先验概率转化为后验概率,然后根据后验概率的大小进行决策分类
- 贝叶斯公式
- 高斯朴素贝叶斯(一般用于连续型特征进行分类)
- 多项式朴素贝叶斯(一般用于高纬度向量分类)
- 伯努利朴素贝叶斯(一般用于bool类型特征进行分类)
第03课:决策树
- 举个约会的栗子
- 连续性变量找最佳切分点(先排序,尝试所有的切分点,找到信息增益最大的一个)
- 决策树的构造方式
第04课:随机森林
- 集成学习概念
- 个体学习器概念
- boosting、bagging的相关概念
- 结合策略:平均法,投票法,学习法
- 随机森林**
第05课:隐马尔科夫链
- 已知隐藏状态数量,转换概率、可见状态链,求隐含状态链
- 思路:最大释然状态路径(一串序列,概率最大)
- 算法:维特比算法
- 举个例子:输入法中隐藏序列是想要输入的字符,可见序列是已经输入显示的字符
- 已知隐藏状态数量,转换概率、可见状态链,求隐含状态链
- 前向算法
- 已知隐藏状态数量,不知转换概率、有很多可见状态链,求转换概率(最常见)
- 代码实现对输出词汇的预测
本周作业:
用博客或Github整理
- 朴素贝叶斯:算法步骤及代码实现高斯朴素贝叶斯对疾病的预测
- 随机森林:算法步骤及代码实现随机森林对相亲的预测
- 决策树:算法步骤及代码实现决策树对相亲的预测
- 隐马尔科夫链:算法步骤和代码实现隐马尔科夫链对词汇输出的预测
Chapter10.5 — 10.6
第01课:数学基础
第02课:支持向量机SVM
- 由案例 "年龄和好坏" 引入基本概念
- 超平面:一维空间的点 → 二维空间的线 → 三维空间的面
- 过拟合问题
- 不纯度:权衡精确度和不纯度
- 线性可分模型:间隔最大化的分类超平面(P160)
- 线性不可分问题
- 非线性变换映射到高维空间
- 核函数:替代样本内积
- sklearn中的类SVC - 案例的代码实现(P163)
- SVM算法小结
第03课:遗传算法
- 借鉴进化论的随机搜索方法:进化过程
- 遗传算法的关键步骤:基因编码、设计初始群体、适应度计算和产生下一代和迭代计算
- 实例1 - 背包问题
- 穷举法
- 遗传算法的求解过程
- 遗传算法的注意事项(P169)
- 可调整的地方:初始群体、适应度函数、基因重组和迭代结束
- 背包问题采用遗传算法求解的代码实现(P170)
- 实例2 - 极值问题
- 微积分领域的解法
- 遗传算法的求解过程
- 极值问题采用遗传算法求解的代码实现(P177)
- 执行代码时的问题:再播撒不均匀(P180)
- 解决方法:初始种群扩大化 和 每一代遴选增加名额
本周作业:
用博客或Github整理
- SVM:算法步骤及代码实现(P163例子尝试4种核函数)
- 遗传算法:代码实现 - 求函数z = ysin(x) + xcos(y)在x位于[-10,10] 和 y位于[10,10]之间的最大值。(P177)
Chapter11 & 12
第01课:数学基础
- 支持度(P185)
- 置信度(P185)
- 笛卡儿积(P189)
- 提升度(P192)
第02课:关联分析
- 频繁模式:高频率的模式
- Apriori算法:找出数据值中频繁出现的数据集合
- 关联分析相关性分析:提升度
- 稀有模式&负模式
- 支持度远低于设定支持度的模式:稀有模式
- 至少是很少一起出现的频繁模式:负模式
第03课:用户画像
- 画像的方法:打标签
- 结构化标签:表一样
- 丰富度有限
- 信息正确性高
- 非结构化标签:属性无明显区分
- 举例子:广告的运作流程
- 画画看:通过软件列表,使用记录,浏览器访问记录等画像
- 给标签不同的权重
- 结构化标签:表一样
- 利用用户画像
- 割裂型用户画像
- 紧密型用户画像
- 到底“像不像”
- 跟谁比
- 信息反馈
本周作业:
用博客或Github整理
- SQL实现啤酒=>香烟的支持度与置信度计算
- Apriori算法的步骤并用代码实现
Chapter13 & 14
第01课:数学基础
- 余弦相似度(P210&P217)
- 精确度和召回率(P219)
第02课:推荐算法
- 推荐系统的现象和目的:提高转化率
- 推荐思路1 - 朴素贝叶斯分类:例子
- 推荐思路2 - 协同过滤(基于搜索记录)
- 基于邻域的推荐算法(邻居方法)
- 基于用户的协同过滤
- 算法步骤:用户偏好列表 → 设计相似向量 → 选取超过相似阈值的用户
- 基于商品的协同过滤
- 核心思路:通过分析用户行为,计算物品间的相似度
- 计算步骤:计算物品相似度 → 根据物品相似度和用户偏好给用户生成推荐列表
- 例子 - 文娱用品商店销售记录:构造物品的邻接矩阵 → 叠加邻接矩阵 → ...
- 基于用户的协同过滤
- 基于模型的推荐算法("Matrix factorization techniques for recommender systems")
- 基于邻域的推荐算法(邻居方法)
- 优化问题
- 规模和效率:例子 & 解决措施
- 覆盖率和多样性
- 例子
- 解决措施:归一化物品相似度
第03课:文本挖掘
- 文本挖掘的概述:结构化数据挖掘(自然语言分析)和 非结构化数据挖掘
- 文本挖掘的7个主要领域
- 文本分类
- 分词:词典式检索 → 基于统计语言模型(SLM)etc.
- 文本表示(向量化):词频 → TFIDF
- 分类标记:描述分词和分类标签的映射关系
- Rocchio算法:原型向量 & 代码(P222) & 两大假设(缺点)
- 朴素贝叶斯算法:例子的计算步骤 & 代码(P225)
- K近邻算法:算法流程 & 优缺点 & 代码(P226)
- 支持向量机算法:算法思路 & 优缺点 & 代码(P227)
本周作业:
用博客或Github整理
- 基于商品的协同过滤:算法流程,参照例子 - 文娱用品商店销售记录(P212)
- 分类标记:下述算法的算法流程、优缺点和代码: Rocchio算法(代码 - P222)、朴素贝叶斯算法(代码 - P225)、K近邻算法( 代码 - P226)和 支持向量机算法(代码 - P227)
Chapter15
第01课:数学基础
- 卷积(P248)
第02课:人工神经网络
- 起源:大脑、人体神经元 → 由神经元模拟电子信息处理系统
- 人工神经网络
- 训练过程:初始化权重、训练
- 与回归、SVM对比
- 常见的神经网络模型
- 感知机
- BP神经网络
- 结构和原理:两层BP为例,激活函数Logisitic函数
- ☆训练过程:误差计算、反向传播和权值修正
- 例子 - 手写数字识别:BP神经网络的流程 和 代码(P243)
- 卷积神经网络
- 概述:特征提取层、特征映射层
- 例子 - 青苹果图片:CNN的流程
第03课:小节作业
用博客或Github整理
- BP神经网络的算法流程
- CNN的算法流程
第04课:期末考试