机器学习算法之旅

      在理解了我们需要解决的机器学习问题之后,我们可以思考一下我们需要收集什么数据以及我们可以用什么算法。本文我们会过一遍最流行的机器学习算法,大致了解哪些方法可用,很有帮助。

机器学习领域有很多算法,然后每种算法又有很多延伸,所以对于一个特定问题,如何确定一个正确的算法是很困难的。本文中我想给你们两种方法来归纳在现实中会遇到的算法。

学习方式

根据如何处理经验、环境或者任何我们称之为输入的数据,算法分为不同种类。机器学习和人工智能课本通常先考虑算法可以适应的学习方式。

这里只讨论几个主要的学习风格或学习模型,并且有几个基本的例子。这种分类或者组织的方法很好,因为它迫使你去思考输入数据的角色和模型准备的过程,然后选择一个最适合你的问题的算法,从而得到最佳的结果。

  • 监督学习:输入数据被称为训练数据,并且有已知的结果或被标记。比如说一封邮件是否是垃圾邮件,或者说一段时间内的股价。模型做出预测,如果错了就会被修正,这个过程一直持续到对于训练数据它能够达到一定的正确标准。问题例子包括分类和回归问题,算法例子包括逻辑回归和反向神经网络。
  • 无监督学习:输入数据没有被标记,也没有确定的结果。模型对数据的结构和数值进行归纳。问题例子包括Association rule learning和聚类问题,算法例子包括 Apriori 算法和K-均值算法。
  • 半监督学习:输入数据是被标记的和不被标记的数据的混合,有一些预测问题但是模型也必须学习数据的结构和组成。问题例子包括分类和回归问题,算法例子基本上是无监督学习算法的延伸。
  • 增强学习:输入数据可以刺激模型并且使模型做出反应。反馈不仅从监督学习的学习过程中得到,还从环境中的奖励或惩罚中得到。问题例子是机器人控制,算法例子包括Q-learning以及Temporal difference learning。

当整合数据模拟商业决策时,大多数会用到监督学习和无监督学习的方法。当下一个热门话题是半监督学习,比如图像分类问题,这中问题中有一个大的数据库,但是只有一小部分图片做了标记。增强学习多半还是用在机器人控制和其他控制系统的开发上。

算法相似性

算法基本上从功能或者形式上来分类。比如,基于树的算法,神经网络算法。这是一个很有用的分类方式,但并不完美。因为有许多算法可以轻易地被分到两类中去,比如说Learning Vector Quantization就同时是神经网络类的算法和基于实例的方法。正如机器学习算法本身没有完美的模型一样,算法的分类方法也没有完美的。

在这一部分我列出了我认为最直观的方法归类的算法。我并没有穷尽算法或者分类方法,但是我想对于让读者有一个大致了解很有帮助。如果有你了解的我没有列出来,欢迎留言分享。现在我们开始!

Regression

Regression(回归分析)关心的是变量之间的关系。它应用的是统计方法,几个算法的例子包括:

  • Ordinary Least Squares
  • Logistic Regression
  • Stepwise Regression
  • Multivariate Adaptive Regression Splines (MARS)
  • Locally Estimated Scatterplot Smoothing (LOESS)

Instance-based Methods

Instance based learning(基于实例的学习)模拟了一个决策问题,所使用的实例或者例子是对模型非常重要的。这种方法对现有数据建立一个数据库然后把新数据加进去,再用一个相似性测量方法从而在数据库里找出一个最优匹配,进行一个预测。由于这个原因,这种方法也被称为胜者为王方法和基于内存的方法。现在关注的焦点在存储数据的表现形式和相似性测量方法。

  • k-Nearest Neighbour (kNN)
  • Learning Vector Quantization (LVQ)
  • Self-Organizing Map (SOM)

Regularization Methods

这是一个对其他方法的延伸(通常是回归方法),这个延伸对越简单的模型越有利,并且更擅长归纳。我在这里列出它是因为它的流行和强大。

  • Ridge Regression
  • Least Absolute Shrinkage and Selection Operator (LASSO)
  • Elastic Net

Decision Tree Learning

Decision tree methods(决策树方法)建立了一个根据数据中实际值决策的模型。决策树用来解决归纳和回归问题。

  • Classification and Regression Tree (CART)
  • Iterative Dichotomiser 3 (ID3)
  • C4.5
  • Chi-squared Automatic Interaction Detection (CHAID)
  • Decision Stump
  • Random Forest
  • Multivariate Adaptive Regression Splines (MARS)
  • Gradient Boosting Machines (GBM)

Bayesian

