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像素的图片中识别衣服类型
机器学习图谱
学习前提
安装python
安装依赖。运行下面的命令,可以安装本项目需要的所有依赖:
pip install -r requirements.txt
本地启动Jupyter或者远程启动Jupyter
数据集
本项目使用的数据集可以在如下链接中找到:
https://github.com/trekhleb/homemade-machine-learning/tree/master/data
- EOF -
更多优秀开源项目(点击下方图片可跳转)
如果觉得本文介绍的开源项目不错,欢迎转发推荐给更多人。
分享、点赞和在看
支持我们分享更多优秀开源项目,谢谢!