您当前的位置:首页 > 电脑百科 > 人工智能

机器学习算法的终极对决

时间:2020-07-10 11:38:17  来源:  作者:
机器学习算法的终极对决

> Photo by Jaime Spaniol on Unsplash

 

CNN,Mobile-Net,KNN,Random Forest和MLP。 哪种算法最好?

故事

一切始于我年轻的表弟,他在自己的世界里迷路,在绘画本上涂鸦。 我问他在做什么。 他回答说他正在养猫。 看起来根本不像猫。 他要求我和他一起玩游戏,我会认出他在画什么。 一段时间以来,这很有趣,但是很快,我就感到无聊。 我不想不和他玩耍来伤害他的感情,所以我用自己的计算机视觉和Python技巧来制作一个Doodle分类器。 现在的问题是,我将如何实施它? 有数百种方法可以对Doodle进行分类,而我必须选择一种最准确的涂鸦,即花费最少的时间进行训练,占用更少的内存,需要更少的处理能力并且不需要TB的数据即可提供有意义的信息 结果。

上网浏览后,我发现了可以以最佳方式完成此任务的前5种算法,但是我访问的每个网站都讲述了一个不同的故事。 有些人说CNN是最好的,而另一些人说移动网络是最好的。 我想-好吧,让我们测试一下所有这些。 我在Kaggle竞赛中找到了一个包含大量带有标签的涂鸦的出色数据集,可以免费下载。

图像分类是一个巨大的话题,因为有很多算法可用于各种应用。 图像分类是如此之大和千变万化,以至于每天都在创建新的算法,并且它的新应用也在不断涌现。 因此,即使它们有数百种变体,我也很难手动选择一些算法。 因此,本文将研究哪种算法最适合涂鸦分类。

我还将测试这些算法在其他情况下(例如手写字符分类,车牌识别等)的可靠性。

涵盖范围

· 研究中使用的机器学习技术简介

· 评估指标

· 选择用于研究的参数的详细信息

· 结果

· 局限性和结论

让我们首先简要介绍所使用的机器学习算法

涂鸦分类的算法有数千种,在这里我列出了一些我将探索的著名算法-

1)随机森林

我们可以将随机森林算法用于分类和回归。 就像决策树一样,只是它使用数百个决策树得出结论。 决策树根据相似的特征将数据分为各种类别。 对于每个数据点,它检查是否具有特定功能,大多数常见数据属于同一类。 在随机森林算法中,我们采用许多决策树,并随机给它们提供较少的特征以供检查,例如,如果我们有100个特征,则可能给每棵树10个随机特征。 一些树将分配不正确的类,但是许多树将是正确的! 我们以多数为准,并创建我们的分类模型。

2)KNN

K最近邻(KNN)既可以用作分类算法,也可以用作回归算法。 在KNN中,数据点分为几类,以预测新样本点的分类。 为了实现此任务,它使用距离公式来计算各个数据点之间的距离,然后基于该距离,然后为每个类别定义区域边界。 任何新的数据点都将属于这些区域之一,并将被分配给该类。

3)MLP

多层感知(MLP)是前馈人工神经网络的一种形式。 MLP有许多层,但在其隐藏层中只有一个逻辑函数,而在输出层中只有一个softmax函数。 该算法以单个大向量作为输入,并对输入层和隐藏层执行矩阵运算,然后结果通过逻辑函数,其输出通过另一个隐层。 重复此过程,直到网络到达输出层为止,在此使用softmax函数生成单个输出。

4)CNN

卷积神经网络(CNN)是最容易实现的深度学习计算机视觉算法之一。首先,它获取给定尺寸的输入图像,并为其创建多个滤镜/特征检测器(最初是给定尺寸的随机生成的矩阵),滤镜的目的是识别图像中的某些图案,然后在滤镜上移动在矩阵和图像之间进行图像和矩阵相乘。该滤镜在整个图像中滑动以收集更多特征,然后我们使用激活函数(主要是整流的线性单位函数)来增加非线性或仅保留重要特征,然后使用max-pooling函数将给定值中的所有值相加矩阵大小(例如,如果我们选择4的矩阵,则它将所有4个值相加以创建1个值),从而减小输出的大小以使其更快。最后一步是展平最终矩阵,该矩阵作为输入传递到基本ANN(人工神经网络)并获得类预测。

