经常看到有很多人把机器学习和数据分析混为一谈,因此我想分析一下机器学习和数据分析这两个职位之间有什么不同,他们干的事情有什么不同,并且借此来分析下两者的技术背景有什么不同。
首先呢这两者的第一个区别就是他们处理的数据特点不一样。那么怎么可以简单地理解呢?
首先从我们的传统上。数据分析他们所处理的是交易数据,而我们机器学习处理的则是行为数据。那么,什么是交易数据,什么是行为数据呢?比如说对于一个电商来说,他的用户交易数据就是下单,比如说对于银行这样的系统来说,他的交易数据就是用户的存取款账单,再比如对于电信系统来说交易数据就是和用户的消费账单有关。总的来说,交易数据本质就是和钱有关的数据。
那么什么是行为数据呢?比如对于一个互联网公司来说,用户的行为数据就包括了用户的搜索历史,浏览历史,点击历史或者是评论历史等这些用户的行为数据。
从这两种数据中就开始衍生出下类的两种区别,首先从数据量上来说,他们就不是一种量级的,那么从交易数据来说,他只能算是一个少量的数据或者谈不上海量的数据,而用户的行为数据呢,则是一个海量的数据。那么请想象一下,你每天看多少视频,浏览多少网页,你会发多少帖子,你会搜索多少次,同时来对比下你每天下几次订单,二者之间的对比,高下立判,这其实就是实际上就是交易数据和行为数据的一种明显的对比。这就好像前几年,大家公司之间好像没什么业务的变化,结果摇身一变就成为了大数据公司了,那就是因为我们把用户的行为数据一下子收集起来,这样的数据量一下子猛增起来了,其实本质上来说用户的交易数据并没有发生多少的变化,但是由于我们关注了用户的行为数据,所以现在摇身一变就成为了大数据公司了。
其实对于这两种数据分析的方法其实也是不一样的。
我们首先来分析下这两种数据的一种本质的区别。那么对于交易数据来说,对于数据的一致性其实是非常严格的。这样的原因很好理解,比如我们每个人都会很关注自己在银行的存款,有多少钱,通常我们都会计较到分的级别,银行给你多一分少一分我们用户都不会干。那么其实对于交易数据来说我们的用户要求其实是非常高的,通常都会达到9999的级别或者是99999的级别。那么对于用户的行为数据来说对于数据的要求就没有那么高了,通常就是这样的数据多一批少一批都没有多大的关系。你可能自己也记不清你一天到底访问了多少个网页输入了多少次评论搜索了多少个历史,同时对于一家数据公司来说,他们也不是很关心一家公司的用户的行为数据的一致性,那么你这批数据就算丢了,对于我们整体的分析也不会有太大的影响,那么对于用户的交易数据那就不行了,比如说用户的转账,你一次转账至少会涉及两次交易,对于这两种交易,可以同时划分到一种事务中来,要么同时成功,要么同时失败,不能说你这个账户转账成功,这个账号转账失败,这样是绝对不行的。根据上述的分析,我们可以发现这两种的用户行为习惯在一致性是有天壤之别的。这就是我们现在为什么会发现多了很多NOSQL数据库,当时NOSQL数据库刚出来的时候,大家都有一种看热闹不怕事情大的心态,都感觉这个数据库是会取代原有数据库的一种产品。大家都觉得革命要来了,我们被传统的关系型数据库压制了这么多年了,现在要转型NOSQL数据库了,但是当大家用了一段时间以后,大家发现NOSQL数据库只能处理这样的行为数据。因为NOSQL数据库具有分布式和CAP这两种概念。在保证你的数据吞吐量的情况下会在你的数据一致性上打一个折扣,我们如果是处理用户的交易数据我们是绝对不会用NOSQL数据库来保存的,必须还得用SQL数据库进行保存,而只有SQL这样的数据库我们是才可以保存这样的数据的,实际上对于现在的交易数据和行为数据,我们实际上是由两种的用户方式来保存的。
最后一点呢,就是我们的分析方法也不一样,交易数据我们通常可以采用采样法来进行分析,因为他的一致性比较高,但是对于用户的行为数据,为什么我们现在强调大数据,又强调这样的分布式数据分析平台,因为我们是要对于用户的行为数据进行全量分析的,况且我们通过全量分析数据量还不够呢,更何况采样分析,可能数据量越大,对于用户的行为分析的会越准确,预测的越准
这是从数据本身我们来分析机器学习和数据分析两者的区别
然后我么再看第二个区别,解决的业务问题不同
那么对于传统的数据分析来说他们更多的是来报告历史上发生了什么事情,而对于机器学习来说,更多的是预测未来可能会发生的事情,这是二者的本质的区别
在这里,我想列几个例子来表示两者的区别,
数据分析(OLAP):过去几年内,那些人是我们的优质客户
过去那些人拖欠我们贷款
今年前四个季度,那些销售业绩超出去年
去年消费的用户今年持续消费
机器学习:
前100个最有利润潜力的客户是谁
那些客户可能有坏账风险
明年的促销活动那种利润率更高
明年那些用户可能会购买竞争对手的产品
第三点不同是两者采取的技术手段不同。
对于传统的数据分析,他对于数据的分析方法完全就是由用户驱动的,这里的用户其实是指企业的那些用户分析师,其数据的分析几乎都是靠他的经验驱动的,而分析方式呢,大多数就是交互式分析,工具通常就是OLAP的工具。正是因为数据分析的很大的原因是因为分析师的经验判断,就受限于你这个分析师的分析水平,另外一点就是因为人来做,这就限制了我们分析的用户的容量和用户的总数。
但是现在这个数据分析是一种比较成熟的技术了,但是相对来说,这也是一种比较落伍的技术了
我们再看机器学习,他的主要的分析方法技术主要是靠算法和数据驱动的,他会自动的进行知识发现,并且判断出来的数据维度量可能是你想象不到的大,就跟我们现在所判断的用户行为的点击预估,在这个里面,可能会有上百位,上千万甚至上亿的一种维度,对于百度这样的规模公司,每一次预测可能就会有十亿次的分析,这个如果靠人是根本无法想象到的有这么大的规模。而这样的规模就只能考机器去做。
那么对于机器学习呢,现在正在如火如荼的发展当中,并且有部分的算法已经足够成熟了,并且已经应用到很多的领域当中。比如推荐系统和顶级预估
最后一点呢就是他们的参与者不同。
对于数据分析它的主要参与者可能就是数据分析师配合上一些数据和算法,然后数据分析师的能力决定结果。
对于机器学习来说,通常在机器学习中算法的中的影响倒不是多么大,比如说我们对于数据分拣也就是像是朴素贝叶斯,逻辑递归或者是决策树都可以对数据进行分类,或者是一些逼格比较高的算法也可以做分类,单丝从具体来说,算法和算法之间的差距并没有那么悬殊,关键还是看你的数据质量不同。
另外一点他们的服务用户也是不一样的,首先数据分析师的目标用户是公司高层,帮助其决策使用
。机器学习他的目标用户主要就是具体的最终用户。
从上述几个方面这就是机器学习和数据分析我所理解的根本不同。但是具体的细节远远不止文章中写的这么浅显简单,背后是一整套复杂的逻辑处理和数学逻辑方法。同时也希望大家可以和我一起多多交流,来共同加深理解。