数据挖入门:从这套完整的知识体系出发!

挖数网精选
挖数网精选
挖数网精选
446
文章
0
评论
2020-07-1013:07:00 评论 1,330 3711字
摘要

入门数据挖掘,必须理论结合实践。本文梳理了数据挖掘知识体系,帮助大家了解和提升在实际场景中的数据挖掘技能。

入门数据挖掘,必须理论结合实践。本文梳理了数据挖掘知识体系,帮助大家了解和提升在实际场景中的数据挖掘技能。

一.数据分析

探索性数据分析(Exploratory Data Analysis,EDA)是指对已有数据在尽量少的先验假设下通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。

数据挖入门:从这套完整的知识体系出发!

常用的第三方库

数据科学库:

  • pandas:用于分组、过滤和组合数据,还提供了时间序列功能。
  • numpy:处理大型的多维数组和矩阵
  • scipy:用于解决线性代数、概率论、积分计算等任务

数据可视化库:

  • matplotlib:构建各种图表,从直方图和散点图到非笛卡尔坐标图等
  • seaborn:提供了丰富的可视化图库,包括时间序列、联合图和小提琴图等复杂的类型。

常用函数

数据简略观测:

  • head():观察数据读取是否准确,常读取前5行数据。
  • shape:读取数据集的维度。

数据总览:

  • describe():包含每列的统计量,个数、平均值、方差、最小值、中位数、最大值等。
  • 数据类型info():了解数据每列的type,了解是否存在除了nan以外的特殊符号异常。

数据检测

缺失值检测:

  • 查看每列的存在nan情况
  • 排序函数sort_values():将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的
  • 可视化nan值与缺失值

异常值检测:

  • 3σ原则:拉依达准则,该准则具体来说,就是先假设一组检测数据只含有随机误差,对原始数据进行计算处理得到标准差,然后按一定的概率确定一个区间,认为误差超过这个区间的就属于异常值。
  • 箱线图:依据实际数据绘制,真实、直观地表现出了数据分布的本来面貌,且没有对数据作任何限制性要求(3σ原则要求数据服从正态分布或近似服从正态分布),其判断异常值的标准以四分位数和四分位距为基础。

预测分布

总体分布概况:

  • 无接触约翰逊分布
  • 正态分布

数据挖入门:从这套完整的知识体系出发!

很多模型假设数据服从正态分布,数据整体服从正态分布,样本均值和方差则相互独立。当样本不服从正态分布时,可以做如下转换:

  • 线性变化z-scores:基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x’
  • Boxcox变换:一种广义幂变换方法,是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。
  • yeo-johnson变换:是幂变换(power transformation)的方法之一,通过构建一组单调函数对随机变量进行数据变换。

查看skeness 和kurtosis:

  • skeness:衡量随机变量概率分布的不对称性,是相对于平均值不对称程度的度量,通过对偏度系数的测量,我们能够判定数据分布的不对称程度以及方向。
  • kurtosis:研究数据分布陡峭或平滑的统计量,通过对峰度系数的测量,我们能够判定数据相对于正态分布而言是更陡峭/平缓。

数据挖入门:从这套完整的知识体系出发!

预测值的具体频数:

当某范围预测值很少时,可将其当作异常值处理填充或删除。若频数很失常,需对数据进行处理。例如进行log变换,使数据分布较均匀,可据处理后的数据进行预测,这也是预测问题常用的技巧。

特征分析

数字特征:

相关性分析:对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素之间的相关密切程度。

特征的偏度和峰度

数字特征分布可视化:

pd.melt():处理数据,透视表格,可将宽数据转化为长数据,以便于后续分析。形成的数据即为,键:各特征名称,值:特征对应的值

sns.FacetGrid() :先sns.FacetGrid()画出轮廓,再map()填充内容

sns.pairplot():展示变量两两之间的关系(线性或非线性,有无较为明显的相关关系)。

类别特征:

unique分布:对于一维数组或者列表,unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表。

可视化:

箱型图可视化:直观识别数据中的离群点,判断数据离散分布情况,了解数据分布状态。

小提琴图可视化:用于显示数据分布及概率密度,这种图表结合了箱形图和密度图的特征,主要用来显示数据的分布形状

柱形图可视化类别

每个类别频数可视化

二.数据清洗

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。俗话说:garbage in, garbage out。分析完数据后,特征工程前,必不可少的步骤是对数据进行清洗。

数据清洗作用是利用有关技术如数理统计、数据挖掘或预定义的清理规则将脏数据转化为满足数据质量要求的数据。主要包括缺失值处理、异常值处理、数据分桶、特征归一化/标准化等流程。

