前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >4 机器学习入门——分类和最近邻

4 机器学习入门——分类和最近邻

作者头像
天涯泪小武
发布2019-01-17 12:08:09
7500
发布2019-01-17 12:08:09
举报
文章被收录于专栏:SpringCloud专栏SpringCloud专栏

前面学过了简单的回归和决策树,当然仅仅是使用起来简单。实际上,线性回归和决策树是很多其他算法的基础,很多高级的算法都是基于它们的组合或者变种。下面我们来看一个另外的东西,叫分类。

基于回归和决策树,我们能通过给定的数据来预测一些未知结果的数据,模型能给我们输出一个可供参考的结果值。但有些时候这些数据并不能满足我们的所有好奇心。

譬如一个BMW经销店,我们的目的是研究它如何能增加销售。已有的数据是其过去所有的销售信息,购买过BMW、留意过BMW、来过店里看过哪些BMW的信息。如何通过这些数据来增加未来的销售。

通过回归:我们能给出新的BMW M5车型该如何定价。我们可以通过既往该车的价格和销量以及成交率,得出一个模型,来计算出当M5车型在什么价位时,销量和利润率最均衡,进而使利润最高。

通过决策:我们可以通过决策来判断出一个新客户、或者老客户购买M5的可能性。通过已有数据的年龄、收入、家庭情况、房产状况等属性,来预测出一个潜在的客户购买M5的可能性有多大。

或许上面的结果已经能满足部分需求了,但是我们想要的结果远不止于此。

我们还想知道“哪个年龄段的人最喜欢银色的BMW 3系”,“哪些收入人群会购买黑色的BMW”,等等一些非最终结果的信息,而更多的是一些群组的共性。这就是“群集”;

最近邻

而最近邻是这样的:当人们购买BMW M5时,他们还倾向于购买其他什么物品?这个是很有意义的,这叫做“购物篮”。据统计,超市里同时购买啤酒和纸尿裤的人很多,那么我们完全可以把啤酒摆到纸尿裤旁边,来提高销售量。同理,如果购买BMW M5的人很大比例同时购买了拉箱和高尔夫球杆,那么我们完全可以去采用赠送或者摆上这些额外商品广告的方式,来刺激销量。

OK,我们来上实例。该经销店正在开启一个推销计划,计划向其老客户推销两年延保。它拥有过去的4500个数据,数据的属性是:1 收入水平 [0=$0-$30k, 1=$31k-$40k, 2=$41k-$60k, 3=$61k-$75k, 4=$76k-$100k, 5=$101k-$150k, 6=$151k-$500k, 7=$501k+]; 2 第一辆BMW购买的年月;3 最新购买的BMW的年月;4 过去是否参加了延保活动。

该文使用的数据

,自行去gitee下载。

往weka里导入bmw-training.arff,共3000条。

由于这是一个决策事件,我们要通过数据来判断一个人是否会参加延保活动,所以首先来试试决策树。

选择J48算法,看看结果

可以看到在全部使用3000条数据作为训练集,并没有进行交叉验证的情况下,模型预测准确率59%。这个数据是比较尴尬的,也就和瞎猜差不多。当用该模型对test数据集进行验证时,只有55%。

这说明决策树在这个场景下,表现的很不好。下面就要引出我们要介绍的另一个主角了——最近邻。

同样一批数据,我们选择lazy——IBK算法,再次尝试。

可以看到在换成了最近邻后,模型匹配率已经高达了88.7%,比起决策树的效果貌似强上不少。当然这批数据是人为造的,主要是为了展示最近邻算法和决策树的区别,所以在测试集上表现就差一些。但是没关系,我们只是为了演示,来看看最近邻是怎么回事。

最近邻其实是计算各个属性间的相差值最小的过程,也就是当某条数据和待测数据的很多属性都接近时,他们结果相同的概率很高。假如你们年龄接近、收入类似、那么买相同商品的概率会比较高。这是一个计算属性间差值的算法,并不像决策树那样每个都是Yes or no的选择过程。

不过,最近邻的好处远不止于此。最近邻算法可被扩展成不仅仅限于一个最近匹配,而是可以包括任意数量的最近匹配。可将这些最近匹配称为是 “N-最近邻”(比如 3-最近邻)。而对于亚马逊这样的电商巨头,如果想要知道某个顾客最有可能购买的 12 个产品,就可以运行一个 12-最近邻算法(但亚马逊实际运行的算法要远比一个简单的 12-最近邻算法复杂)。

群组

我们再来看一下群组,这个功能常常用来对数据进行分组、来研究某个分组的特征。往往,该功能能提供出一些其他模型完全给不出的惊喜答案。

用的数据集是bmw-browsers.arff,导入weka。

这个数据集里面描述了顾客在BMW店里所到达的步骤,第一列代表看过该车,第二列到过展示厅、……看了M5、看了Z4、贷款、购买等等步骤。

这次我们使用的是Cluster选项卡,选择SimpleKMeans算法,并修改分组数量为5(视情况而定,需要多次尝试,这个数据集用5能达到最优效果)

然后点击start。看结果

这个结果就不像之前的回归、分类那么容易看懂了,这个结果是需要慢慢分析。

这个输出告诉我们每个群集是如何联系在一起的,其中 “1” 表示该群集中的每个人都有相同的值 1,而 “0” 则表示该群集中的每个人的该属性都有一个值 0。其他的数值是群集内的每个人的平均值。每个群集向我们展示了顾客内的一种行为类型,从中我们可以开始得出如下结论: 群集 0— 这个组我们可以称之为 “Dreamers”,因他们围着经销店徘徊,查看在停车场上停着的车,却不步入店面内,且更糟的是,他们没有购买过任何东西。 群集 1— 我们将这一组称为是 “M5 Lovers”,因为他们常常会径直走到 M5 车型区,对 3-系列的车型和 Z4 均视而不见。不过,他们也没有多高的购买率 — 只有 52 %。这表明存在潜在问题,也是经销店今后改进的重点,比如可以派更多的销售人员到 M5 区。 群集 2— 这个组很小,我们可以称之为 “Throw-Aways”,因为他们没有统计意义上的相关性,我们也不能从其行为得出任何好的结论。(这种情况若在群集上发生,可能表明应该减少所创建的群集的数量。) 群集 3— 这个组,我们称之为 “BMW Babies”,因为他们总是会购买一辆车而且还会支付车款。正是在这里,数据向我们显示了一些有趣的事情:他们一般会在停车场内查看各种车型,然后返回到经销店内的计算机处搜索中意的车型是否有货。他们最终会购买 M5 或 Z4 车型(但从不购买 3-系列的)。这个群集告诉经销店它应该考虑让它的搜索计算机在停车场处就能很容易地被看到(或安置一台室外的搜索计算机),并且让 M5 或 Z4 在搜索结果中更为醒目。一旦顾客决定购买汽车,他总是符合购车款的支付条件并能够圆满完成这次购买。

群集 4— 这个组我们将称之为 “Starting Out With BMW”,因为他们总是看 3-系列的车型,从不看贵很多的 M5。他们会径直步入展厅,而不会在停车场处东看西看,而且也不会使用计算机搜索终端。他们中有 50 % 会到达支付车款的阶段,但只有 32 % 会最终成交。经销店可以得出这样的结论:这些初次购买 BMW 车的顾客知道自己想要的车型是哪种( 3-系列的入门级车型)而且希望能够符合购车款的支付条件以便买得起。经销店可以通过放松购车款的支付条件或是降低 3- 系列车型的价格来提高这一组的销售。

参考:https://www.ibm.com/developerworks/cn/opensource/os-weka2/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最近邻
  • 群组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档