摘要: 分类问题是生活中最常遇到的问题之一。普通人在做出选择之前,可能会犹豫不决,但对机器而言,则是唯一必选的问题。我们可以通过算法生成模型去帮助我们快速的做出选择,而且保证误差最小。充足的样本,合适的算法可以透过表象的类别,进而挖掘其内在的联系、区别,找出最佳的的属性来区分每个样本的类别。

模型训练与在线预测服务、推荐算法四部曲、机器学习PAI实战、更多精彩,尽在开发者分会场

【机器学习PAI实战】—— 玩转人工智能之综述

【机器学习PAI实战】—— 玩转人工智能之商品价格预测

【机器学习PAI实战】—— 玩转人工智能之美食推荐

【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像

前言

分类问题是生活中最常遇到的问题之一。普通人在做出选择之前,可能会犹豫不决,但对机器而言,则是唯一必选的问题。我们可以通过算法生成模型去帮助我们快速的做出选择,而且保证误差最小。充足的样本,合适的算法可以透过表象的类别,进而挖掘其内在的联系、区别,找出最佳的的属性来区分每个样本的类别。所以说学习和应用机器学习的算法,要求我们必须非常了解数据实例,每个样本数据有多少个特征,哪些特征是敏感的,特征分布如何。只有充分了解数据,才能选择最合适的算法。

场景描述

单身王女士经常逛某相亲网站,前前后后浏览了1000个男生,并给他们打标了,不喜欢、一般喜欢、很喜欢三个类别。该相亲网站的工程师,决定开发一个算法推荐模型,给王女士依次推荐很喜欢,一般喜欢的男生。并可以将这个算法模型应用到网站,吸引更多的单身青年注册使用,并可以找到自己喜欢的男/女朋友。

数据分析

首先将离线数据导入到odps表中。我们主要介绍使用散点图和箱线图来直观的观测分析数据。然后根据上面的具体案例来学会如何看,理解这个图形。数据选自《机器学习实战》一书。

散点图

详情

  • 拖拽统计分析-散点图。如图所示,选择观测的特征。

  • 右键查看分析报告

  • 散点图介绍

1,反对角线上的三个方形,在方形左上角表明三个特征的名称。而且这个三个图像与其他图形不相同,横纵坐标都是一个特征,则对角直线就代表该特征在不同类别下分布密度。比如Play这个方形,我们发现黄色部分集中在下方,蓝色部分主要分布在中间,绿色主要分布在中上方。

2,除了反对角线上的三个方形,其他方形则是反映了两两特征之间的分布情况。比如第一排第一列(1,1),横坐标为play,纵坐标为mileage。从这个方形上可以直观观测出不同颜色的散点集中分布在不同区域。

3,关于反对角线对称的两个方形,则是两个特征交换纵横坐标的散点图。

4,在整个散点图的下方,可以勾选你希望对比的特征。

  • 通过上面散点图,我们可以比较清晰得出几个结论。

1,ice_cream特征对分类不敏感。从图(1,2),(2,2)我们可以直观看出,ice_cream在所有类别中几乎都是均匀分布。

2,mileage,play 特征可以将类别明显的划分成三个区域。说明这两个特征绝大程度上决定了类别的划分。

  • 散点图进阶使用

在任意个方形内,拖拽一个方形区域,可以选出满足这些特征的样本,更加直观的观测,这些样本在不同方形内的分布。如上图所示,我们选中了图(3,3)内一个方形区域,可以看出这些样本在ice_cream特征下是均匀分布,在其他两个特征下,都可以通过一个超平面划分。

箱线图

详情

  • 拖拽统计分析-箱线图。如图所示,选择观测的特征。

  • 箱线图介绍

1,箱线图组件分两个tab分别显示箱线图和扰动点图,在左上角都可以选择观测不同的特征。右侧显示该特征下,每个类别的分布情况。

2,箱线图介绍,每个类别的箱线图,从上到下一共有5条横线。

3,內限不是样本的最上限,外限也是不最下限,超过內限和外限的样本为异常样本。

4,结合扰动点图,我们可以发现观测到异常样本的大致数量多少。

  • 箱线图分析

1,通过上面的图,我们可以关注paly属性在不同类别下的分布。对比ice_cream特征

