初识机器学习算法有哪些?

机器学习无疑是现在数据分析领域的一个重要内容,凡事从事IT工作领域的人都在平时的工作中或多或少的会用到机器学习的算法。

机器学习有很多算法,不过大的方面可分为两类:一个是学习的方式,一个是算法的类似性。

学习方式:

根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。

算法的主要学习方式和学习模型主要有以下几个:

监督学习:输入数据被称为训练数据,它们有已知的标签或者结果,比如垃圾邮件/非垃圾邮件或者某段时间的股票价格。模型的参数确定需要通过一个训练的过程,在这个过程中模型将会要求做出预测,当预测不符时,则需要做出修改。

无监督学习:输入数据不带标签或者没有一个已知的结果。通过推测输入数据中存在的结构来建立模型。这类问题的例子有关联规则学习和聚类。算法的例子包括Apriori算法和K-means算法。

半监督学习:输入数据由带标记的和不带标记的组成。合适的预测模型虽然已经存在,但是模型在预测的同时还必须能通过发现潜在的结构来组织数据。这类问题包括分类和回归。典型算法包括对一些其他灵活的模型的推广,这些模型都对如何给未标记数据建模做出了一些假设。

强化学习:输入数据作为来自环境的激励提供给模型,且模型必须作出反应。反馈并不像监督学习那样来自于训练的过程,而是作为环境的惩罚或者是奖赏。典型问题有系统和机器人控制。算法的例子包括Q-学习和时序差分学习(Temporal Difference Learning)。

算法类似性

根据算法的功能和形式的类似性,我们可以把算法分类,比如说基于树的算法,基于神经网络的算法等等。当然,机器学习的范围非常庞大,有些算法很难明确归类到某一类。而对于有些分类来说,同一分类的算法可以针对不同类型的问题。这里,我们尽量把常用的算法按照最容易理解的方式进行分类。

回归分析

回归是这样一种建模方式,它先确定一个衡量模型预测误差的量,然后通过这个量来反复优化变量之间的关系。回归方法是统计学的主要应用,被归为统计机器学习。这有些让人迷惑,因为我们可以用回归来指代一类问题和一类算法。实际上,回归是一个过程。以下是一些例子:

普通最小二乘法 逻辑回归 逐步回归 多元自适应样条回归(MARS) 局部多项式回归拟合(LOESS)

基于实例的方法

基于实例的学习模型对决策问题进行建模,这些决策基于训练数据中被认为重要的或者模型所必需的实例。这类方法通常会建立一个范例数据库,然后根据某个相似性衡量标准来把新数据和数据库进行比较,从而找到最匹配的项,最后作出预测。因此,基于实例的方法还被叫做“赢者通吃”方法和基于记忆的学习。这种方法的重点在于已有实例的表示以及实例间相似性的衡量标准。

K最近邻算法(kNN) 学习矢量量化(LVQ) 自组织映射(SOM)

正则化方法

这是对另一种方法(通常是回归分析方法)的扩展,它惩罚复杂度高的模型,倾向推广性好的更加简单的模型。我在这里列下了一些正则化的方法,因为他们流行、强大,而且通常只是对其他方法简单的改进。

岭回归 套索算法(LASSO) 弹性网络

决策树学习

决策树方法对决策过程进行建模,决策是基于数据中属性的实际数值。决策在树形结构上分叉直到对特定的某个记录能做出预测。在分类或者回归的问题中我们用数据来训练决策树。

分类与回归树算法(CART) 迭代二叉树3代(ID3) C4.5算法 卡方自动互动检视(CHAID) 单层决策树 随机森林 多元自适应样条回归(MARS) 梯度推进机(GBM)

贝叶斯算法

贝叶斯方法是那些明确地在分类和回归问题中应用贝叶斯定理的算法。

朴素贝叶斯算法 AODE算法 贝叶斯信度网络(BBN)

核函数方法

核函数方法中最为出名的是流行的支持向量机算法,它其实是一系列方法。核函数方法关心的是如何把输入数据映射到一个高维度的矢量空间,在这个空间中,某些分类或者回归问题可以较容易地解决。

支持向量机(SVM) 径向基函数(RBF) 线性判别分析(LDA)

聚类方法

就像回归一样,聚类既表示一类问题,也表示一类方法。聚类方法一般按照建模方式来划分:基于质心的或者层级结构的。所有的方法都是利用数据的内在结构来尽量地把数据归入具有最大共性的一类里。

K均值法 最大期望算法(EM)

关联规则学习

关联规则学习是提取规则的一类算法,这些规则能最好地解释观测到的数据中的变量之间的关系。这些规则能在大型多维数据集中发现重要且在商业上有用的关联,然后进一步被利用。

Apriori算法 Eclat算法

人工神经网络

人工神经网络是受启发于生物神经网络的结构和/或功能的算法。它们是一类常用在回归和分类问题中的模式匹配方法,但其实这个庞大的子类包含了上百种算法和算法的变形,可以解决各种类型的问题。一些经典流行的方法包括(我已经把深度学习从这个类中分出来了):

感知器 反向传播算法 Hopfield神经网络 自适应映射(SOM) 学习矢量量化(LVQ)

深度学习

深度学习方法是利用便宜冗余的计算资源对人工神经网络的现代改进版。这类方法试图建立大得多也复杂得多的神经网络,就如前面说到的,许多方法都是基于大数据集中非常有限的标记数据来解决半监督学习问题。

受限玻尔兹曼机(RBM) 深度信念网(DBN) 卷积神经网络 层叠自动编码器(SAE)

降维方法

如同聚类方法,降维方法试图利用数据中的内在结构来总结或描述数据,所不同的是它以无监督的方式利用更少的信息。这对于可视化高维数据或者为之后的监督学习简化数据都有帮助。

主成分分析(PCA) 偏最小二乘法回归(PLS) 萨蒙映射 多维尺度分析(MDS) 投影寻踪

集成方法

集成方法由多个较弱模型组合而成,这些子模型独立训练,它们的预测结果以某种方式整合起来得出总的预测。很多努力都集中在选择什么类型的学习模型作为子模型,以及用什么方式整合它们的结果。这是一类非常强大的技术,因此也很流行。

推进技术(Boosting) 自展集成(Bagging) 适应性推进(AdaBoost) 层叠泛化策略(Blending) 梯度推进机(GBM) 随机森林

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2015-10-18

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java闲聊

JDK1.8 ArrayList 源码解析

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

1192
来自专栏后端之路

LinkedList源码解读

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

19710
来自专栏开发与安全

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

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

2517
来自专栏项勇

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

1444
来自专栏alexqdjay

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

1K4
来自专栏计算机视觉与深度学习基础

Leetcode 114 Flatten Binary Tree to Linked List

Given a binary tree, flatten it to a linked list in-place. For example, Given...

1948
来自专栏学海无涯

Android开发之奇怪的Fragment

说起Android中的Fragment,在使用的时候稍加注意,就会发现存在以下两种: v4包中的兼容Fragment,android.support.v4.ap...

3165
来自专栏Java Edge

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

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

432
来自专栏Hongten

ArrayList VS Vector(ArrayList和Vector的区别)_面试的时候经常出现

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

AOE关键路径

这个算法来求关键路径,其实就是利用拓扑排序,首先求出,每个节点最晚开始时间,再倒退求每个最早开始的时间。 从而算出活动最早开始的时间和最晚开始的时间,如果这两个...

2527

扫码关注云+社区