Bayesian method(贝叶斯方法)是在解决归类和回归问题中应用了贝叶斯定理的方法。

  • Naive Bayes
  • Averaged One-Dependence Estimators (AODE)
  • Bayesian Belief Network (BBN)

Kernel Methods

Kernel Method(核方法)中最有名的是Support Vector Machines(支持向量机)。这种方法把输入数据映射到更高维度上,是的一些归类和回归问题更容易建模。

  • Support Vector Machines (SVM)
  • Radial Basis Function (RBF)
  • Linear Discriminate Analysis (LDA)

Clustering Methods

Clustering(聚类),本身就形容了问题和方法。聚类方法通常是由建模方式分类的。所有的聚类方法都是用统一的数据结构来组织数据,使得每组内有最多的共同点。

  • K-Means
  • Expectation Maximisation (EM)
  •  

Association Rule Learning

Association rule learning(联合规则学习)是用来对数据间提取规律的方法,通过这些规律可以发现巨量多维空间数据之间的联系,而这些重要的联系可以被组织拿来使用。

  • Apriori algorithm
  • Eclat algorithm

Artificial Neural Networks

Artificial Neural Networks(人工神经网络)是从生物神经网络的结构和功能得到启发的。它属于模式匹配一类,经常被用于回归和分类问题,但是它存在上百个算法和变种组成。其中有一些是经典流行的算法(我把深度学习拿出来单独讲):

  • Perceptron
  • Back-Propagation
  • Hopfield Network
  • Self-Organizing Map (SOM)
  • Learning Vector Quantization (LVQ)

Deep Learning

Deep Learning(深度学习)方法是人工神经网络的一种现代的更新。相比传统的神经网络,它有更多更复杂的网络构成,许多方法都是关心半监督学习,这种学习的问题中有很大的数据,但是其中很少是被标记的数据。

  • Restricted Boltzmann Machine (RBM)
  • Deep Belief Networks (DBN)
  • Convolutional Network
  • Stacked Auto-encoders

Dimensionality Reduction

Dimensionality Reduction(维度缩减),像聚类方法一样,追求和利用数据中的统一的结构,但是它用更少的信息来对数据做归纳和形容。这对于对数据进行可视化或者简化数据很有用。

  • Principal Component Analysis (PCA)
  • Partial Least Squares Regression (PLS)
  • Sammon Mapping
  • Multidimensional Scaling (MDS)
  • Projection Pursuit

Ensemble Methods

Ensemble methods(组合方法)由许多小的模型组成,这些模型经过独立训练,做出独立的结论,最后组成一个总的预测。很多研究集中在使用什么模型以及这些模型怎么被组合起来。这是一个非常强大且流行的技术。

  • Boosting
  • BootStrapped Aggregation (Bagging)
  • AdaBoost
  • Stacked Generalization (blending)
  • Gradient Boosting Machines (GBM)
  • Random Forest

ensemble

这是一个用组合方法进行拟合的例子(来自维基),每个消防法用灰色表示,最后合成的最终预测是红色的。

其他资源

这趟机器学习算法之旅意在让你对有什么算法和关联算法的一些工具给你一个总体了解。

下面是一些其他资源, 请不要觉得太多,了解越多算法对你越有好处,但是对某些算法有深层次的了解也会很有用。

  • List of Machine Learning Algorithms: 这是维基上的资源,虽然很全,但我认为分类不是很好。
  • Machine Learning Algorithms Category: 这也是在维基上的资源,比上面的略好一点,用字母排序。
  • CRAN Task View: Machine Learning & Statistical Learning: 机器学习算法的R语言拓展包,看看对于你了解别人都在用什么比较好。
  • Top 10 Algorithms in Data Mining: 这是发表的文章(Published article),现在是一本书(book),包括了最流行的数据挖掘算法。另一个基础的算法列表,这里列出的算法少很多,有助于你深入学习。

转载于:https://www.cnblogs.com/engineerLF/p/5393109.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Handler的使用方法

如何让程序5秒钟更新一下Title.首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示: package com.example.androidhandletest; import java.util.Timer;import java.util.TimerTask; import android.os.Bundle;import andro…

转:[C/C++]2014年7月华为校招机试真题(一)

[C/C]2014年7月华为校招机试真题(一)转载于:https://www.cnblogs.com/kira2will/p/4039521.html

df命令:显示系统上可使用的磁盘空间

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 简介 df命令的英文全称即“Disk Free”,用于显示系统上可使用的磁盘空间。 日常普遍用该命令可以查看硬盘的挂载点,磁盘被占用了多少空间、还剩多少空间等信息。 默认单位为KB&#…