我们发现paly特征的属性值在不同类别下有明显有倾向性分布。而ice_cream在不同类别下分布几乎是一样的,这也验证了我们通过散点图得出的结论。

场景抽象化

现在回到我们一开始遇到的问题。如何用算法帮助工程师为王女士推荐其他她可以喜欢的男生呢。其实这是一个简单的问题,就是把所有的男生分为三类,不喜欢,一般喜欢,很喜欢。对于一个没有标签的男生(x),我们分出其最可能属于哪个类别的概率(p)。

在这种情况下,我们就选出这个男生属于类别A。如何计算这个概率,不同算法有不同的计算方法。比如K紧邻算法,选出离这个样本点最近的K个样本,通过属于A的样本个数除以K就可以得出属于A的概率。随机森林,则是通过投票的方式,票数多的类别就是样本最终划分的类别。

模型选择

通过前面数据分析,我们知道了数据的一些特性。

1,mileage数值比其他两个特征大很多,在计算特征间的距离时,所在权重就比较大。所有选择K近邻可以会造成较大误差。

2,AdaBoost算法,随机森林以及逻辑回归算法都可以处理数值型数据,所以这三种算法我们都会尝试,并评估者三个算法的准确率。

数据处理

我们可以使用统计分析-全表统计观测数据是否有空值,以及一些方差等的统计信息。在本案例中我仅做缺失值检测。

模型训练

我们分别选择了三个分类算法,随机森林、AdaBoost、K近邻算法。分别做了训练,预测和算法评估。在下面我们会通过测试评估来选择合适的方案。

模型测试

  • 随机森林算法

  • AdaBoost算法

  • K近邻算法

通过上面的混淆矩阵,可以很直观的看出,在算法准确度层面,AdaBoost>随机森林>K近邻。也验证了我们前面通过数据分析得出的结论,在某个特征的值过大时,K近邻算法容易出现较大的误差。当然我们可以通过归一化来处理这些特征值,只是这样做在服务测试时,输入的数据就必须是归一化的值而不是真实数据,在实际使用中会有一些麻烦。

模型部署和测试

模型的部署和测试参见【玩转人工智能—基于PAI的机器学习实战系列二】商品价格预测

总结

AdaBoost之所以有如此好的效果,其功劳要归功于集成算法的提出和应用。集成算法通过组合多个分类器的结果,并赋予不同的权重值,而获得了比任一个分类器都要好的结果。当然这也做也有一定风险,比如说有可能加深了分类器的过拟合问题。

在分类问题上,我们最常遇到的问题就样本分布不均衡的问题。就是说正样本多与负样本,某个类别的样本多与其他类别的样本。这样的数据集在大部分分类器上都会存在问题,通常情况下,我们可以通过欠抽样或者过抽样来解决这类问题,但是在实际操作中,我们需要注意下,如何才能在尽可能不影响实际真实性的情况下做到很好的抽样。


本文作者:伊逍

原文链接

本文为云栖社区原创内容,未经允许不得转载。

