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

机器学习无疑是现在数据分析领域的一个重要内容,凡事从事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)
随机森林
 

这篇博客的内容基本没见过,mark 一下以后可以学习的更多相关文章

  1. 鸿蒙内核源码分析(静态站点篇) | 五一哪也没去就干了这事 | 百篇博客分析OpenHarmony源码 | v52.02

    百篇博客系列篇.本篇为: v52.xx 鸿蒙内核源码分析(静态站点篇) | 五一哪也没去就干了这事 | 51.c.h.o 前因后果相关篇为: v08.xx 鸿蒙内核源码分析(总目录) | 百万汉字注解 ...

  2. 第一篇博客:Hello World

    2016年10月10日,双十,好日子,决定开始写第一篇博客,标题想了会,就叫Hello World 吧,哈哈^_^. 首先感谢博客园的管理们能批准我的申请,记得在14年的时候申请过一次,竟然没申请通过 ...

  3. 通通的最后一篇博客(附自制html5平面射击小游戏一枚)

    这是我最后一篇博客了,由于本人的人生规划吧,以后应该也写不出什么好的技术文章了,到现在在博客园写了2年, 今天一看,我也有了120个粉丝,好几万的浏览量,感谢大家的支持啊~~ 半年没有写博客了,由于半 ...

  4. 小白神器 - 一篇博客学会HTML

    小白神器 - 一篇博客学会HTML 一. 简介 1. HTML 定义 htyper text markup language  即超文本标记语言. 超文本: 就是指页面内可以包含图片.链接,甚至音乐. ...

  5. [书籍]值得纪念的第100篇博客,推荐一些看过的UI书籍

    1. 前言 来到博客园11年,这两年闲下来了才有时间写写博客,不知不觉终于写到第100篇博客了.回顾过去发表的博客,居然大部分都与UI相关.明明我本来从事的是Oracle的相关开发,明明我当初的目标是 ...

  6. 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 百篇博客分析OpenHarmony源码 | v64.01

    百篇博客系列篇.本篇为: v64.xx 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么 ...

  7. 鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 百篇博客分析OpenHarmony源码 | v63.01

    百篇博客系列篇.本篇为: v63.xx 鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...

  8. 鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 百篇博客分析OpenHarmony源码 | v62.01

    百篇博客系列篇.本篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 51.c.h.o 本篇开始说文件系统,它是内核五大模块之一,甚至有Linux的设计哲学是" ...

  9. 鸿蒙内核源码分析(忍者ninja篇) | 都忍者了能不快吗 | 百篇博客分析OpenHarmony源码 | v61.02

    百篇博客系列篇.本篇为: v61.xx 鸿蒙内核源码分析(忍者ninja篇) | 都忍者了能不快吗 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ...

随机推荐

  1. POJ 1477

    #include <iostream> #define MAXN 100 using namespace std; int _[MAXN]; int main() { //freopen( ...

  2. CString,string,char*之间的转换(转)

    这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差.string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的:char*是从学习C语 ...

  3. 内存就是RAM?

    内存不全是RAM,让我们看看当今的Intel计算机是如何连接各个组件的吧.下图展示了主板上的主要组件: 现代主板的示意图,北桥和南桥构成了芯片组. 当你看图时,请牢记一个至关重要的事实:CPU一点也不 ...

  4. 如何在solution中添加一个test case

    在solution Explorer中右键点击需要添加的folder,选择Add-New Item.也可以选择使用相应Unit Test之类的.Generic Test一般用于创建manual cas ...

  5. QListWidget特别简单,但有两种添加item的方式

    虽然特别简单,但是对于小白来说,还是有必要过一下脑子和眼睛,当然还得过手(江湖传言:眼过千变,不如手过一遍),所以记录在此: #include "tablewidgetxxx.h" ...

  6. iOS 安装使用cocoapods

    一.什么是CocoaPods 1.为什么需要CocoaPods 在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson.AFNetworking.Reachability等等.使用这些库 ...

  7. 291. Word Pattern II

    题目: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full ...

  8. 开启MySQL慢查询日志

    1.修改my.cnf或my.ini 1).linux----------------------------------- /etc/my.cnf  文件 [mysqld] long_query_ti ...

  9. js获取项目根路径

    //js获取项目根路径,如: http://localhost:8083/uimcardprj function getRootPath(){ //获取当前网址,如: http://localhost ...

  10. MongoDB安装Windows服务

    由于官方下载较慢.这里提供一个个人百度共享网盘地址: http://pan.baidu.com/s/1mhHW0nI mongodb-win32-x86_64-3.2.3 使用以下命令将MongoDB ...