核心动画--基本动画

#pragma mark 动画暂停- (void)pauseAnimation{// 1. 取出当前的动画的时间点,就是要暂停的时间点CFTimeInterval pauseTime [self.myView.layer convertTime:CACurrentMediaTime() fromLayer:nil];// 2. 设置动画的时间偏移量,指定时间偏移量的目的是让…

du命令:显示文件或者目录的大小

以下内容源于网路资源的学习与整理,如有侵权请告知删除。 由于磁盘空间将满,需要整理磁盘时,想知道哪些文件夹的内容过大,以及删除一些无用文件,du命令会非常有用。在用户目录下输入“du --max-depth1 -h”查看哪些文…

windows 下查看进程占用

2019独角兽企业重金招聘Python工程师标准>>> //查找出占用8086端口进程的ID netstat -nao | findstr8086 //本机输出效果为: TCP 0.0.0.0:8086 0.0.0.0:0 LISTENING 804 //很显然,进程ID是804 //找出ID为804的进程名 …

【知乎摘要】女生婚前应该清楚男友哪些方面了才能嫁给他

纽约时报15问 1. 我们要不要孩子?如果要,主要由谁来负责? 2. 我们的家庭赚钱能力及目标是什么?消费观及储蓄观会不会发生冲突? 3. 我们的家庭如何维持?由谁来掌握可能出现的风险? 4. 我们有没有详尽地交换…

利用tftp将内核镜像下载到开发板

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、前言 除了利用fastboot将内核镜像从PC主机下载到开发板的inand中,还可以利用tftp指令将虚拟机linux系统中的镜像下载到开发板的内存中。比如将bootcm设置如下: set boot…

MySQL数据库增删改查

常用的数据类型: int:整数类型,无符号的范围【0,2^32-1】,有符号【-2^31,2^31-1】 float:单精度浮点,4字节64位 double:双精度浮点,8字节64位 char:固定长…

C#多线程案例基础

C#多线程案例基础(转) 在学习多线程之前,我们先来看几个概念: 1,什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源,当然一个程序也可能…

什么是shell?

本文源于网络资源的学习与整理,如有侵权请告知删除。 shell的概念 shell,它的意思是“壳”,如果理解shell在linux中的作用(内核的外壳,既保护了内核,也向用户提供了操作内核的接口)&#xff0c…

chmod的理解

ll file 共有是十位第一位:如果是 - 表示它是文件第一位:如果是d 表示它是目录剩下的333 分别表示 属主u属组g其他用户o所以如下:转载于:https://blog.51cto.com/zlong37/1567472

中国象棋程序的设计与实现(五)--回答CSDN读者的一些问题

最近写了很多文章,同时,也上传了很多免积分的FansUnion原创的优质资源,有兴趣的同学可以看来我的CSDN博客瞧瞧 http://blog.csdn.net/FansUnion。近期,收到了不少读者的评论、反馈、留言。对于其中的一些问题,我想专门…

几种常见的shell:sh、bash、csh、tcsh、ash

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 我们知道,Windows、Mac OS、Android 等操作系统由一家公司开发,所有的核心软件和基础库都由一家公司做决定,容易形成统一的标准,一般不会…

第九周项目6-穷举法之年龄几何

张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。 构建代码: /**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称:temp.…

JavaScript操作大全整理(思维导图七--字符串函数)

7. JavaScript 字符串函数 转载于:https://www.cnblogs.com/yuxia/p/3360824.html

进入shell的两种方法

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 方法一:在图形界面中打开终端 在图形界面下,进入 Shell 的方法是使用 Linux 桌面环境中的终端模拟包,也就是我们常说的终端,这样在图形桌…

外籍主管眼中的阿里巴巴

尝试接受一份新领域的职位有时是值得的,而对雇主来说,任命“非正统人选”从而给团队带来清新气息,也是有好处的。 这是詹姆斯•哈迪(James Hardy)的经验。一位知道他想转行的朋友和他联系,后来他就得到了现在的职位——在线零售商…

Shell脚本运行方法

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 在文本编辑器中编写如下代码并保存为test.sh。 #!/bin/bash echo "Hello World !" 这个文件的扩展名为sh(sh代表shell),但其实扩展名并不…

Perl 中级教程 第5章课后习题

5. 9. 1. 练习1 [5 分钟] 先不要运行程序, 看看你能否判断出这程序的哪部份出了问题?如果你看不出 来, 就可以运行一相程序, 得到些暗示, 来看是否能修改好: my %passenger_1 { name > Ginger, age > 22, occupation > Movie Star, real_age &…