܄

干货来袭!以性别预测为例,谈谈数据挖掘中的分类问题

【数据猿导读】 互联网的迅猛发展,催生了数据的爆炸式增长。面对海量的数据,如何挖掘数据的价值,成为一个越来越重要的问题。本文首先介绍数据挖掘的基本内容,然后按照数据挖掘基本的处理流程,以性别预测实例来讲解一个具体的数据挖掘任务是如何实现的

干货来袭!以性别预测为例,谈谈数据挖掘中的分类问题

数据挖掘的基本内容

数据挖掘是一种通过分析海量数据,从数据中提取潜在的但是非常有用的模式的技术。

数据挖掘任务可以分为预测性任务和描述性任务。预测性任务主要是预测可能出现的情况;描述性任务则是发现一些人类可以解释的模式或规律。数据挖掘中比较常见的任务包括分类、聚类、关联规则挖掘、时间序列挖掘、回归等,其中分类、回归属于预测性任务,聚类、关联规则挖掘、时间序列分析等则都是解释性任务。

按照数据挖掘的基本流程,来谈谈分类问题

在简单介绍了数据挖掘的基本内容后,我们来切入主题。以数据挖掘的流程为主线,穿插性别预测的实例,来讲解分类问题。根据经典教科书和实际工作经验来看,数据挖掘的基本流程主要包括五部分,首先是明确问题,第二是对数据进行预处理,第三是对数据进行特征工程,转化为问题所需要的特征,第四是根据问题的评价标准选择最优的模型和算法,最后将训练的模型用于实际生产,产出所需结果(如图1所示)。

图1 数据挖掘的基本流程

下面我们分别介绍各环节涉及的主要内容:

1.明确问题和了解数据

这一环节最重要的是需求和数据的匹配。首先需要明确需求,有着怎样的需求?是需要做分类、聚类、推荐还是其他?实际数据是否支持该需求?比如,分类问题需要有或者可以构造出training set,如果没有training set,就没有办法按照分类问题来解决。此外,数据的规模、重要feature的覆盖度等,也是需要特别考虑的问题。

2.数据预处理

1)数据集成,数据冗余,数值冲突

数据挖掘中准备数据的时候,需要尽可能地将相关数据集成在一起。如果集成的数据中,有两列或多列值一样,则不可避免地会产生数值冲突或数据冗余,可能需要根据数据的质量来决定保留冲突中的哪一列。

2)数据采样

一般来说,有效的采样方式如下:如果样本是有代表性的,则使用样本数据和使用整个数据集的效果几乎是一样的。抽样方法有很多,需要考虑是有放回的采样,还是无放回的采样,以及具体选择哪种采样方式。

3)数据清洗、缺失值处理与噪声数据

现实世界中的数据,是真实的数据,不可避免地会存在各种各样的异常情况。比如某列的值缺失,或者某列的值是异常的,所以,我们需要在数据预处理阶段进行数据清洗,来减少噪音数据对模型训练和预测结果的影响。

3.特征工程

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。下面的观点说明了特征工程的特点和重要性。

1)特征:对所需解决问题有用的属性

特征是对你所需解决问题有用或者有意义的属性。比如,在计算机视觉领域,图片作为研究对象,可能图片中的一个线条就是一个特征;在自然语言处理领域中,研究对象是文档,文档中的一个词语的出现次数就是一个特征;在语音识别领域中,研究对象是一段话,phoneme(音位)可能就是一个特征。

2)特征的提取、选择和构造

既然特征是对我们所解决的问题最有用的属性。首先我们需要处理的是根据原始数据抽取出所需要的特征。亟需注意的是,并不是所有的特征对所解决的问题产生的影响一样大,有些特征可能对问题产生特别大的影响,但有些则可能影响甚微,和所解决的问题不相关的特征需要被剔除掉。因此,我们需要针对所解决的问题选择最有用的特征集合,一般可以通过相关系数等方式来计算特征的重要性。当然,有些模型本身会输出feature重要性,如Random Forest等算法。而对于图片、音频等原始数据形态特别大的对象,则可能需要采用像PCA这样的自动降维技术。另外,还可能需要本人对数据和所需解决的问题有深入的理解,能够通过特征组合等方法构造出新的特征,这也正是特征工程被称之为是一门艺术的原因之一。

实例讲解(一)

接下来,我们通过一个性别预测的实例来说明数据挖掘处理流程中的“明确问题”、“数据预处理”和“特征工程”三个部分。

假设我们有如下两种数据,想根据数据训练一个预测用户性别的模型。

数据1: 用户使用App的行为数据;

数据2: 用户浏览网页的行为数据;

第一步:明确问题

首先明确该问题属于数据挖掘常见问题中的哪一类,是分类、聚类,推荐还是其他?假设本实例数据有部分数据带有男女性别,则该问题为分类问题;

