Skip to content

主要是高扬《白话机器学习》的相关内容,作业以及推荐资料汇总

Notifications You must be signed in to change notification settings

dafish-ai/MachineLearning-GaoYang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

大鱼AI🐟 :《白话机器学习》- MachineLearning - GaoYang

1. 课程概述

本课程主要围绕书籍《白话大数据与机器学习》,提取了其中的机器学习部分,从数据统计、数据指标理解、数据模型、聚类/分类与机器学习、数据应用,以及扩展讨论这样的角度来层层深入,十分适合小白入门,让尤其是不擅长数学的学习者降低对机器学习算法的恐惧感。另外参考书中,为了调节阅读气氛,帮助大家理解,结合大量案例与漫画,将抽象的数学、算法与应用,与现实生活中的案例和事件一一做了关联。

  学习人群定位:小白入门
  现有资料:《白话大数据与机器学习》高扬
  就业方向:算法工程师、数据挖掘工程师、数据分析师、大数据工程师、软件工程师

2. 整体安排

2.1 学习时间安排

本课程需要8周, 每周有3~5门课。课程时间安排如下:

课程 时间
第01-02课 周一、周二
第03课及之后 周四、周五
自由学习时间 周三、周六
本周作业 本周任何空余时间
提交作业的学习链接 周日晚20:00前

★ 作业学习链接的形式:博客/Github/其他形式

2.2 学习大纲安排

Week1:开学和绪论

第01课:课程引导&机器学习介绍

本周作业:

制定自己的学习计划,开通自己的学习博客,注册自己的Github。参考资料:

如何申请CSDN博客?

最新GitHub账号注册(详细图解)

12分钟教你如何使用Markdown

LaTeX公式编辑

Week2:回归

Chapter8(P87)

第01课:基本概念

  • 回归的概念
  • 线性回归的基本表达形式
  • 拟合(打点计时器计算重力加速度→积分)
  • 代码实现并画图

其他资料:CS 229 - 特征和多项式回归_8 min

第02课:残差分析

  • 对打点计时器所画图形进行残差分析
  • 最小二乘法的原理(其他资料:最小二乘法理论、推导、算法
  • 对残差平方和求极值(斜率、截距 的推导及含义)

第03课:过拟合

  • 什么是过拟合(拟合的函数完美的匹配训练集数据)
  • 出现过拟合的原因(样本少,力求完美)
  • 举例说明过拟合的危害(描述复杂,失去泛化能力)
  • 过拟合的解决办法(减少特征维度,正则化)

其他资料:CS 229 - 过拟合问题_10 min

第04课:欠拟合

  • 什么是欠拟合(拟合的函数和训练集误差较大)
  • 欠拟合的原因(参数过少,拟合方法不对)
  • 欠拟合的危害
  • 欠拟合的解决办法(增加特征维度来解决)

第05课:曲线拟合转化为线性拟合

  • 当数据之间不是线性关系时,转换为线性关系
  • 转换的方式(对数变换,广义最小二乘法)
  • 代码实现(世界人口状况的预测)

本周作业:

用博客或Github整理

  • 代码实现线性回归算法(尝试使用对数变换法)
  • 代码实现最小二乘法的线性拟合
  • 整理过拟合及欠拟合的解决办法,并分别采用1-2种办法代码实现

Week3:聚类

Chapter9(P105)

第01课:数学基础

  • 概率分布:平均值(P29)、期望(加权均值P32)、标准差(P30)和方差-标准差的平方
  • 距离:欧式距离(P37)、曼哈顿距离(P39)、余弦相似度
  • 机器学习的归一化和标准化(P116)

第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策略)
  • 密度聚类:算法步骤和代码实现

Week4:分类(一)

Chapter10.1 — 10.4

第01课:数学基础

