浅谈机器学习需要的了解的十大算法

毫无疑问,近些年机器学习和人工智能领域受到了越来越多的关注。随着大数据成为当下工业界最火爆的技术趋势,机器学习也借助大数据在预测和推荐方面取得了惊人的成绩。比较有名的机器学习案例包括Netflix根据用户历史浏览行为给用户推荐电影,亚马逊基于用户的历史购买行为来推荐图书。

那么,如果你想要学习机器学习的算法,该如何入门呢?就我而言,我的入门课程是在哥本哈根留学时选修的人工智能课程。老师是丹麦科技大学应用数学和计算机专业的全职教授,他的研究方向是逻辑学和人工智能,主要是用逻辑学的方法来建模。课程包括了理论/核心概念的探讨和动手实践两个部分。我们使用的教材是人工智能的经典书籍之一:PeterNorvig教授的《人工智能——一种现代方法》,课程涉及到了智能代理、基于搜索的求解、对抗搜索、概率论、多代理系统、社交化人工智能,以及人工智能的伦理和未来等话题。在课程的后期,我们三个人还组队做了编程项目,实现了基于搜索的简单算法来解决虚拟环境下的交通运输任务。

我从课程中学到了非常多的知识,并且打算在这个专题里继续深入学习。在过去几周内,我参与了旧金山地区的多场深度学习、神经网络和数据架构的演讲——还有一场众多知名教授云集的机器学习会议。最重要的是,我在六月初注册了Udacity的《机器学习导论》在线课程,并且在几天前学完了课程内容。在本文中,我想分享几个我从课程中学到的常用机器学习算法。

机器学习算法通常可以被分为三大类——监督式学习,非监督式学习和强化学习。监督式学习主要用于一部分数据集(训练数据)有某些可以获取的熟悉(标签),但剩余的样本缺失并且需要预测的场景。非监督式学习主要用于从未标注数据集中挖掘相互之间的隐含关系。强化学习介于两者之间——每一步预测或者行为都或多或少有一些反馈信息,但是却没有准确的标签或者错误提示。由于这是入门级的课程,并没有提及强化学习,但我希望监督式学习和非监督式学习的十个算法足够吊起你的胃口了。

监督式学习

1.决策树:

决策树是一种决策支持工具,它使用树状图或者树状模型来表示决策过程以及后续得到的结果,包括概率事件结果等。请观察下图来理解决策树的结构。

从商业决策的角度来看,决策树就是通过尽可能少的是非判断问题来预测决策正确的概率。这种方法可以帮你用一种结构性的、系统性的方法来得出合理的结论。

2.朴素贝叶斯分类器:

朴素贝叶斯分类器是一类基于贝叶斯理论的简单的概率分类器,它假设特征之前是相互独立的。下图所示的就是公式——P(A|B)表示后验概率,P(B|A)是似然值,P(A)是类别的先验概率,P(B)代表预测器的先验概率。

现实场景中的一些例子包括:

检测垃圾电子邮件

将新闻分为科技、政治、体育等类别

判断一段文字表达积极的情绪还是消极的情绪

用于人脸检测软件

3.最小平方回归:

如果你学过统计课程,也许听说过线性回归的概念。最小平方回归是求线性回归的一种方法。你可以把线性回归想成是用一条直线拟合若干个点。拟合的方法有许多种,“最小平方”的策略相当于你画一条直线,然后计算每个点到直线的垂直距离,最后把各个距离求和;最佳拟合的直线就是距离和最小的那一条。

线性指的是用于拟合数据的模型,而最小平方指的是待优化的损失函数。

4.逻辑回归:

逻辑回归模型是一种强大的统计建模方式,它用一个或多个解释性变量对二值输出结果建模。它用逻辑斯蒂函数估计概率值,以此衡量分类依赖变量和一个或多个独立的变量之间的关系,这属于累积的逻辑斯蒂分布。

通常来说,逻辑回归模型在现实场景中的应用包括:

信用评分

预测商业活动的成功概率

预测某款产品的收益

预测某一天发生地震的概率

5.支持向量机:

支持向量机是一种二分类算法。在N维空间中给定两类点,支持向量机生成一个(N-1)维的超平面将这些点分为两类。举个例子,比如在纸上有两类线性可分的点。支持向量机会寻找一条直线将这两类点区分开来,并且与这些点的距离都尽可能远。

利用支持向量机(结合具体应用场景做了改进)解决的大规模问题包括展示广告、人体结合部位识别、基于图像的性别检查、大规模图像分类等……

6.集成方法:

集成方法是先构建一组分类器,然后用各个分类器带权重的投票来预测新数据的算法。最初的集成方法是贝叶斯平均,但最新的算法包括误差纠正输出编码和提升算法。

那么集成模型的原理是什么,以及它为什么比独立模型的效果好呢?

它们消除了偏置的影响:比如把民主党的问卷和共和党的问卷混合,从中得到的将是一个不伦不类的偏中立的信息。

它们能减小预测的方差:多个模型聚合后的预测结果比单一模型的预测结果更稳定。在金融界,这被称为是多样化——多个股票的混合产品波动总是远小于单个股票的波动。这也解释了为何增加训练数据,模型的效果会变得更好。

