1.5 万 Star!热门机器学习算法的数学原理

开源前哨

共 2111字,需浏览 5分钟

 ·

2020-12-20 06:09

【导语】:本文推荐的 GitHub 项目用 Python 实现流行的机器学习算法,还包括算法实现背后的解析。每个算法都有交互式 Jupyter Notebook 演示,你可以使用它来训练数据和算法配置,并实时在浏览器中查看结果、图表和预测。


简介


Homemade Machine Learning 这个项目的目标,并不是通过使用第三方库一行实现机器学习算法,而是从零开始实现,并且能更好地理解每个算法背后的数学原理。这就是为什么所有的算法实现都被叫做“homemade”,并且这些算法并不打算用于实际生产中。


(前哨君提示由于微信不支持外链,下文中的? 数学、⚙️ 代码 和 ▶️ 演示,需要在项目主页跳转查看。)


本项目地址: 

https://github.com/trekhleb/homemade-machine-learning


监督式学习


在监督式学习中,我们将一组训练数据作为输入,每个训练组中,一组标签或者“正确答案”作为输出。然后,我们训练我们的模型(机器学习算法参数)将输入映射到正确的输出中(正确的预测)。最终的目标是找到一个模型参数,这个模型参数能够做到,即使是一个新的输入例,也能保持持续正确的输入->输出映射(预测)。


回归


在回归问题中,我们做实值预测。最基本的,我们尝试沿着训练给出的例子,画一个线/平面/n维平面。

使用示例:股票价格预测,销售分析,任何数字依赖等。

线性回归


  • ? 数学 | 线性回归 - 理论和延申阅读的链接

  • ⚙️ 代码 | 线性回归- 实现示例

  • ▶️ 演示 | 单变量线性回归 - 通过经济GDP预测国家幸福指数

  • ▶️ 演示| 多元线性回归 - 通过经济GDP和自由度指数来预测国家幸福指数

  • ▶️ 演示| 非线性回归 - 通过带有多项式和正弦特征的线性回归来预测非线性依赖

分类


在分类问题中,我们通过某种特征过滤了输入例。

使用示例:垃圾过滤器,语言探测,寻找相似文档,手写文字识别等。

逻辑回归


  • ? 数学 | 逻辑回归 - 理论和拓展阅读的链接

  • ⚙️ 代码 | 逻辑回归 - 实现示例

  • ▶️ 演示| 逻辑回归(线性边界) - 基于花瓣长度和宽度预测鸢尾花

  • ▶️ 演示 | 逻辑回归(非线性边界) - 基于参数1和参数2预测微型芯片的有效性

  • ▶️ 演示 | 多元逻辑回归| MNIST - 从28x28像素的图片中识别手写数字

  • ▶️ 演示 | 多元逻辑回归| 流行的MNIST - 从28x28像素的图片中识别衣服类型


非监督式学习


非监督式学习是机器学习的一个分支,学习使用的测试数据没有被标记,分类或归纳。非监督式学习没有反馈,而是学习识别数据中的共性,之后的具体反应基于每个数据段中存在或不存在的共性。

聚类


在聚类问题中,我们通过未知的特点过滤训练示例。算法本身决定什么样的特性用于过滤。

使用举例:市场分割,社会网络分析,组织计算集群,天文数据处理,图像压缩等。

? K-means 算法
? 数学 | K-means 算法 - 理论和拓展阅读的链接
⚙️ 代码 | K-means 算法 - 实现示例
▶️ 演示| K-means 算法- 基于花瓣长度和宽度预测鸢尾花

异常探测


异常探测(也叫离群探测)是稀有物品、事件或者观察的鉴别,主要通过比对与主数据的显著不同来提高怀疑特性。

使用示例:入侵检测,欺诈检测,系统健康监控,还有从数据集中删除异常数据等。

? 使用高斯分布进行异常探测
? 数学 | 使用高斯分布进行异常探测 - 理论和拓展阅读的链接
⚙️ 代码| 使用高斯分布进行异常探测- 实现用例
▶️ 演示 | 异常探测 - 找到服务器操作中的异常,比如潜伏期,临界值

神经网络


神经网络不是一个算法,而是一个机器学习的算法框架,主要用来处理复杂的数据输入。

使用示例:通常是所有其他算法的替代品,例如图像识别,声音识别,图像处理(分析具体特征),语言翻译等。

多层认知 (MLP)


? 数学 | 多层认知 - 理论和拓展阅读的链接
⚙️ 代码| 多层认知- 实现用例
▶️ 演示 | 多层认知 | MNIST - 从像素为28x28的图片中识别手写笔迹
▶️ 演示 | 多层认知| 流行的MNIST - 从28x28像素的图片中识别衣服类型

机器学习图谱


学习前提


  1. 安装python

  2. 安装依赖。运行下面的命令,可以安装本项目需要的所有依赖:

pip install -r requirements.txt
  1. 本地启动Jupyter或者远程启动Jupyter

数据集


本项目使用的数据集可以在如下链接中找到:

https://github.com/trekhleb/homemade-machine-learning/tree/master/data



- EOF - 


更多优秀开源项目(点击下方图片可跳转)





如果觉得本文介绍的开源项目不错,欢迎转发推荐给更多人。



分享、点赞和在看

支持我们分享更多优秀开源项目,谢谢!

浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报