第 5 章 机器学习模型

5.1 掌握机器学习算法的三重境界

完整口述机器学习模型原理

这算是基本操作了,考验逻辑思维和表达能力。

手推机器学习算法原理

大家在学习《统计学习方法》或《机器学习》的时候,学完一章,要做到合上书,给你一张白纸,可以把本章算法每一步写的清清楚楚。这里顺便推荐一个我觉得非常不错的机器学习视频教程:shuhuai007大佬的《机器学习-白板推导系列》,大佬用21节课,在白板上一步一步推导算法,讲的非常详细,通俗易懂。

课程地址:

https://space.bilibili.com/97068901/channel/detail?cid=54167

有好心的同学将板书做了整理,非常美观,已更新到第19章:

https://github.com/ws13685555932/machine_learning_derivation

机器学习算法Python实现

这就比较考验代码能力了,虽然现在sklearn有现成的包可以调,还是建议大家将常见算法如LR、感知机、k近邻、贝叶斯、SVM、EM、Adaboost、决策树、随机森林、GBDT、XGBoost、聚类等等都试着用Python实现一下。这里推荐三个不错的资源:

作者用python实现了线性回归、逻辑回归、BP神经网络,SVM、K-Mean、PCA、异常检测等算法。

https://github.com/lawlite19/MachineLearning_Python

作者将统计学习方法第一版每一章的算法用自己的方式实现一遍,这可是被李航老师点赞的项目!

https://github.com/WenDesi/lihang_book_algorithm

普林斯顿博士后 David Bourgin 最近开源的项目:用 NumPy 手写所有主流 ML 模型,看了一下,代码可读性极强。

项目地址:https://github.com/ddbourgin/numpy-ml

文档地址:https://numpy-ml.readthedocs.io/

5.2 100天搞定机器学习系统(连载中)

大家好,100天搞定机器学习前54天是对Avik-Jain开源项目100-Days-Of-ML-Code的翻译+自己的理解 https://github.com/Avik-Jain/100-Days-Of-ML-Code 但是这个项目到54天就鸽掉了,十分可惜。 从第55天开始,我将续写这个栏目。 由于之前的文章太多参考Avik-Jain,我也将不定期对之前的章节进行重置。欢迎star

https://github.com/tjxj/100-Days-Of-ML-Code

100天搞定机器学习|Day1数据预处理

100天搞定机器学习|Day2简单线性回归分析

100天搞定机器学习|Day3多元线性回归

100天搞定机器学习|Day4-6 逻辑回归

100天搞定机器学习|Day7 K-NN

100天搞定机器学习|Day8 逻辑回归的数学原理

100天搞定机器学习|Day9-12 支持向量机

100天搞定机器学习|Day11 实现KNN

100天搞定机器学习|Day13-14 SVM的实现

100天搞定机器学习|Day15 朴素贝叶斯

100天搞定机器学习|Day16 通过内核技巧实现SVM

100天搞定机器学习|Day17-18 神奇的逻辑回归

100天搞定机器学习|Day19-20 加州理工学院公开课:机器学习与数据挖掘

100天搞定机器学习|Day21 Beautiful Soup

100天搞定机器学习|Day22 机器为什么能学习?

100天搞定机器学习|Day23-25 决策树及Python实现

100天搞定机器学习|Day26-29 线性代数的本质

100天搞定机器学习|Day 30-32 微积分的本质

100天搞定机器学习|Day33-34 随机森林

100天搞定机器学习|Day35 深度学习之神经网络的结构

100天搞定机器学习|Day36 深度学习之梯度下降算法

100天搞定机器学习|day37 无公式理解反向传播算法之精髓

100天搞定机器学习|day38 反向传播算法推导

100天搞定机器学习|day39 Tensorflow Keras手写数字识别

100天搞定机器学习|day40-42 Tensorflow Keras识别猫狗

100天搞定机器学习|day43 几张GIF理解K-均值聚类原理

100天搞定机器学习|day44 k均值聚类数学推导与python实现

100天搞定机器学习|day45-53 《Python数据科学手册》

100天搞定机器学习|day54 聚类系列:层次聚类原理及案例

100天搞定机器学习|Day55 最大熵模型

100天搞定机器学习|Day56 随机森林工作原理及调参实战(信用卡欺诈预测)

100天搞定机器学习|Day57 Adaboost知识手册(理论篇)

100天搞定机器学习|Day58 多分类机器学习中数据不平衡的处理(NSL-KDD 数据集+LightGBM)

100天搞定机器学习|Day59 硬核拆解GBDT

100天搞定机器学习|Day60 遇事不决,XGBoost

100天搞定机器学习|Day61 手算+可视化,彻底理解XGBoost

100天搞定机器学习|Day62 随机森林调参实战

​100天搞定机器学习|Day63 彻底掌握 LightGBM

番外:

100天搞定机器学习:模型训练好了,然后呢?

100天搞定机器学习:写YAML配置文件

5.4 逻辑回归

逻辑回归模型10问10答

5.12 降维

为什么要进行数据降维?

所谓降维,即用一组个数为 d 的向量 Zi 来代表个数为 D 的向量 Xi 所包含的有用信息,其中 d<D,通俗来讲,即将高维度下降至低维度;将高维数据下降为低维数据。

通常,我们会发现大部分数据集的维度都会高达成百乃至上千,而经典的 MNIST,其维度都是 64。

但在实际应用中,我们所用到的有用信息却并不需要那么高的维度,而且每增加一维所需的样本个数呈指数级增长,这可能会直接带来极大的「维数灾难」;而数据降维就可以实现:

  • 使得数据集更易使用

  • 确保变量之间彼此独立

  • 降低算法计算运算成本

去除噪音一旦我们能够正确处理这些信息,正确有效地进行降维,这将大大有助于减少计算量,进而提高机器运作效率。而数据降维,也常应用于文本处理、人脸识别、图片识别、自然语言处理等领域。

网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码。这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA、LDA、MDS、LLE、TSNE 等,并附有相关资料、展示效果;非常适合机器学习初学者和刚刚入坑数据挖掘的小伙伴。

基于 Python 的 11 种经典数据降维算法

Word2Vec是如何工作的?它和LDA有什么区别与联系?

一文掌握降维算法三剑客 PCA、t-SNE 和自动编码器

基于 Python 的 11 种经典数据降维算法