它们不容易产生过拟合:如果单个模型不会产生过拟合,那么将每个模型的预测结果简单地组合(取均值、加权平均、逻辑回归),没有理由产生过拟合。

非监督学习

7.聚类算法:

聚类算法的任务是将一群物体聚成多个组,分到同一个组(簇)的物体比其它组的物体更相似。

每种聚类算法都各不相同,这里列举了几种:

基于类心的聚类算法

基于连接的聚类算法

基于密度的聚类算法

概率型算法

降维算法

神经网络/深度学习

8.主成分分析:

主成分分析属于统计学的方法,过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。

主成分分析的一些实际应用包括数据压缩,简化数据表示,数据可视化等。值得一提的是需要领域知识来判断是否适合使用主成分分析算法。如果数据的噪声太大(即各个成分的方差都很大),就不适合使用主成分分析算法。

9.奇异值分解:

奇异值分解是线性代数中一种重要的矩阵分解,是矩阵分析中正规矩阵酉对角化的推广。对于给定的m*n矩阵M,可以将其分解为M=UΣV,其中U和V是m×m阶酉矩阵,Σ是半正定m×n阶对角矩阵。

主成分分析其实就是一种简单的奇异值分解算法。在计算机视觉领域中,第一例人脸识别算法使用了主成分分析和奇异值分解将人脸表示为一组“特征脸(eigenfaces)”的线性组合,经过降维,然后利用简单的方法匹配候选人脸。尽管现代的方法更加精细,许多技术还是于此很相似。

10.独立成分分析:

独立成分分析是一种利用统计原理进行计算来揭示随机变量、测量值或者信号背后的隐藏因素的方法。独立成分分析算法给所观察到的多变量数据定义了一个生成模型,通常这些变量是大批量的样本。在该模型中,数据变量被假定为一些未知的潜变量的线性混合,而且混合系统也未知。潜变量被假定是非高斯和相互独立的,它们被称为所观察到的数据的独立分量。

独立成分分析与主成分分析有关联,但它是一个更强大的技术。它能够在这些经典方法失效时仍旧找到数据源的潜在因素。它的应用包括数字图像、文档数据库、经济指标和心理测量。

现在,请运用你所理解的算法,去创造机器学习应用,改善全世界人们的生活质量吧。

总结

以上就是本文关于浅谈机器学习需要的了解的十大算法的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站Python算法相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

(0)

