├── README.md └── 高扬 - 白话机器学习 - 资料 └── 白话大数据与机器学习_高扬.pdf /README.md: -------------------------------------------------------------------------------- 1 | # 大鱼AI🐟 :《白话机器学习》- MachineLearning - GaoYang 2 | 3 | 4 | ## 1. 课程概述 5 | 本课程主要围绕书籍《白话大数据与机器学习》,提取了其中的机器学习部分,从数据统计、数据指标理解、数据模型、聚类/分类与机器学习、数据应用,以及扩展讨论这样的角度来层层深入,十分适合小白入门,让尤其是不擅长数学的学习者降低对机器学习算法的恐惧感。另外参考书中,为了调节阅读气氛,帮助大家理解,结合大量案例与漫画,将抽象的数学、算法与应用,与现实生活中的案例和事件一一做了关联。 6 | 7 |   **学习人群定位**:小白入门
8 |   **现有资料**:《白话大数据与机器学习》高扬
9 |   **就业方向**:算法工程师、数据挖掘工程师、数据分析师、大数据工程师、软件工程师 10 | 11 | ## 2. 整体安排 12 | ### 2.1 学习时间安排 13 | 本课程需要8周, 每周有3~5门课。课程时间安排如下: 14 | 15 | |课程|时间| 16 | |---|---| 17 | |第01-02课|周一、周二| 18 | |第03课及之后|周四、周五| 19 | |自由学习时间|周三、周六| 20 | |本周作业|本周任何空余时间| 21 | |提交作业的学习链接|周日晚20:00前| 22 | 23 | ★ 作业学习链接的形式:博客/Github/其他形式 24 | 25 | ### 2.2 学习大纲安排 26 | #### Week1:开学和绪论 27 | **第01课:课程引导&机器学习介绍** 28 | - 课程引导 - 学员手册 29 | - 机器学习介绍:斯坦福CS229 30 | - [什么是机器学习?](https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1049050791&courseId=1004570029) 31 | - [欢迎参加机器学习](https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1049052745&courseId=1004570029) 32 | 33 | > **本周作业:** 34 | > 35 | > 制定自己的学习计划,开通自己的学习博客,注册自己的Github。参考资料: 36 | > 37 | > [如何申请CSDN博客?](https://blog.csdn.net/sxhelijian/article/details/7752987) 38 | > 39 | > [最新GitHub账号注册(详细图解)](https://blog.csdn.net/qq_41782425/article/details/85179912) 40 | > 41 | > [12分钟教你如何使用Markdown](https://www.bilibili.com/video/av8819726?from=search&seid=6223599217224903501) 42 | > 43 | > [LaTeX公式编辑](https://uploader.shimo.im/f/QYs3JhlxaS0W2K3e.pdf) 44 | 45 | #### Week2:回归 46 | > Chapter8(P87) 47 | 48 | **第01课:基本概念** 49 | - 回归的概念 50 | - 线性回归的基本表达形式 51 | - 拟合(打点计时器计算重力加速度→积分) 52 | - 代码实现并画图 53 | 54 | 其他资料:[CS 229 - 特征和多项式回归_8 min](https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1050509889&courseId=1004570029) 55 | 56 | **第02课:残差分析** 57 | - 对打点计时器所画图形进行残差分析 58 | - 最小二乘法的原理(其他资料:[最小二乘法理论、推导、算法](https://blog.csdn.net/lql0716/article/details/70165695)) 59 | - 对残差平方和求极值(斜率、截距 的推导及含义) 60 | 61 | **第03课:过拟合** 62 | - 什么是过拟合(拟合的函数完美的匹配训练集数据) 63 | - 出现过拟合的原因(样本少,力求完美) 64 | - 举例说明过拟合的危害(描述复杂,失去泛化能力) 65 | - 过拟合的解决办法(减少特征维度,正则化) 66 | 67 | 其他资料:[CS 229 - 过拟合问题_10 min](https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1051270933&courseId=1004570029) 68 | 69 | **第04课:欠拟合** 70 | - 什么是欠拟合(拟合的函数和训练集误差较大) 71 | - 欠拟合的原因(参数过少,拟合方法不对) 72 | - 欠拟合的危害 73 | - 欠拟合的解决办法(增加特征维度来解决) 74 | 75 | **第05课:曲线拟合转化为线性拟合** 76 | - 当数据之间不是线性关系时,转换为线性关系 77 | - 转换的方式([对数变换](https://baike.baidu.com/item/%E5%AF%B9%E6%95%B0%E5%8F%98%E6%8D%A2/5133459?fr=aladdin)[法](https://baike.baidu.com/item/%E5%AF%B9%E6%95%B0%E5%8F%98%E6%8D%A2/5133459?fr=aladdin),广义最小二乘法) 78 | - 代码实现(世界人口状况的预测) 79 | 80 | > **本周作业:** 81 | > 82 | >用博客或Github整理 83 | >- 代码实现线性回归算法(尝试使用对数变换法) 84 | >- 代码实现最小二乘法的线性拟合 85 | >- 整理过拟合及欠拟合的解决办法,并分别采用1-2种办法代码实现 86 | 87 | ### Week3:聚类 88 | >Chapter9(P105) 89 | 90 | **第01课:数学基础** 91 | - 概率分布:平均值(P29)、期望(加权均值P32)、标准差(P30)和方差-标准差的平方 92 | - 距离:欧式距离(P37)、曼哈顿距离(P39)、[余弦相似度](https://www.cnblogs.com/bymo/p/8489037.html) 93 | - 机器学习的[归一化和标准化](https://blog.csdn.net/pipisorry/article/details/52247379)(P116) 94 | 95 | **第02课:聚类概述和K-Means算法** 96 | - 聚类现象:归纳和总结相似事物(P105-106)(其他资料:[CS 229 - 无监督学习_3 min](https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1052194132&courseId=1004570029)) 97 | - K-Means算法:算法步骤和代码实现(P106-109)(其他资料:[CS 229 - KMeans算法_12 min](https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1052194133&courseId=1004570029)) 98 | - 有趣模式:Kmeans算法将数据分组的划分方法(P109-110) 99 | - 孤立点:产生原因和应用(P110) 100 | 101 | **第03课:层次聚类** 102 | - 层次聚类:自底向上的层级模式(P110-113) 103 | - 思路1:分裂的层次聚类方法 104 | - 思路2:凝聚的层次聚类方法 105 | - 聚类的3种度量策略 及 Ward策略的代码实现 106 | 107 | **第04课:密度聚类** 108 | * 密度聚类的应用场景:聚类形状不规则 / 与K-Means聚类对比(P113) 109 | * sklearn中密度分类的算法库 - 例子代码实现(P114-116) 110 | * DBSCAN的参数解释:eps、min_samples(P116) 111 | 112 | **第05课:聚类评估 - 判断聚类的质量** 113 | * 聚类质量评估概述:3个方面(P116-124) 114 | * 1 - 聚类趋势:算法步骤和代码 115 | * 2 - 簇数确定:经验法和肘方法、肘方法的代码实现(其他资料: [CS229 - 选取聚类数量_8 min](https://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1052192165&courseId=1004570029)) 116 | * 3 - 测定聚类质量:外在方法(参考类簇标准)和内在方法(轮廓系数)、内在方法code 117 | 118 | > **本周作业:** 119 | > 120 | >用博客或Github整理 121 | >* K-Means:算法步骤及代码实现 122 | >* 凝聚的层次聚类:算法步骤及代码实现(P111例子用Maximum策略) 123 | >* 密度聚类:算法步骤和代码实现 124 | 125 | ### Week4:分类(一) 126 | >Chapter10.1 — 10.4 127 | 128 | **第01课:数学基础** 129 | * [概率密度和后验概率](https://blog.csdn.net/fjssharpsword/article/details/72356277) 130 | * 高斯分布(P45) 131 | * 伯努利分布(P52) 132 | * 信息熵(P70)、[信息增益、基尼指数](https://www.cnblogs.com/muzixi/p/6566803.html) 133 | 134 | **第02课:朴素贝叶斯** 135 | * 基本思想:先验概率转化为后验概率,然后根据后验概率的大小进行决策分类 136 | * 贝叶斯公式 137 | * 高斯朴素贝叶斯(一般用于连续型特征进行分类) 138 | * 多项式朴素贝叶斯(一般用于高纬度向量分类) 139 | * 伯努利朴素贝叶斯(一般用于bool类型特征进行分类) 140 | 141 | **第03课:决策树** 142 | * 举个约会的栗子 143 | * 连续性变量找最佳切分点(先排序,尝试所有的切分点,找到信息增益最大的一个) 144 | * 决策树的构造方式 145 | 146 | **第04课:随机森林** 147 | * 集成学习概念 148 | * 个体学习器概念 149 | * boosting、bagging的相关概念 150 | * 结合策略:平均法,投票法,学习法 151 | * 随机森林思想 152 | 153 | **第05课:隐马尔科夫链** 154 | * 已知隐藏状态数量,转换概率、可见状态链,求隐含状态链 155 | * 思路:最大释然状态路径(一串序列,概率最大) 156 | * 算法:维特比算法 157 | * 举个例子:输入法中隐藏序列是想要输入的字符,可见序列是已经输入显示的字符 158 | * 已知隐藏状态数量,转换概率、可见状态链,求隐含状态链 159 | * 前向算法 160 | * 已知隐藏状态数量,不知转换概率、有很多可见状态链,求转换概率(最常见) 161 | * 代码实现对输出词汇的预测 162 | 163 | >**本周作业:** 164 | > 165 | >用博客或Github整理 166 | >* 朴素贝叶斯:算法步骤及代码实现高斯朴素贝叶斯对疾病的预测 167 | >* 随机森林:算法步骤及代码实现随机森林对相亲的预测 168 | >* 决策树:算法步骤及代码实现决策树对相亲的预测 169 | >* 隐马尔科夫链:算法步骤和代码实现隐马尔科夫链对词汇输出的预测 170 | 171 | ### Week5:分类(二) 172 | >Chapter10.5 — 10.6 173 | 174 | **第01课:数学基础** 175 | * 点到直线的距离公式(P159) 176 | * 高斯分布(P45) 177 | * 多元函数求偏导([求偏导1](https://www.bilibili.com/video/av23439412?from=search&seid=2949593306198848234),[求偏导2](https://www.bilibili.com/video/av23448626?from=search&seid=2949593306198848234)) 178 | 179 | **第02课:支持向量机SVM** 180 | * 由案例 "年龄和好坏" 引入基本概念 181 | * 超平面:一维空间的点 → 二维空间的线 → 三维空间的面 182 | * 过拟合问题 183 | * 不纯度:权衡精确度和不纯度 184 | * 线性可分模型:间隔最大化的分类超平面(P160) 185 | * 线性不可分问题 186 | * 非线性变换映射到高维空间 187 | * 核函数:替代样本内积 188 | * sklearn中的类SVC - 案例的代码实现(P163) 189 | * SVM算法小结 190 | 191 | **第03课:遗传算法** 192 | * 借鉴进化论的随机搜索方法:进化过程 193 | * 遗传算法的关键步骤:基因编码、设计初始群体、适应度计算和产生下一代和迭代计算 194 | * 实例1 - 背包问题 195 | * 穷举法 196 | * 遗传算法的求解过程 197 | * 遗传算法的注意事项(P169) 198 | * 可调整的地方:初始群体、适应度函数、基因重组和迭代结束 199 | * 背包问题采用遗传算法求解的代码实现(P170) 200 | * 实例2 - 极值问题 201 | * 微积分领域的解法 202 | * 遗传算法的求解过程 203 | * 极值问题采用遗传算法求解的代码实现(P177) 204 | * 执行代码时的问题:再播撒不均匀(P180) 205 | * 解决方法:初始种群扩大化 和 每一代遴选增加名额 206 | 207 | >**本周作业:** 208 | > 209 | >用博客或Github整理 210 | >* SVM:算法步骤及代码实现(P163例子尝试4种核函数) 211 | >* 遗传算法:代码实现 - 求函数z = ysin(x) + xcos(y)在x位于[-10,10] 和 y位于[10,10]之间的最大值。(P177) 212 | 213 | ### Week6:关联分析+用户画像 214 | >Chapter11 & 12 215 | 216 | **第01课:数学基础** 217 | * 支持度(P185) 218 | * 置信度(P185) 219 | * 笛卡儿积(P189) 220 | * 提升度(P192) 221 | 222 | **第02课:关联分析** 223 | * 频繁模式:高频率的模式 224 | * Apriori算法:找出数据值中频繁出现的数据集合 225 | * 关联分析相关性分析:提升度 226 | * 稀有模式&负模式 227 | * 支持度远低于设定支持度的模式:稀有模式 228 | * 至少是很少一起出现的频繁模式:负模式 229 | 230 | **第03课:用户画像** 231 | * 画像的方法:打标签 232 | * 结构化标签:表一样 233 | * 丰富度有限 234 | * 信息正确性高 235 | * 非结构化标签:属性无明显区分 236 | * 举例子:广告的运作流程 237 | * 画画看:通过软件列表,使用记录,浏览器访问记录等画像 238 | * 给标签不同的权重 239 | * 利用用户画像 240 | * 割裂型用户画像 241 | * 紧密型用户画像 242 | * 到底“像不像” 243 | * 跟谁比 244 | * 信息反馈 245 | 246 | >**本周作业:** 247 | > 248 | >用博客或Github整理 249 | >* SQL实现啤酒=>香烟的支持度与置信度计算 250 | >* Apriori算法的步骤并用代码实现 251 | 252 | ### Week7:推荐算法&文本挖掘 253 | >Chapter13 & 14 254 | 255 | **第01课:数学基础** 256 | * 余弦相似度(P210&P217) 257 | * 精确度和召回率(P219) 258 | 259 | **第02课:推荐算法** 260 | * 推荐系统的现象和目的:提高转化率 261 | * 推荐思路1 - 朴素贝叶斯分类:例子 262 | * 推荐思路2 - 协同过滤(基于搜索记录) 263 | * 基于邻域的推荐算法(邻居方法) 264 | * 基于用户的协同过滤 265 | * 算法步骤:用户偏好列表 → 设计相似向量 → 选取超过相似阈值的用户 266 | * 基于商品的协同过滤 267 | * 核心思路:通过分析用户行为,计算物品间的相似度 268 | * 计算步骤:计算物品相似度 → 根据物品相似度和用户偏好给用户生成推荐列表 269 | * 例子 - 文娱用品商店销售记录:构造物品的邻接矩阵 → 叠加邻接矩阵 → ... 270 | * 基于模型的推荐算法("Matrix factorization techniques for recommender systems") 271 | * 优化问题 272 | * 规模和效率:例子 & 解决措施 273 | * 覆盖率和多样性 274 | * 例子 275 | * 解决措施:归一化物品相似度 276 | 277 | **第03课:文本挖掘** 278 | * 文本挖掘的概述:结构化数据挖掘(自然语言分析)和 非结构化数据挖掘 279 | * 文本挖掘的7个主要领域 280 | * 文本分类 281 | * 分词:词典式检索 → 基于统计语言模型(SLM)etc. 282 | * 文本表示(向量化):词频 → TFIDF 283 | * 分类标记:描述分词和分类标签的映射关系 284 | * Rocchio算法:原型向量 & 代码(P222) & 两大假设(缺点) 285 | * 朴素贝叶斯算法:例子的计算步骤 & 代码(P225) 286 | * K近邻算法:算法流程 & 优缺点 & 代码(P226) 287 | * 支持向量机算法:算法思路 & 优缺点 & 代码(P227) 288 | 289 | >**本周作业:** 290 | > 291 | >用博客或Github整理 292 | >* 基于商品的协同过滤:算法流程,参照例子 - 文娱用品商店销售记录(P212) 293 | >* 分类标记:下述算法的算法流程、优缺点和代码: Rocchio算法(代码 - P222)、朴素贝叶斯算法(代码 - P225)、K近邻算法( 代码 - P226)和 支持向量机算法(代码 - P227) 294 | 295 | ### Week8:人工神经网络 296 | >Chapter15 297 | 298 | **第01课:数学基础** 299 | * 卷积(P248) 300 | 301 | **第02课:人工神经网络** 302 | * 起源:大脑、人体神经元 → 由神经元模拟电子信息处理系统 303 | * 人工神经网络 304 | * 训练过程:初始化权重、训练 305 | * 与回归、SVM对比 306 | * 常见的神经网络模型 307 | * 感知机 308 | * BP神经网络 309 | * 结构和原理:两层BP为例,激活函数Logisitic函数 310 | * ☆训练过程:误差计算、反向传播和权值修正 311 | * 例子 - 手写数字识别:BP神经网络的流程 和 代码(P243) 312 | * 卷积神经网络 313 | * 概述:特征提取层、特征映射层 314 | * 例子 - 青苹果图片:CNN的流程 315 | 316 | >**第03课:小节作业** 317 | > 318 | >用博客或Github整理 319 | >* BP神经网络的算法流程 320 | >* CNN的算法流程 321 | 322 | **第04课:期末考试** -------------------------------------------------------------------------------- /高扬 - 白话机器学习 - 资料/白话大数据与机器学习_高扬.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dafish-ai/MachineLearning-GaoYang/74b9c7f35c036429d3f6739c6511dcebac165cb5/高扬 - 白话机器学习 - 资料/白话大数据与机器学习_高扬.pdf --------------------------------------------------------------------------------