大数据人|大数据第一社区

 找回密码
 注册会员

扫一扫,访问微社区

机器学习的分析逻辑推演

2015-11-8 13:30| 发布者: admin| 查看: 11526| 评论: 0

摘要: 机器学习听起来是个美妙的概念,它确实如此,但是机器学习中有一些过程并不是那么自动完成的。事实上,在设计解决方案时,很多时候需要人工操作。然而,这是得到优良结果至关重要的一环。其中一些方面有:我该使用哪 ...

机器学习听起来是个美妙的概念,它确实如此,但是机器学习中有一些过程并不是那么自动完成的。事实上,在设计解决方案时,很多时候需要人工操作。然而,这是得到优良结果至关重要的一环。其中一些方面有:


我该使用哪类机器学习算法?


监督式还是非监督式?


你有标记的数据吗?也就是输入和对应的输出。如果有,那么你可以使用监督式学习算法。如果没有,那么使用非监督式算法可以解决问题。


分类,回归还是聚类?


这主要取决于你想要解决什么样的问题。如果你想标记数据(用离散的选项来标记),分类可能是正确的选择。相反,如果你想选择一个数字,比如说分数,回归则是你最佳的选择。或者你想在电子商务网站上针对用户目前浏览信息来推荐相似产品,那么聚类则是你最好的选择。


深度学习,SVM,朴素贝叶斯,决策树···哪个最好?


我的答案是:没有最好的。显然,深度学习和支持向量机已经证明,在不同应用中它们是最强大和最灵活的算法。但考虑到根据不同特定应用,一些机器学习算法可能比其他算法更好。分析它们各自的优势并且使用它们!


特征工程


特征工程是我们提取、选择用来表示训练样例和实例的最重要的特征供机器学习算法处理的过程。这个过程是机器学习(有时没有给予足够的赞誉和重视)中最重要的方面。


请注意:如果你不向算法提供有质量保证的特征,结果会是糟糕的,即使你使用了此情形下最好的机器学习算法。这就像是你在黑暗中努力学习如何用肉眼阅读,不管你有多聪明你都不能做到。


特征提取


为了向机器学习算法输入数据,你通常需要将原始数据转换成算法能够“理解”的东西。这个过程被称作特征提取。通常我们将原始数据转换成特征向量。


在案例1中,我们如何向机器学习算法输入一张图像呢?


一个直接的方式就是将图像转换成向量,每一个成分是图像中每一个像素的灰度值。所以每一个成分或者特征,都可以用0到255的值表示,0表示黑色,255表示白色,1到254是不同程度的灰色。


这种方式可能可行,但是如果我们提供更高层次的特征可能会工作得更好:


图像包含人脸吗?


肤色是什么?


眼睛是什么颜色的?


脸上有毛发吗?



这些是更高层次特征,它们向算法提供了更多的知识而不只是每个像素的灰度值(它们的计算可以用其他机器学习算法来完成)。通过提供更高层次特征我们就在“帮”机器学习算法得到更好的学习信息来判断我的或者其他某个人的脸是否出现在一张图像中。


如果我们实施更好的特征提取:


我们算法能够学习并得到预期结果的可能性会更高。


我们可能不需要那么多训练样例。


这样一来,我们可以显著减少训练模型所需的时间。


特征选择


有些时候(并不是大多情况下),我们选择向算法输入的特征可能并没多大用处。比如,当对一条推文进行情感标记的时候,我们可能将推文的长度,推文发表的时间等作为特征,这些特征可能有用也可能没有用,而且有自动的方法来识别它们是否有用。直观地,特征选择算法通过技术手段对每条特征打分,然后根据它们的分值返回最重要的那些特征。


另一个需要记住的要点是:避免使用海量特征集。有些人可能尝试添加所有可能的特征到模型中让算法来学习。但这不是个好主意,当我们添加更多的特征来代表实例时,空间的维度就增加了,使得矩阵更加稀疏。直观地,因为我们得到更多的特征,我们必须有非常多的实例在表示每个特征的组合。这就是所谓的维度灾难,随着模型复杂度的增长,训练样例的数目需要以指数形式随着增长,相信我,这将是棘手的问题。


训练样例


你必须向机器学习算法输入训练样例。取决于你想要解决的问题,我们将会使用到几百,几千,几百万甚至上亿的训练样例。而且,保持样例的质量也至关重要,如果你向算法中输入了错误的样例,得到良好结果的可能性会降低。


收集大量的优质数据来训练机器学习算法通常是一项耗费人力物力的工作。除非你已经有标记好的数据,否则你需要自己手动或者雇佣他人来标记数据。一些众包平台的工具尝试解决这样的问题,你可以在这里找到一些工具来完成任务。或者通过使用自己的机器学习模型生成的辅助程序也可以将标记操作变得更高效。


训练样本的一般规则是:你收集了越是优质的训练数据,你可能就可能得到更好的训练结果。


测试样本和性能指标


在我们训练完一个机器学习模型之后,我们需要测试它的性能。这是非常重要的,否则你不知道你的模型是否学会了东西!


这个概念非常简单,我们使用一个测试集,一个不包含在训练集中的实例集合。基本上,我们将输入每个测试样本到模型中,然后观察它是否会得出预期结果。在监督式学习分类的情形中,我们只需要输入每条测试数据,然后检查模型输出是否与预期一样。如果我们的模型正确得出了95%的测试样本的结果,我们说这个模型的准确率是95%。


需要牢记的是,训练和测试数据集不能重合,这是测试模型泛化能力和预测能力的唯一途径。你可能在你的训练数据上能够得到较高的准确率,但如果在单独的测试集上则得到较差的准确率。这就是过拟合,也就是算法对训练样本过度拟合导致糟糕的预测能力。通常避免过拟合的方法是使用较少特征的,更简单的模型,简化模型,并使用更大更具代表性的训练集。


准确率是最基本的指标,同时你也应该关注其他的指标,比如精准度和召回率,这将会告诉你算法的在每一个分类上(当使用监督式学习分类时)的性能如何。混淆矩阵是观察分类算法在哪里出现混淆预测的好工具。


对于回归和聚类问题,有其他的指标来度量算法的性能。



鲜花

握手

雷人

路过

鸡蛋

最新评论

关闭

站长推荐上一条 /2 下一条


id="mn_portal" >首页Portalid="mn_P18" onmouseover="navShow('P18')">应用id="mn_P15" onmouseover="navShow('P15')">技术id="mn_P37" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">前沿id="mn_P36" onmouseover="navShow('P36')">宝箱id="mn_P61" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">专栏id="mn_P65" >企业id="mn_Nd633" >导航 折叠导航 关注微信 关注微博 关注我们

QQ|广告服务|关于我们|Archiver|手机版|小黑屋|大数据人 ( 鄂ICP备14012176号-2  

GMT+8, 2024-11-23 17:56 , Processed in 0.192537 second(s), 21 queries .

Powered by 小雄! X3.2

© 2014-2020 bigdataer Inc.

返回顶部