每个机器学习工程师都应该知道的基本算法

机器学习作为一门多领域交叉学科,已经存在很长时间了,但近些年才开始火热起来。本文中列出了你需要知道的机器学习领域的算法,了解这些你就可以解决在机器学习中所遇到的任何问题。但这只是个覆盖大部分基础算法的清单,并不是全部。

回归算法

回归算法对变量之间的关系建模。最初是一种统计技术,它现在已经成为每个机器学习工程师必须掌握的重要工具。

常见的回归算法:

  • 最小二乘回归(Least Squares Regression)
  • 线性回归(Linear Regression)
  • Logistic回归(Logistic Regression)
  • 回归介绍视频:https://www.coursera.org/learn/regression-models/lecture/Kz1eV/ introduction-to-regression

聚类算法

聚类算法可以将数据点分到具有相似属性的组中。他们通过查找数据中的固有结构来将数据划分到不同的组中。一个组中的事物属性的关联比其他组中的关联的更密切。

聚类算法有硬聚类和软聚类两种类型。硬聚类是指数据点明确的完全属于一个组或完全不属于一个组。软聚类是指一个数据点可以不同程度地属于许多不同的组。

常见的聚类算法:

  • K均值(K-means)
  • 层次聚类(Hierarchical Clustering)
  • 聚类介绍视频:https://www.youtube.com/watch?v=ZueoXMgCd1c

降维算法

当特征的数量与数据点的数量要大很多时。降维算法可以帮你将特征的数量减少到目前问题所需要的数量。他们可以删除多余的特征,帮助你获得更好的结果。

降维算法有两种工作方法。第一种方法是通过特征选择,算法选取可用特征的子集。第二种方法是特征提取,将高维空间中的数据压到低维度。

常见的降维算法:

  • 主成分分析(PCA)
  • 低方差滤波(Low Variance Filter)
  • 高相关滤波(High Correlation Filter)
  • 随机森林(Random Forests)
  • 反向特征消除/前向特征构造(Backward Feature Elimination / Forward Feature construction)
  • 更多的内容可以查看:https://www.kdnuggets.com/2015/05/7-methods-data-dimensionality-reduction.html

决策树算法

决策树创建一个根据数据做出决策的模型。在树状结构中制作一个分叉,直到每个数据点都有对应的预测。与其他深度学习的算法不同,它们的结果很容易理解,并且它们很容易在许多不同的数据类型中使用。

常见的决策树算法:

  • 分类和回归树(classification and regression tree)
  • C4.5和C5.0
  • 随机森林(Random Forests)
  • 卡方自动交互检测(CHAID)
  • 推荐教程:https://www.analyticsvidhya.com/blog/2016/04/complete-tutorial-tree-based-modeling-scratch-in-python/

深度学习

机器学习和人工智能的概念是深度学习炒火的。他们是人造神经网络的现代版本,利用廉价的计算来训练更大的神经网络。它们证明了它们具有解决一些最难问题的能力。如AlphaGo。

常见深度学习:

  • 栈式自编码器(Stacked Auto-encoders)
  • 卷积神经网络(CNN)
  • 递归神经网络(RNN)
  • 胶囊网络(Capsule Networks,https://hackernoon.com/what-is-a-capsnet-or-capsule-network-2bfbe48769cc)
  • 推荐教程:https://www.safaribooksonline.com/library/view/deep-learning/97814919 24570/ch04.html

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-11-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

20120918-向量实现《数据结构与算法分析》

#include <iostream> #include <list> #include <string> #include <vector> #include...

1706
来自专栏拭心的安卓进阶之路

Java 集合深入理解(6):AbstractList

今天心情比天蓝,来学学 AbstractList 吧! ? 什么是 AbstractList ? AbstractList 继承自 AbstractCollec...

19110
来自专栏Phoenix的Android之旅

Java 集合 Vector

List有三种实现,ArrayList, LinkedList, Vector, 它们的区别在于, ArrayList是非线程安全的, Vector则是线程安全...

642
来自专栏后端之路

LinkedList源码解读

List中除了ArrayList我们最常用的就是LinkedList了。 LInkedList与ArrayList的最大区别在于元素的插入效率和随机访问效率 ...

19010
来自专栏拭心的安卓进阶之路

Java 集合深入理解(12):古老的 Vector

今天刮台风,躲屋里看看 Vector ! 都说 Vector 是线程安全的 ArrayList,今天来根据源码看看是不是这么相...

2437
来自专栏alexqdjay

HashMap 多线程下死循环分析及JDK8修复

1K4
来自专栏开发与安全

算法:AOV网(Activity on Vextex Network)与拓扑排序

在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称之为AOV网(Activity on Vextex ...

2507
来自专栏java闲聊

JDK1.8 ArrayList 源码解析

当运行 ArrayList<Integer> list = new ArrayList<>() ; ,因为它没有指定初始容量,所以它调用的是它的无参构造

1192
来自专栏项勇

笔记68 | 切换fragmengt的replace和add方法笔记

1434
来自专栏Java Edge

AbstractList源码解析1 实现的方法2 两种内部迭代器3 两种内部类3 SubList 源码分析4 RandomAccessSubList 源码:AbstractList 作为 Lis

它实现了 List 的一些位置相关操作(比如 get,set,add,remove),是第一个实现随机访问方法的集合类,但不支持添加和替换

402

扫码关注云+社区