5)移动网

Mobile-Net体系结构使用深度方向可分离卷积,其中包括深度方向卷积和点方向卷积。 深度方向卷积是通道方向Dk * Dk空间卷积,假设我们在图像中有3个通道(R,G,B),那么我们将具有3 * Dk * Dk空间卷积。 在逐点卷积中,我们的内核大小为1 * 1 * M,其中M是在深度卷积中的通道数,在这种情况下为3。因此,我们有一个大小为1 * 1 * 3的内核。 我们通过3 * Dk * Dk输出迭代这个内核以获得Dk * Dk * 1输出。 我们可以创建N 1 * 1 * 3个内核,每个内核输出一个Dk * Dk * 1图像,以获得形状为Dk * Dk * N的最终图像。 最后一步是将深度方向卷积添加到点方向卷积。 这种类型的体系结构减少了训练时间,因为我们需要调整的参数较少,而对精度的影响较小。

评估指标

机器学习算法的终极对决

> Sample of doodles used for research

 

以上是用于本研究的Doodle样本。

我在Kaggle quickdraw数据集上训练了机器学习模型,该数据集包含5000万张不同类型的Doodle图像。 我将庞大的数据集分为两部分:用于训练的35000张图像和用于测试的15000张图像。 然后,我针对随机选择的5种不同类型的Doodle计算每种算法的训练时间。 在测试集上,我计算了每种算法的平均平均精度,准确性和召回率。

评估指标

训练时间

平均平均精度

准确性

召回

Shashwat Tiwari 16MCA0068的更多有关评估指标的信息

选择的参数的详细信息

1)随机森林

n_estimators —森林中决策树的数量。 [10,50,100]

max_features-拆分['auto','sqrt']时要考虑的功能

max_depth —树中的最大级别数[2,4,6,8,10]

n_jobs-并行运行的进程数,通常设置为-1以一次执行最大进程。

准则—这是一种计算损失并因此更新模型以使损失越来越小的方法。 ['熵','cross_validation']

我使用"自动"作为max_feature; 8作为max_depth; -1作为n_jobs,"熵"作为我的标准,因为它们通常会产生最佳效果。

机器学习算法的终极对决

> the Graph to find an optimum number of trees

 

但是,为了找出最佳的树数,我使用了GridSearchCV。 它尝试所有给定的参数组合并创建一个表以显示结果。 从图中可以看出,在80棵树之后测试分数没有显着增加。 因此,我决定在80棵树上训练我的分类器。

2)K最近邻居(KNN)

n_neighbors —要比较的最近数据点数[2,5,8]

n_jobs-并行运行的进程数,通常设置为-1以一次执行最大进程

我没有更改此模型的任何默认参数,因为它们会提供最佳结果。

但是,为了找到n_neighbors的最佳数量,我使用了GridSearchCV,这是我得到的图形:

机器学习算法的终极对决

> The graph to find an optimum number of N-neighbors

 

根据该图,测试分数在5 n_neighbors之后下降,这意味着5是最佳邻居数。

3)多层感知器(MLP)

alpha-最常用的学习速率,它告诉网络调整梯度的速度。 [0.01,0.0001,0.00001]

hidden_layer_sizes —它是一个值的元组,由每层的隐藏节点数组成。 [(50,50),(100,100,100),(750,750)]

激活—一种功能,可以为图像中的重要特征提供价值,并删除不相关的信息。 ['relu','tanh','logistic']。

求解器(也称为优化器),该参数告诉网络使用哪种技术来训练网络中的权重。 ['sgd','adam']。

batch_size —这是一次要处理的图像数。 [200,100,200]。

我将激活选择为" relu",将求解器选择为" adam",因为这些参数可提供最佳结果。

但是,为了选择隐藏层和alpha的数量,我使用了GridSearchCV。

机器学习算法的终极对决

> Table to find an optimum number of N-neighbors

 

从表中可以看出,当alpha为0.001,hidden_layer_sizes为(784,784)时,可获得最佳结果。 因此,我决定使用那些参数。

4)卷积神经网络(CNN)