【机器学习PAI实战】—— 玩转人工智能之你最喜欢哪个男生?的更多相关文章

  1. 【机器学习PAI实战】—— 玩转人工智能之综述

    摘要: 基于人工智能火热的大背景下,通过阿里云的机器学习平台PAI在真实场景中的应用,详细阐述相关算法及使用方法,力求能够让读者读后能够马上动手利用PAI搭建属于自己的机器学习实用方案,真正利用PAI ...

  2. 【机器学习PAI实战】—— 玩转人工智能之商品价格预测

    摘要: 我们经常思考机器学习,深度学习,以至于人工智能给我们带来什么?在数据相对充足,足够真实的情况下,好的学习模型可以发现事件本身的内在规则,内在联系.我们去除冗余的信息,可以通过最少的特征构建最简 ...

  3. 【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像

    前言 深度学习作为人工智能的重要手段,迎来了爆发,在NLP.CV.物联网.无人机等多个领域都发挥了非常重要的作用.最近几年,各种深度学习算法层出不穷, Generative Adverarial Ne ...

  4. 【机器学习PAI实战】—— 玩转人工智能之美食推荐

    前言 在生活中,我们经常给朋友推荐一些自己喜欢的东西,也时常接受别人的推荐.怎么能保证推荐的电影或者美食就是朋友喜欢的呢?一般来说,你们两个人经常对同一个电影或者美食感兴趣,那么你喜欢的东西就很大程度 ...

  5. [阿里云-机器学习PAI快速入门与业务实战 ]课时1-机器学习背景知识以及业务架构介绍

    什么是机器学习? 机器学习指的是机器通过统计学算法,对大量的历史数据进行学习从而生成经验模型,利用经验模型指导业务. 目前机器学习主要在一下一些方面发挥作用: 营销类场景:商品推荐.用户群体画像.广告 ...

  6. Python玩转人工智能最火框架 TensorFlow应用实践 ☝☝☝

    Python玩转人工智能最火框架 TensorFlow应用实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 全民人工智能时代,不甘心只做一个旁观者,那就现在 ...

  7. 天猫精灵业务如何使用机器学习PAI进行模型推理优化

    引言 天猫精灵(TmallGenie)是阿里巴巴人工智能实验室(Alibaba A.I.Labs)于2017年7月5日发布的AI智能语音终端设备.天猫精灵目前是全球销量第三.中国销量第一的智能音箱品牌 ...

  8. Python玩转人工智能最火框架 TensorFlow应用实践

    Python玩转人工智能最火框架 TensorFlow应用实践 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课 ...

  9. 深度实战玩转算法, Java语言7个经典应用诠释算法精髓

    深度实战玩转算法,以Java语言主讲,通过7款经典好玩游戏,真正将算法用于实际开发,由算法大牛ACM亚洲区奖牌获得者liuyubobobo主讲,看得见的算法,带领你进入一个不一样的算法世界,本套课程共 ...

随机推荐

  1. 嘴巴题7 BZOJ1426: 收集邮票

    Time Limit: 1 Sec Memory Limit: 162 MB Submit: 546 Solved: 455 [Submit][Status][Discuss] Description ...

  2. [转]WPF 构建无外观(Lookless)控件

    构建一个用户可以使用Template属性设置外观的WPF控件需要以下几步 1.继承自System.Windows.Controls.Control 2.设置DefaultStyleKeyPropert ...

  3. 物理机多磁盘u盘安装centos

    材料:一枚u盘,一块120G固态硬盘和一块500G的硬盘的华硕笔记本电脑,原系统为windows10 需求:将centos7.5系统安装到固态硬盘,原系统不要了 遇到的问题:开机后进入不了装机界面 解 ...

  4. Python实现十大经典排序算法(史上最简单)

    十大排序算法(Python实现)一. 算法介绍及相关概念解读 算法分类十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn), ...

  5. CImage 是基于GDI+的,很老的一篇文章,我很久很久以前看到过的

    在许多资料上都说CImage类是基于GDI+的,但是为什么是基于GDI+的呢? 因为使用这个类时,并没有加入#include <gdiplus.h> ,也没有在程序开始和结束时分别写GDI ...

  6. 移动端meta汇总

    part1 一.天猫(http://m.tmall.com) <title>天猫触屏版</title> <meta content="text/html; ch ...

  7. Mac安装软件新方法:Homebrew-cask

    Homebrew是Ruby社区极富想象力的一个作品,使得Mac下安装Mysql等常用包不再困难.那么,是否也可以通过brew install mysql这样简单的方式来安装chrome浏览器? 近期, ...

  8. python禁止函数修改列表的实现方法

    python禁止函数修改列表的实现方法 有时候,需要禁止函数修改列表.例如要对裂变进行修改操作,也要保留原来的未打印的设计列表,以供备案.为解决这个问题,可向函数传递列表的副本而不是原件:这样函数所做 ...

  9. 用navicat把MYSQL一张表的数据批追加到另外一张表

    1. 表结构完全一样 insert into 表1 select * from 表22. 表结构不一样(这种情况下得指定列名) insert into 表1 (列名1,列名2,列名3) select ...

  10. java.lang.IllegalStateException: 1 matchers expected, 5 recorded.

    这是一个很神奇的错误. 常规的出错是因为在mock方法里,其中某一个或者几个参数使用了EasyMock.anyxx(),而其他的使用了具体的值. java.lang.IllegalStateExcep ...