首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谁说选择机器学习算法没有套路的?

版权声明

本文首发于微信公众号

这样和数据相处(zw_life-long_doing)

无需授权即可转载

转载时请注明出处

虽说python只是我们进行数据挖掘和分析的其中一个工具,但前些天,我在解决一个分类问题的时候,就遇见了一个比较尴尬的情况:我到底应该选择哪一个机器学习算法来解决这个问题?

哈哈,我相信提到机器学习,你会有一点点懵逼,什么是机器学习呀?

简单的说,机器学习就是把无序的数据转换成有用的信息。首先,我们要明确一点:绝大多数情况下,我们很难直接从原始数据本身获得自己想要的信息。

比如说,你如何从几百万条邮件数据中知道,哪些是垃圾邮件?又比如说,从双十一的交易数据中,你如何知道哪些消费者在六个月内会在同一家店铺中重复购买?

很明显,单单从这些数据的本身去看,你很难得到自己想要的答案。就拿检测垃圾邮件来说,挨个检测某个词是否存在,可能没有什么意义。但如果几个特定的词同时出现的话,再辅以这条邮件的长度,其实很容易知道该邮件是否属于垃圾邮件。

但总的来说,我们常见的机器学习,有四类:

监督学习;

无监督学习;

半监督学习;

强化学习。

具体的内容可以参见另一篇文章:《

机器学习:探索杂乱无章的世界。

》,所以这里就谈谈目前比较常用的监督学习和无监督学习。

在监督学习中,机器学习的主要任务就是分类。即将实例数据划分到合适的分类中。换句话说,就是按照一定标准,将某对象C,自动分到A和B或更多的对象中去。就比如上个例子说的垃圾邮件检测,就是一个典型的分类问题,类似的,还有购物网站的个性化推荐等等。

除分类外,机器学习在监督学习中,还有一项任务:回归。它主要是用于预测性数值型数据。这里我相信大多数人或多或少见过数据拟合曲线,一条通过给定数据点的最优拟合曲线。它其实就是属于回归范畴,用来预测未知数据点大概率会落在这条拟合曲线的哪个位置。

而与监督学习相对应的便是无监督学习。这里的数据没有类别信息,也不会给定目标值,这是监督学习和无监督学习最大的区别。

在无监督学习中,有两类算法比较常用,一类是聚类,另一个是密度估计。聚类的作用是将数据集合,分成有类似对象组成的多个类的过程。物以类聚,人以群分嘛。而密度估计则是寻找描述数据统计值的过程。

你可能已经发现了,在上图中有很多算法都可用于解决同样的问题,那精通其中一种算法,是否可以处理所有的类似问题呢?

如何选择合适的算法

在选择算法的时候,有两个问题是一定要考虑的:

使用机器学习算法的目的是什么?比如是预测明天下雨的概率还是对投票者按兴趣分组。

需要分析或收集的数据是什么?

首先,来谈谈使用算法的目的。很简单,先确定你是否想要预测目标变量的值。如果是,那就选择监督学习算法;如果不是,则选择无监督学习算法。

倘若我们选择的是监督学习算法,那么,接下来而我们需要进一步的确定目标变量类型。如果目标变量是离散型数据,如是/否、1/2/3或红/黄/黑等,则可以选择分类算法;如果目标变量是连续型的数值,如0~100、-999~999或-∞~+∞等,则需要选择回归算法。

倘若我们选择的是无监督学习算法,我们进一步则需要分析是否需将数据划分为离散的数据组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,那就使用密度估计算法。

但要注意的是,上面的套路符合也只是大多数的情况,不是一层不变的。因为我们很可能会遇见使用分类算法来处理回归问题的情况。后面我会专门写一篇文章来讲这类特殊情况,这里就不过多阐述了。

除了明确我们使用算法的目的外,我们还需要考虑数据问题。换句话说,我们对实际数据了解得越充分,越容易创建符合实际需求的应用程序。一般情况下,我们应该了解数据的以下特征(数据集中每列数据的特征):

特征值是离散型变量还是连续性变量;

特征值中是否存在缺失的值;

是什么原因造成了缺失;

数据中是否存在异常值;

某个特征发生的频率如何,是否罕见,等等。

充分的了解数据,其实不仅可以缩短我们选择机器学习算法的时间,也能让我们在进行数据清洗的时候事半功倍。

客观说,一般并不存在最好的算法或者可以给出最好结果的算法, 所以我们还是需要尝试不同算法的执行结果。对于我们所选的每种算,其实都可以使用其他的机器学习技术来改进其性能。一般说来,发现最好算法的关键环节,是反复试错的迭代过程。

虽然说机器学习算法各不相同,但是使用算法的步骤却是大致相同的,最后就来谈谈使用机器学习算法的通用步骤。

使用算法的通用步骤

1. 收集数据

有很多方法可以获得样本数据。比如爬虫网页数据、来自设备的实测数据等。

2. 准备输入数据

得到数据之后,还须确保数据格式符合要求。比如说一些算法要求目标变量和特征值是字符串类型,而另一些算法则可能要求是整型。

3. 分析输入数据

这一步中,我们除了查看得到的数据是否为空值外,还需要看看数据中是否存在明显的异常值。

通常情况下,用一维、二维或三维图形展示数据是很不错的方法。

4. 训练算法

根据机器学习算法的不同,第4步和第5步是机器学习算法的核心。因为在这一步,我们是将前两步得到的格式化数据输入到算法里面,通过算法来抽取我们想要的信息。

但要注意的是,如果使用的是无监督学习算法,由于它不存在目标变量值,所以也就不需要训练算法,直接进入到第5步。

5. 测试算法

这一步将实际使用第4步中,通过机器学习算法得到的信息。即实际测试算法的工作效果。

对于监督学习,则已知用于评估算法的目标变量值;对于无监督学习,也必须用其他手段来检验算法的成功率。

但,无论是哪种情况,如果不满意算法的输出结果,则返回第4步,改正算法并加以测试。一般说来,问题常常会跟数据的收集和准备有关,这时就得跳回到第1步开始了。

6. 使用算法

来到这一步,就可以将这个算法封装转换成应用程序,执行实际任务了。但如果碰到了新的数据问题,同样需要重复执行上述步骤。

总结一下,本文从如何选择机器学习算法,和应用算法通用步骤这两方面,讲了机器学习算法在从选择到应用的相关套路,希望能对你有所帮助。

下一周,我会着重讲讲在数据清洗中,“特征工程”的重要性和一般套路。敬请期待吧,嘿嘿。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180721G0WPW500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券