数据挖入门:从这套完整的知识体系出发!

缺失值处理

关于缺失值处理的方式, 有几种情况:

  • 不处理:针对xgboost等树模型,有些模型有处理缺失的机制,所以可以不处理;
  • 如果缺失的太多,可以考虑删除该列;
  • 插值补全(均值,中位数,众数,建模预测,多重插补等);
  • 分箱处理,缺失值一个箱。

异常值处理

常用的异常值处理操作包括BOX-COX转换(处理有偏分布),箱线图分析删除异常值, 长尾截断等方式, 当然这些操作一般都是处理数值型的数据。

BOX-COX转换:用于连续的变量不满足正态的时候,在做线性回归的过程中,一般需要做线性模型假定。

箱线图分析:依据实际数据绘制,真实、直观地表现出了数据分布的本来面貌,其判断异常值的标准以四分位数和四分位距为基础。

数据分桶

连续值经常离散化或者分离成"箱子"进行分析, 为什么要做数据分桶呢?

离散后稀疏向量内积乘法运算速度更快,计算结果也方便存储,容易扩展

离散后的特征对异常值更具鲁棒性,如 age>30 为 1 否则为 0,对于年龄为 200 的也不会对模型造成很大的干扰

LR 属于广义线性模型,表达能力有限,经过离散化后,每个变量有单独的权重,这相当于引入了非线性,能够提升模型的表达能力,加大拟合

离散后特征可以进行特征交叉,提升表达能力,由 M+N 个变量编程 M*N 个变量,进一步引入非线形,提升了表达能力

特征离散后模型更稳定,如用户年龄区间,不会因为用户年龄长了一岁就变化

当然还有很多原因,LightGBM 在改进 XGBoost 时就增加了数据分桶,增强了模型的泛化性。现在介绍数据分桶的方式有:

等频分桶:区间的边界值要经过选择,使得每个区间包含大致相等的实例数量。比如说 N=10 ,每个区间应该包含大约10%的实例。

等距分桶:从最小值到最大值之间,均分为 N 等份;

Best-KS分桶:类似利用基尼指数进行二分类;

卡方分桶:自底向上的(即基于合并的)数据离散化方法。它依赖于卡方检验:具有最小卡方值的相邻区间合并在一起,直到满足确定的停止准则。

数据转换

数据转换的方式有:

  • 数据归一化(MinMaxScaler)
  • 标准化(StandardScaler)
  • 对数变换(log1p)
  • 转换数据类型(astype)
  • 独热编码(OneHotEncoder)
  • 标签编码(LabelEncoder)
  • 修复偏斜特征(boxcox1p)等

三.特征工程

特征工程指的是把原始数据转变为模型训练数据的过程,目的是获取更好的训练数据特征。特征工程能使得模型的性能得到提升,有时甚至在简单的模型上也能取得不错的效果。

数据挖入门:从这套完整的知识体系出发!

特征构造

特征构造的时候需要考虑数值特征,类别特征,时间特征。

数值特征,一般会尝试一些它们之间的加减组合(当然不要乱来,根据特征表达的含义)或者提取一些统计特征

类别特征,我们一般会尝试之间的交叉组合,embedding也是一种思路

时间特征,这一块又可以作为一个大专题来学习,在时间序列的预测中这一块非常重要,也会非常复杂,需要就尽可能多的挖掘时间信息,会有不同的方式技巧。

特征选择

特征选择主要有两个功能:

减少特征数量、降维,使模型泛化能力更强,减少过拟合

增强对特征和特征值之间的理解

通常来说,从两个方面考虑来选择特征:

特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。

特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。

根据特征选择的形式又可以将特征选择方法分为3种:

过滤法(Filter):按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。

包装法(Wrapper):根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。

嵌入法(Embedded):先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。

降维

数据特征维度太高,首先会导致计算很麻烦,其次增加了问题的复杂程度,分析起来也不方便。但盲目减少数据的特征会损失掉数据包含的关键信息,容易产生错误的结论,对分析不利。

PCA降维方法,既可以减少需要分析的指标,而且尽可能多的保持了原来数据的信息。

但要注意一点, 特征选择是从已存在的特征中选取携带信息最多的,选完之后的特征依然具有可解释性,而PCA,将已存在的特征压缩,降维完毕后不是原来特征的任何一个,也就是PCA降维之后的特征我们根本不知道什么含义了。

End.

作者:王瑞楠、吴忠强、徐韬、田杨军

来源:Datawhale

本文为转载分享,如侵权请联系后台删除

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: