机器学习实践:了解数据核心的通用方法!

本文介绍了在机器学习中快速把握数据集核心的方法,涉及数据类型、统计量和分布的分析。通过区分原生类型(如缺失、文本、分类、时序)和业务类型,以及计算范围型、频率型和矩统计量,结合数据分布和异常识别,帮助读者构建对数据集的深入理解。并提供了实际案例供读者练习。
摘要由CSDN通过智能技术生成

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

 Datawhale干货 

作者:耿远昊,华东师范大学,Datawhale成员

我们常说数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。

机器学习中的数据繁多复杂,我们很容易迷失在无尽的具体数据中,迅速抓住数据集的核心与重点。因此,需要一套高效且能够广泛应用于绝大多数数据的认知方法,快速建立对未知数据模式的有效观察。

这里讲述最常用的结构化数据,按照数据的类型、分布和统计量三个角度来阐述数据观测的策略。

数据类型

现实生活中的数据类型多种多样,我们能够通过某些先验的划分将数据集的特征分类,这是后续数据处理的基础。主要分为以下两类:

原生类型

原生表示数据本身的类型,与数据含义无关。

与数据含义无关就是指我们在此并不关心数据的业务场景。例如:一个数据集中可能出现了两个字符串特征分别代表城市名与人员的身份编码,我们只需统一将其视作字符串特征。

常见的类型包括缺失类型、文本类型、分类类型以及时序类型,数据的原生类型决定了对数据的初步处理方式。

对于缺失数据,我们可以计算缺失值的比例和数量。

对于文本类型,可以利用预训练的语言模型将其映射到给定维数的特征向量,或者根据给定文本的特点来提取一些特征模式(如重复性、唯一性、某些模式的存在性等)。

对于分类类型,我们可以观察类别的均衡度、种数、比例、高频项与低频项分布特点等。

对于时序类型,我们需要观察时间戳的连续性、范围、采样频率、采样特点(如均匀性、是否按固定时间模式采样等)。

总体来说,我们在拿到数据集后应当首先判断数据的原生类型,并基于类别进行基本的特征观察。

业务类型

业务类型由数据特征代表的含义与特征所属的业务类别决定。

业务类型可分为同质特征、同类特征以及异类特征

同质特征是指原生类型相同且数据含义相似的特征,例如某个商品的近1周销售额、近1月销售额、近3月销售额这3个特征,它们就属于同质特征,对这些特征往往可以进行有意义的简单交叉组合。

同类特征是指数据含义直接相关的特征,例如现有用户购买商品的数据集,那么用户的身高、年龄性别之间就属于同类特征,它们都是用户的属性,而商品的ID、历史销量和价格也属于同类特征,它们都是商品的属性。

相对的,异类特征为数据含义并不直接相关的特征,例如商品ID和用户性别。

业务类型的判断有利于使我们快速建立对特征含义的宏观认识,这是我们后续构造有效特征的基础。

数据统计量

这里用一个数据举例:假设现在存有一个特征列var,其数据分布图如下。

plt.hist(var)

范围型统计量

范围型的统计量包括极差、分位数、排名。因此,也可以基于极值出现的位置构造其他相应统计量。

其中,极差和分位数分别反应了绝对范围和大致范围:

# 取极值和分位数
var.max()-var.min(), np.quantile(var, 0.95)-np.quantile(var, 0.05)

对于时序数据而言,一段时间内的波动情况的极值,可以认为是该段时间内数据的极差:

# 查看极值的波动情况
ts = pd.Series(
  var,
  index=pd.date_range(
    "20200101",
    periods=500,
    freq="6h"
  )
)
ts.plot()

同时,我们还应当关注取到极值的时刻:

# 查看何时会出现极值
ts.index[ts.argmax()], ts.index[ts.argmin()]

需要注意的是,极值出现的时刻可能不唯一:

# 出现多个极值的时刻
ts.index[ts==ts[ts.argmax()]], ts.index[ts==ts[ts.argmin()]]

频率型统计量

频率型统计量包括高频项频数、唯一值、符合某些条件的样本频数。其中,符合某些条件可以指某一个特征是否超过给定阈值或其他布尔条件等。

高频项指多次重复出现的数据,它的出现次数(项数)可通过value_counts获得;唯一值可以通过unique获得:

#高频项项数
var = pd.Series(var)
var.value_counts()
#只出现一次的数据
var.unique()

假设想把0.2与0.8分位数之外的值设为缺失值,可如下写:

var_temp = var.copy()
var_temp[(var<var.quantile(0.2))|(var>var.quantile(0.8))] = np.nan
var_temp.unique()

矩统计量

矩特征包括了常见的均值、方差、偏度、峰度。其中,偏度和峰度分别反应了数据分布单尾和双尾的薄厚程度,它们的计算方法分别为:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值