相关推荐

  • Python机器学习之决策树算法实例详解

    本文实例讲述了Python机器学习之决策树算法.分享给大家供大家参考,具体如下: 决策树学习是应用最广泛的归纳推理算法之一,是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树.决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,机器学习算法最终将使用这些从数据集中创造的规则.决策树的优点为:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据.缺点为:可能产生过度匹配的问题.决策树适于处理离散型和连续型的数据. 在决策树中最重要的就是如何选取

  • 给你选择Python语言实现机器学习算法的三大理由

    基于以下三个原因,我们选择Python作为实现机器学习算法的编程语言:(1) Python的语法清晰:(2) 易于操作纯文本文件:(3) 使用广泛,存在大量的开发文档. 可执行伪代码 Python具有清晰的语法结构,大家也把它称作可执行伪代码(executable pseudo-code).默认安装的Python开发环境已经附带了很多高级数据类型,如列表.元组.字典.集合.队列等,无需进一步编程就可以使用这些数据类型的操作.使用这些数据类型使得实现抽象的数学概念非常简单.此外,读者还可以使用自己

  • Python语言实现机器学习的K-近邻算法

    写在前面 额...最近开始学习机器学习嘛,网上找到一本关于机器学习的书籍,名字叫做<机器学习实战>.很巧的是,这本书里的算法是用Python语言实现的,刚好之前我学过一些Python基础知识,所以这本书对于我来说,无疑是雪中送炭啊.接下来,我还是给大家讲讲实际的东西吧. 什么是K-近邻算法? 简单的说,K-近邻算法就是采用测量不同特征值之间的距离方法来进行分类.它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系

  • 浅谈机器学习需要的了解的十大算法

    毫无疑问,近些年机器学习和人工智能领域受到了越来越多的关注.随着大数据成为当下工业界最火爆的技术趋势,机器学习也借助大数据在预测和推荐方面取得了惊人的成绩.比较有名的机器学习案例包括Netflix根据用户历史浏览行为给用户推荐电影,亚马逊基于用户的历史购买行为来推荐图书. 那么,如果你想要学习机器学习的算法,该如何入门呢?就我而言,我的入门课程是在哥本哈根留学时选修的人工智能课程.老师是丹麦科技大学应用数学和计算机专业的全职教授,他的研究方向是逻辑学和人工智能,主要是用逻辑学的方法来建模.课程包

  • 浅谈js中字符和数组一些基本算法题

    最近在刷 fcc的题,跟升级打怪一样,一关一关的过,还挺吸引我的.今天抽时间把 Basic Algorithm Scritping  这部分题做了,根据一些提示,还是比较简单的.有些题的处理方式 方法,我想值得借鉴.比如在项目中有时候要处理一个字符,如果想不到一些相关的方法,还挺费事的,所以,在此记录下来,如果以后遇到一些字符或者数组处理,可以来翻翻这篇文章,希望以此得到一些提示而不是去翻文档. 看到此博文的博友,有更好更简单的代码或者好的想法,请留言交流(我一直觉得只有学习别人的优秀代码才能进

  • 浅谈SpringBoot2.4 配置文件加载机制大变化

    前言 Spring Boot 2.4.0.M2刚刚发布,它对 application.properties 和 application.yml 文件的加载方式进行重构.如果应用程序仅使用单个 application.properties 或 application.yml 作为配置文件,那么可能感受不到任何区别.但是如果您的应用程序使用更复杂的配置(例如,Spring Cloud 配置中心等),则需要来了解更改的内容以及原因. 为什么要进行这些更改 随着最新版本 Spring Boot 发布,S

  • 浅谈JSON5解决了JSON的两大痛点

    JSON 格式可以说是目前最流行的数据传输格式了,被广泛应用于前后端通信,尤其是在 SPA 应用中,JSON 数据通过 HTTP 协议进行传输,具有体积小.易序列化.可读性好等优点.(当然,这些优点是相对的,例如体积小是相对于 XML 而言的,如果跟 protobuf 比,那体积就大多了.) JSON 虽好,但是仍有两大痛点让开发者苦恼不已: 不能添加注释(这个不能忍) 序列化之后的 key 被加上了双引号(体积变大了) 如何添加注释 目前的标准是不能添加注释,如果想添加的话,只能曲线救国了,例

  • 浅谈webpack打包之后的文件过大的解决方法

    以前一直使用 create-react-app 这个脚手架进行 react 开发,后面因为一些自定义的配置,转而使用 webpack 搭建一套自己的脚手架.但是在使用 webpack 打包之后发现,纳尼?怎么文件这么大??? 于是研究了一下如何处理 webpack 打包之后文件太大的情况,简单记录下来. 首先配置全局变量 首先,通过指定环境,告诉 webpack 我们当前处于 production 环境中,要按照 production 的方式去打包. //指定环境,将process.env.NO

  • 浅谈webpack打包生成的bundle.js文件过大的问题

    问题 使用webpack进行打包时,发现bundle.js竟然有2M多. 解决办法 网上有去除插件.提取第三方库.压缩代码等方法. 还有一个比较容易忽略的原因就是开了sourcemap 在生产环境中,应使用devtool: false 关闭sourcemap后bundle.js的大小从2.46M降到302k 以上这篇浅谈webpack打包生成的bundle.js文件过大的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: 彻底解决 webpa

  • python数学建模之三大模型与十大常用算法详情

    目录 前言 1 三大模型与十大常用算法[简介] 1-1 三大模型 1-2 十大常用算法 2 python数据分析之Pandas 2-1什么是pandas 2-2 pandas读取文件 2-3 pandas数据结构 2-3-1 pandas数据结构之DataFrame 2-3-1 Pandas 数据结构之Series 2-4查询数据 前言 数学建模的介绍与作用 全国大学生数学建模竞赛:全国大学生数学建模竞赛创办于1992年,每年一届,已成为全国高校规模最大的基础性学科竞赛,也是世界上规模最大的数学

  • 浅谈pandas.cut与pandas.qcut的使用方法及区别

    pandas.cut: pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False) 参数: 1. x,类array对象,且必须为一维,待切割的原形式 2. bins, 整数.序列尺度.或间隔索引.如果bins是一个整数,它定义了x宽度范围内的等宽面元数量,但是在这种情况下,x的范围在每个边上被延长1%,以保证包括x的最小值或最大值.如果bin是序列,它定义了允许非均匀

  • 浅谈软件工程师的自我修养

    概述 "对于知识,要求知若渴:对于自己,要虚怀若谷."优秀的软件工程师一定是在软件开发的道路上前行者.自学是其成长的一个重要手段,在自学的过程中,我们是可以通过考试的方式来收敛思绪,督促自己学习,从而提高自己的基本素质.诚然,原则和模式是软件工程质量的基石.但技术是工具, 是为人服务的,而不是相反的.我们不能为了迎合某种技术而束手束脚,让自己特别难受.与此同时,要让自己的能力发挥到极致,良好的心境是必须要有的,因为软件工程中的一个核心因素是人的因素. 诚然,在软件开发过程中,我们不仅要

  • 浅谈Python3.10 和 Python3.9 之间的差异

    目录 介绍: 了解 Python 及其用例: 分析 Python 3.9 V/s Python 3.10 的差异 Python 3.9: IANA 时区数据库 合并和更新字典的函数 删除前缀和后缀 在 Python 3.9 中对内置泛型类型使用类型提示 Python 3.10: 改进的语法错误消息 更好的类型提示 介绍: 在过去的几十年里,Python 在编程或脚本语言领域为自己创造了一个名字.python 受到高度青睐的主要原因是其极端的用户友好性.Python 还用于处理复杂的程序或编码挑战

随机推荐