数据集是否够大?我们需要足够大的数据来训练模型,如果数据集不够大,那么所训练的模型和真实情况偏差会比较大;

数据是否满足所解决问题的假设?统计发现男人和女人使用的App不太一致,浏览网页的内容也不太一致,则说明我们通过数据可以提取出对预测性别有用的特征,来帮助解决问题。如果根据数据提取不出有用的特征,那么针对当前数据,问题是没法处理的。

第二步:数据预处理

实际工作中,在数据预处理之前需要确定整个项目的编程语言(如Python、Java、 Scala)和开发工具(如Pig、Hive、Spark)。通常而言,编程语言和开发工具的选择都依赖于所处的数据平台环境;

选取多少数据做模型训练?这是常说的数据采样问题。一般认为采样数据量越大,对所解决的任务帮助越大,但是数据量越大,计算代价也越大,因此,需要在解决问题的效果和计算代价之间折中一下;

把所有相关的数据聚合在一起,如果有相同字段则存在数据冗余的问题,需要根据数据的质量剔除掉冗余的数据;数据中可能存在异常值,则需要过滤掉;数据中可能有的值有缺失,则需要填充默认值。

数据预处理后可能的结果(如表1、表2所示):

表1 数据1预处理后结果

表2 数据2预处理后结果

第三步:特征工程

由于数据1和数据2的类型不太一样,所以进行特征工程时,所采用的方法也不太一样,下面分别介绍一下:

数据1的单个特征的分析主要包括以下内容:

数值型特征的处理,比如App的启动次数是个连续值,可以按照低、中、高三个档次将启动次数分段成离散值;

类别型特征的处理,比如用户使用的设备是三星或者联想,这是一个类别特征,可以采用0-1编码来处理;

需要考虑特征是否需要归一化。

数据1的多个特征的分析主要包括以下内容:

使用的设备类型是否决定了性别?需要做相关性分析,通常计算相关系数;

App的启动次数和停留时长是否完全正相关,结果表明特别相关,则说明App的停留时长是无用特征,将App的停留时长这个特征过滤掉;

如果特征太多,可能需要做降维处理。

2.数据2的特征工程

数据2是典型的文本数据,文本数据常用的处理步骤包含以下几个部分:

网页 → 分词 → 去停用词 → 向量化

分词。可以采用Jieba分词(Python库)或张华平老师的ICTCLAS;

去除停用词。停用词表除了加入常规的停用词外,还可以将DF(Document Frequency)比较高的词加入停用词表,作为领域停用词;

向量化。一般是将文本转化为TF或TF-IDF向量。

特征工程后数据1的结果(如表3所示,A1低表示启动App1的次数比较低,以此类推,is_hx表示设备是否是华为,Label为1表示Male)。

表3 数据1特征工程后结果

特征工程后数据2的结果(如表4所示,term1=5表示user1浏览的网页中出现词1的频率,以此类推)。

表4 数据2特征工程后结果

第四步:算法和模型

做完特征工程后,下一步就是选择合适的模型和算法。算法和模型的选择主要考虑一下几个方面:

训练集的大小;

特征的维度大小;

所解决问题是否是线性可分的;

所有的特征是独立的吗?

需要不需要考虑过拟合的问题;

对性能有哪些要求?

上面中提到的很多问题没法直接回答,可能我们还是不知道该选择哪种模型和算法,但是奥卡姆剃刀原理给出了模型和算法的选择方法:

Occam’s Razorprinciple: use the least complicated algorithm that can address your needs and only go for something more complicated if strictly necessary.


来源:CSDN

声明:数据猿尊重媒体行业规范,相关内容都会注明来源与作者;转载我们原创内容时,也请务必注明“来源:数据猿”与作者名称,否则将会受到数据猿追责。

刷新相关文章

#榜样的力量#内蒙古自治区互联网医疗服务系统丨数据猿新冠战“疫”公益策划
#榜样的力量#内蒙古自治区互联网医疗服务系统丨数据猿新冠战“...
#后疫情时代的新思考#构建工业互联网新生态,在疫情“新常态”下砥砺前行丨数据猿公益策划
#后疫情时代的新思考#构建工业互联网新生态,在疫情“新常态”...
“德美日”工业互联网强国启示录,哪里有机会or大坑? | 卓见线上沙龙
“德美日”工业互联网强国启示录,哪里有机会or大坑? | 卓...

我要评论

精品栏目

[2017/12/19]

大数据24小时

More>

[2017/12/18-22]

大数据周周看

More>

[2017/12/18-22]

大数据投融资

More>

[2017/12/18-22]

大咖周语录

More>

[2017/12/13-20]

大数据周聘汇

More>

[2017/12/12-19]

每周一本书

More>

返回顶部