learning_rate-告诉网络调整梯度的速度。 [0.01,0.0001,0.00001]

hidden_layer_sizes —它是一个值的元组,由每层的隐藏节点数组成。 [(50,50),(100,100,100),(750,750)]

激活—一种功能,可以为图像中的重要特征提供价值,并删除不相关的信息。 ['relu','tanh','logistic']。

求解器(也称为优化器),该参数告诉网络使用哪种技术来训练网络中的权重。 ['sgd','adam']。

batch_size —这是一次要处理的图像数。 [200,100,200]

时期-程序应运行的次数或应训练模型的次数。 [10,20,200]

我将激活函数选择为" relu",将求解器选择为" adam",因为这些参数通常会产生最佳效果。 在网络中,我添加了3个卷积层,2个maxpool层,3个辍学层,最后添加了一个softmax激活函数。 我在这里没有使用GridSearchCV,因为可以尝试很多可能的组合,但是结果不会有太大差异。

5)移动网

Input_shape-是由图像尺寸组成的元组。 [(32,32,1),(128,128,3)]。

Alpha-网络的宽度。 [<1,> 1,1]

激活—一种功能,可以为图像中的重要特征提供价值,并删除不相关的信息。 ['relu','tanh','logistic']。

优化器—也称为求解器,此参数告诉网络使用哪种技术来训练网络中的权重。 ['sgd','adam']。

batch_size —这是一次要处理的图像数。 [200,100,200]。 时期-程序应运行的次数或应训练模型的次数。 [10,20,200]

classes-要分类的类数。 [2,4,10]

损失-告诉网络使用哪种方法来计算损失,即预测值与实际值之差。 ['categorical_crossentropy','RMSE']

首先,我将28 * 28图像的大小调整为140 * 140图像,因为移动网络最少需要32 * 32图像,所以我使用的最终input_shape值为(140,140,1),其中1是图像通道(在 这种情况下,黑色和白色)。 我将alpha设置为1,因为它通常会产生最佳效果。 激活功能被设置为默认值,即" relu"。 我使用了" Adadelta"优化器,因为它可以提供最佳效果。 batch_size设置为128以更快地训练模型。 我已经使用20个纪元来提高准确性。 由于我们有5个类别可以分类,因此将类别设置为5。

结果

机器学习算法的终极对决

> Final Results (Fingers crossed)

 

以上是所使用的所有机器学习技术的性能。 指标包括准确性,召回率,准确性和培训时间。 令我震惊的是,Mobile Net的训练时间为46分钟,因为它被认为是轻巧的模型。 我不确定为什么会这样,如果您知道为什么,请告诉我。

局限性和结论

· 在这项研究中,只使用了28 * 28大小的黑白涂鸦,而在现实世界中,不同的颜色可能会表现出不同的意思或表示不同的事物,并且图像大小可能会有所不同。 因此,在这些情况下,算法的行为可能会有所不同。

· 在所有讨论的算法中,都有许多可以更改和使用的超参数,它们可能会给出不同的结果。

· 训练这些算法的训练集仅限于35000张图像,添加更多图像可以提高这些算法的性能。

结果表明,移动网络实现了最高的准确性,准确性和查全率,因此就这三个参数而言,它是最佳算法。 但是,移动网络的培训时间也是最高的。 如果将其与CNN进行比较,我们可以看到CNN花费更少的时间进行训练,从而提供了相似的准确性,准确性和召回率。 因此,根据这项研究,我可以得出结论,CNN是最好的算法。

在进行了这项研究之后,我得出结论,像移动网络和CNN这样的算法可用于硬文字识别,车牌检测以及世界各地的银行。 诸如移动网络和CNN之类的算法实现了超过97%的准确度,这优于95%的平均人类绩效。 因此,这些算法可以在现实生活中使用,从而使困难或耗时的过程自动化。

私信译者获得本文代码

