机器学习

机器学习

机器学习算法简介

引言

本文是对机器学习算法的一个概览,以及个人的学习小结。通过阅读本文,可以快速地对机器学习算法有一个比较清晰的了解。本文承诺不会出现任何数学公式及推导,适合茶余饭后轻松阅读,希望能让读者比较舒适地获取到一点有用的东西。

本文主要分为三部分,第一部分为异常检测算法的介绍,个人感觉这类算法对监控类系统是很有借鉴意义的;第二部分为机器学习的几个常见算法简介;第三部分为深度学习及强化学习的介绍。最后会有本人的一个小结。

1 异常检测算法

异常检测,顾名思义就是检测异常的算法,比如网络质量异常、用户访问行为异常、服务器异常、交换机异常和系统异常等,都是可以通过异常检测算法来做监控的,个人认为这种算法很值得我们做监控的去借鉴引用,所以我会先单独介绍这一部分的内容。

异常定义为“容易被孤立的离群点 (more likely to be separated)”——可以理解为分布稀疏且离密度高的群体较远的点。用统计学来解释,在数据空间里面,分布稀疏的区域表示数据发生在此区域的概率很低,因而可以认为落在这些区域里的数据是异常的。

说到如何用Python执行线性回归,大部分人会立刻想到用sklearn的linear_model,但事实是,Python至少有8种执行线性回归的方法,sklearn并不是最高效的。

今天,让我们来谈谈线性回归。没错,作为数据科学界元老级的模型,线性回归几乎是所有数据科学家的入门必修课。抛开涉及大量数统的模型分析和检验不说,你真的就能熟练应用线性回归了么?未必!

在这篇文章中,文摘菌将介绍8种用Python实现线性回归的方法。了解了这8种方法,就能够根据不同需求,灵活选取最为高效的方法实现线性回归。

“宝刀不老”的线性回归

时至今日,深度学习早已成为数据科学的新宠。即便往前推10年,SVM、boosting等算法也能在准确率上完爆线性回归。

为什么我们还需要线性回归呢?

一方面,线性回归所能够模拟的关系其实远不止线性关系。线性回归中的“线性”指的是系数的线性,而通过对特征的非线性变换,以及广义线性模型的推广,输出和特征之间的函数关系可以是高度非线性的。另一方面,也是更为重要的一点,线性模型的易解释性使得它在物理学、经济学、商学等领域中占据了难以取代的地位。

那么,如何用Python来实现线性回归呢?

近日,kdnuggets做了一个关于数据科学、机器学习语言使用情况的问卷调查,他们分析了954个回答,得出结论——Python已经打败R语言,成为分析、数据科学和机器学习平台中使用频率最高的语言。有关此次问卷更具体的情况如何?雷锋网 AI科技评论将kdnuggets上发表的总结文编译整理如下:

之前我们在kdnuggets上做了这样一个问卷调查,2016、2017两年,在分析、数据科学和机器学习的工作中,你用R语言,还是Python,或两者都用,或选择其他的语言?

通过分析954个回答,我们得出了这样的结论:虽然Python并没有完全取代R语言,但在2017年,Python已经成功打败R语言,成为分析、数据科学和机器学习平台中使用频率最高的语言。

在2016年Python还是第二位(主要用Python的人占34%,主要用R语言的人占42%),在2017年Python就以5%的优势领先于R语言(主要用Python的人占41%,主要用R语言的人占36%)。同时用Python和R两种语言的人也从2016年的8.5%增长到12%了,而用其他语言的人则从16%降到11%。

嵌入式视觉应用中的机器学习

作者:Nick Ni 和 Adam Taylor

目前嵌入式视觉领域最热门的话题之一就是机器学习。机器学习涵盖多个行业大趋势,不仅在嵌入式视觉 (EV) ,而且在工业物联网 (IIoT) 和云计算中均发挥着极为显赫的作用。对不熟悉机器学习的人来说,很多时候机器学习是通过神经网络创建和训练来实现的。神经网络一语极为宽泛,包含相当数量的截然不同的子类别。这些子类别的名称一般用于识别被实现的网络的具体类型。这些网络均在大脑皮层上建模,在大脑皮层中每个神经元接收输入、处理输入并将其传达给另一个神经元。因此神经元一般由输入层、多个隐藏内部层和一个输出层组成。

图1:简单的神经网络

图1:简单的神经网络

4种普遍的机器学习分类算法

本文主要介绍了 4 种应用比较普遍的的机器学习算法,但是机器学习算法还有其他很多不同的算法,大家感兴趣的可以自己去了解。

朴素贝叶斯分类

朴素贝叶斯分类是基于贝叶斯定理与特征条件独立假设的分类方法,发源于古典数学理论,拥有稳定的数学基础和分类效率。它是一种十分简单的分类算法,当然简单并不一定不好用。通过对给出的待分类项求解各项类别的出现概率大小,来判断此待分类项属于哪个类别,而在没有多余条件的情况下,朴素贝叶斯分类会选择在已知条件下,概率最大的类别。

贝叶斯分类算法的实质就是计算条件概率的公式。在事件 B 发生的条件下,事件 A 发生的概率为 P(A | B)来表示。

P(A | B)的概率为

主流机器学习算法简介与其优缺点分析

机器学习算法的分类是棘手的,有几种合理的分类,他们可以分为生成/识别,参数/非参数,监督/无监督等。