第02课:朴素贝叶斯

  • 基本思想:先验概率转化为后验概率,然后根据后验概率的大小进行决策分类
  • 贝叶斯公式
  • 高斯朴素贝叶斯(一般用于连续型特征进行分类)
  • 多项式朴素贝叶斯(一般用于高纬度向量分类)
  • 伯努利朴素贝叶斯(一般用于bool类型特征进行分类)

第03课:决策树

  • 举个约会的栗子
  • 连续性变量找最佳切分点(先排序,尝试所有的切分点,找到信息增益最大的一个)
  • 决策树的构造方式

第04课:随机森林

  • 集成学习概念
  • 个体学习器概念
  • boosting、bagging的相关概念
  • 结合策略:平均法,投票法,学习法
  • 随机森林思想

第05课:隐马尔科夫链

  • 已知隐藏状态数量,转换概率、可见状态链,求隐含状态链
    • 思路:最大释然状态路径(一串序列,概率最大)
    • 算法:维特比算法
    • 举个例子:输入法中隐藏序列是想要输入的字符,可见序列是已经输入显示的字符
  • 已知隐藏状态数量,转换概率、可见状态链,求隐含状态链
    • 前向算法
  • 已知隐藏状态数量,不知转换概率、有很多可见状态链,求转换概率(最常见)
  • 代码实现对输出词汇的预测

本周作业:

用博客或Github整理

  • 朴素贝叶斯:算法步骤及代码实现高斯朴素贝叶斯对疾病的预测
  • 随机森林:算法步骤及代码实现随机森林对相亲的预测
  • 决策树:算法步骤及代码实现决策树对相亲的预测
  • 隐马尔科夫链:算法步骤和代码实现隐马尔科夫链对词汇输出的预测

Week5:分类(二)

Chapter10.5 — 10.6

第01课:数学基础

  • 点到直线的距离公式(P159)
  • 高斯分布(P45)
  • 多元函数求偏导(求偏导1求偏导2

第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)

Week6:关联分析+用户画像

Chapter11 & 12

第01课:数学基础

  • 支持度(P185)
  • 置信度(P185)
  • 笛卡儿积(P189)
  • 提升度(P192)

第02课:关联分析

  • 频繁模式:高频率的模式
  • Apriori算法:找出数据值中频繁出现的数据集合
  • 关联分析相关性分析:提升度
  • 稀有模式&负模式
    • 支持度远低于设定支持度的模式:稀有模式
    • 至少是很少一起出现的频繁模式:负模式

第03课:用户画像

  • 画像的方法:打标签
    • 结构化标签:表一样
      • 丰富度有限
      • 信息正确性高
    • 非结构化标签:属性无明显区分
      • 举例子:广告的运作流程
      • 画画看:通过软件列表,使用记录,浏览器访问记录等画像
      • 给标签不同的权重
  • 利用用户画像
    • 割裂型用户画像
    • 紧密型用户画像
    • 到底“像不像”
      • 跟谁比
      • 信息反馈

本周作业:

用博客或Github整理

  • SQL实现啤酒=>香烟的支持度与置信度计算
  • Apriori算法的步骤并用代码实现

Week7:推荐算法&文本挖掘

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)

Week8:人工神经网络

Chapter15

第01课:数学基础

  • 卷积(P248)

第02课:人工神经网络

  • 起源:大脑、人体神经元 → 由神经元模拟电子信息处理系统
  • 人工神经网络
    • 训练过程:初始化权重、训练
    • 与回归、SVM对比
  • 常见的神经网络模型
    • 感知机
    • BP神经网络
      • 结构和原理:两层BP为例,激活函数Logisitic函数
      • ☆训练过程:误差计算、反向传播和权值修正
      • 例子 - 手写数字识别:BP神经网络的流程 和 代码(P243)
    • 卷积神经网络
      • 概述:特征提取层、特征映射层
      • 例子 - 青苹果图片:CNN的流程

第03课:小节作业

用博客或Github整理

  • BP神经网络的算法流程
  • CNN的算法流程

第04课:期末考试

About

主要是高扬《白话机器学习》的相关内容,作业以及推荐资料汇总

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published