(本文翻译自Shubh Patni的文章《Ultimate Showdown of machine Learning Algorithms》,参考:https://towardsdatascience.com/ultimate-showdown-of-machine-learning-algorithms-af68fbb90b06)



Tags:机器学习 算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
常见机器学习算法的摘要。> Photo by Santiago Lacarta on Unsplash 近年来,由于对技术的高需求和进步,机器学习的普及已大大增加。 机器学习可以从数据中创造价值的潜力使其...【详细内容】
2020-07-28  Tags: 机器学习 算法  点击:(58)  评论:(0)  加入收藏
> Photo by Jaime Spaniol on Unsplash CNN,Mobile-Net,KNN,Random Forest和MLP。 哪种算法最好?故事一切始于我年轻的表弟,他在自己的世界里迷路,在绘画本上涂鸦。 我问他在做什...【详细内容】
2020-07-10  Tags: 机器学习 算法  点击:(81)  评论:(0)  加入收藏
▌简易百科推荐
作为数据科学家或机器学习从业者,将可解释性集成到机器学习模型中可以帮助决策者和其他利益相关者有更多的可见性并可以让他们理解模型输出决策的解释。在本文中,我将介绍两个...【详细内容】
2021-12-17  deephub    Tags:AI   点击:(16)  评论:(0)  加入收藏
基于算法的业务或者说AI的应用在这几年发展得很快。但是,在实际应用的场景中,我们经常会遇到一些非常奇怪的偏差现象。例如,Facebook将黑人标记为灵长类动物、城市图像识别系统...【详细内容】
2021-11-08  数据学习DataLearner    Tags:机器学习   点击:(32)  评论:(0)  加入收藏
11月2日召开的世界顶尖科学家数字未来论坛上,2013年诺贝尔化学奖得主迈克尔·莱维特、2014年诺贝尔生理学或医学奖得主爱德华·莫索尔、2007年图灵奖得主约瑟夫·斯发斯基、1986年图灵奖得主约翰·霍普克罗夫特、2002...【详细内容】
2021-11-03  张淑贤  证券时报  Tags:人工智能   点击:(39)  评论:(0)  加入收藏
鉴于物联网设备广泛部署、5G快速无线技术闪亮登场,把计算、存储和分析放在靠近数据生成的地方来处理,让边缘计算有了用武之地。 边缘计算正在改变全球数百万个设备处理和传输...【详细内容】
2021-10-26    计算机世界  Tags:边缘计算   点击:(45)  评论:(0)  加入收藏
这是几位机器学习权威专家汇总的725个机器学习术语表,非常全面了,值得收藏! 英文术语 中文翻译 0-1 Loss Function 0-1损失函数 Accept-Reject Samplin...【详细内容】
2021-10-21  Python部落    Tags:机器学习   点击:(43)  评论:(0)  加入收藏
要开始为开源项目做贡献,有一些先决条件:1. 学习一门编程语言:由于在开源贡献中你需要编写代码才能参与开发,你需要学习任意一门编程语言。根据项目的需要,在后期学习另一种语言...【详细内容】
2021-10-20  TSINGSEE青犀视频    Tags:机器学习   点击:(37)  评论:(0)  加入收藏
SimpleAI.人工智能、机器学习、深度学习还是遥不可及?来这里看看吧~ 从基本的概念、原理、公式,到用生动形象的例子去理解,到动手做实验去感知,到著名案例的学习,到用所学来实现...【详细内容】
2021-10-19  憨昊昊    Tags:神经网络   点击:(47)  评论:(0)  加入收藏
语言是人类思维的基础,当计算机具备了处理自然语言的能力,才具有真正智能的想象。自然语言处理(Natural Language Processing, NLP)作为人工智能(Artificial Intelligence, AI)的核心技术之一,是用计算机来处理、理解以及运...【详细内容】
2021-10-11    36氪  Tags:NLP   点击:(49)  评论:(0)  加入收藏
边缘计算是什么?近年来,物联网设备数量呈线性增长趋势。根据艾瑞测算, 2020年,中国物联网设备的数量达74亿,预计2025年突破150亿个。同时,设备本身也变得越来越智能化,AI与互联网在...【详细内容】
2021-09-22  汉智兴科技    Tags:   点击:(54)  评论:(0)  加入收藏
说起人工智能,大家总把它和科幻电影中的机器人联系起来,而实际上这些科幻场景与现如今的人工智能没什么太大关系。人工智能确实跟人类大脑很相似,但它们的显著差异在于人工智能...【详细内容】
2021-09-17  异步社区    Tags:人工智能   点击:(57)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条