例如,Scikit-Learn的文档页面通过学习机制对算法进行分组。这产生类别如:1,广义线性模型,2,支持向量机,3,最近邻居法,4,决策树,5,神经网络,等等…

但是,从我们的经验来看,这并不总是算法分组最为实用的方法。那是因为对于应用机器学习,你通常不会想,“今天我要训练一个支持向量机!”相反,你心里通常有一个最终目标,如利用它来预测结果或分类观察。

所以在机器学习中,有一种叫做“没有免费的午餐”的定理。简而言之,它的意思就是说没有任何一种算法可以完美地解决每个问题,这对于监督式学习(即预测性建模)尤其重要。

例如,你不能说神经网络总是比决策树好,反之亦然。有很多因素在起作用,比如数据集的大小和结构。因此,您应该为您的问题尝试许多不同的算法,同时使用数据的“测试集”来评估性能并选择优胜者。

当然,你尝试的算法必须适合你的问题,这就是选择正确的机器学习算法的重要性之所在。打个比方,如果你需要清理你的房子,你可以使用真空吸尘器,扫帚或拖把,但是你不会拿出一把铲子然后开始挖掘。

因此,我们想要介绍另一种分类算法的方法,即通过机器学习所负责的任务来分类。

机器学习的任务

盘点·GitHub最著名的20个Python机器学习项目

开源是技术创新和快速发展的核心。这篇文章向你展示Python机器学习开源项目以及在分析过程中发现的非常有趣的见解和趋势。

我们分析了GitHub上的前20名Python机器学习项目,发现scikit-Learn,PyLearn2和NuPic是贡献最积极的项目。让我们一起在Github上探索这些流行的项目!

  1. Scikit-learn:Scikit-learn 是基于Scipy为机器学习建造的的一个Python模块,他的特色就是多样化的分类,回归和聚类的算法包括支持向量机,逻辑回归,朴素贝叶斯分类器,随机森林,Gradient Boosting,聚类算法和DBSCAN。而且也设计出了Python numerical和scientific libraries Numpy and Scipy

人工智能和机器学习正在渗透所有的行业。随着人工智能算法的成熟,支持这些算法的硬件平台也日趋成熟。目前,这些硬件平台包括 ASIC,CPU,GPU以及 FPGA 。在 Plunify,尽管我们的强项是FPGA的设计优化,但是我们中的很多人本质上还是软件工程师。当然,这里所说的“软件工程师”并不包括嵌入式工程师,固件工程师或者研发驱动的工程师;我们所说的是使用 .NET, Java, Python, R, SQL, C++ 或者 JavaScript 来写代码的开发者们。

我们最近正在研究的项目是在芯片设计上使用机器学习驱动的布局。我们用成千上万不同的布局来训练,并使用机器学习技术,在布线之前预测设计的最终时序性能。

使用哪一个框架来开启机器学习项目?
市面上有很多选择,但是我们最终的答案是Tensorflow。这似乎有些难以置信,毕竟我们已经开发了赛灵思 Vivado 的插件 Plunify Cloud 以及设计优化软件 InTime,难道不应该选择一个可以轻易把FPGA作为硬件的框架吗?我们已经对FPGA有所了解,而Tensorflow和FPGA的关系并不是很密切。

手把手生成决策树(dicision tree)

1.什么是决策树

决策树是一种基本的分类和回归方法,本文主要讲解用于分类的决策树。决策树就是根据相关的条件进行分类的一种树形结构,比如某高端约会网站针对女客户约会对象见面的安排过程就是一个决策树:

根据给定的数据集创建一个决策树就是机器学习的课程,创建一个决策树可能会花费较多的时间,但是使用一个决策树却非常快。

创建决策树时最关键的问题就是选取哪一个特征作为分类特征,好的分类特征能够最大化的把数据集分开,将无序变为有序。这里就出现了一个问题,如何描述一个数据集有序的程度?在信息论和概率统计中,熵表示随机变量不确定性的度量,即有序的程度。

现给出一个集合D,本文所有的讨论都以该集合为例:

序号 不浮出水面是否可以生存

机器学习必知的15大框架

摘要: 不管你是一个研究人员,还是开发者,亦或是管理者,想要使用机器学习,需要使用正确的工具来实现。本文介绍了当前最流行15个机器学习框架。

机器学习工程师是开发产品和构建算法团队中的一部分,并确保其可靠、快速和成规模地工作。他们和数据科学家密切合作来了解理论知识和行业应用。数据专家和机器学习工程师的主要区别是:

·机器学习工程师构建、开发和维护机器学习系统的产品。

·数据专家进行调查研究形成有关于机器学习项目的想法,然后分析来理解机器学习系统的度量影响。

下面是机器学习的框架介绍:

1.Apache Singa 是一个用于在大型数据集上训练深度学习的通用分布式深度学习平台,它是基于分层抽象的简单开发模型设计的。它还支持各种当前流行的深度学习模型,有前馈模型(卷积神经网络,CNN),能量模型(受限玻尔兹曼机,RBM和循环神经网络,RNN),还为用户提供了许多内嵌层。

2.Amazon Machine Learning(AML)是一种让各种级别使用机器学习技术的开发人员可轻松掌握的一个服务,提供了视觉工具和向导,可以指导您在不必学习复杂的机器学习算法和技术的情况下建立机器学习。

同步内容