年货系列4-【转载】数据分析及处理&特征工程

本文是小小挖掘机2020年货的第四篇,主要回顾一下2019年转载的数据处理以及特征工程相关的文章。后续还会有更多的年货送给大家,希望大家持续关注呦~。首先感谢以下公众号提供的支持:

年货系列4-【转载】数据分析及处理&特征工程

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。因此在机器学习中,对于数据的处理和特征工程就起到了至关重要的作用。

1、基础知识

Python是最为常用的数据分析工具,因此首先需要对Python有一定的掌握和了解:

Python要点总结,我使用了100个小例子!

24式加速你的Python

你应该知道的那些Jupyter Notebook奇技

对Python有了一定的基础之后,需要学习常用的数据分析工具,最为主要的就是NumPy和Pandas,下面的文章带你回顾一下Pandas和Numpy的基本用法,以及如何进行性能优化:

盘一盘 NumPy (上)

盘一盘NumPy (下)

盘一盘 Pandas (上)

盘一盘 Pandas (下)

Pandas中文官档 ~ 基础用法1

Pandas中文官档~基础用法2

Pandas常见的性能优化方法

总结100个Pandas中序列的实用函数

一行代码将Pandas加速4倍

Pandas和Numpy在处理小规模数据集的时候还是比较好用的,当数据量扩大时,需要Spark、Hive等数据处理和分析工具,Spark是目前企业中最为常用的工具,其具体有Scala和Python等的实现方式,下文带你快速入门Scala的语法:

3小时Scala入门

在大数据分析中,常常出现数据倾斜的情况,所谓数据倾斜,在MapReduce编程模型中十分常见,就是大量的相同key被partition分配到一个分区里,造成了"一个人累死,其他人闲死"的情况,这违背了并行计算的初衷,导致整体效率低下。下文详细总结了可能导致数据倾斜出现的原因,以及一些处理方法:

好文分享|一文带你搞清楚什么是“数据倾斜”

2、数据可视化

在数据分析的过程中,数据可视化能够帮助我们更加形象的了解数据情况,常用的数据可视化工具有Matplotlib和PyEcharts等:

盘一盘 Python  - PyEcharts (v1.0)

完整版|Matplotlib 可视化最有价值的 50 个图表

31个惊艳的数据可视化作品,让你感受“数据之美”!

3、特征工程

一个完整的特征工程,大致可以分为探索性数据分析、数据预处理、特征构建以及特征筛选等过程。

探索性数据分析(EDA, Exploratory Data Analysis)过程,其具体的目标大致包括:1)快速了解数据集:行/列数、数据丢失情况、数据的类型、数据预览。2)清除脏数据:处理丢失的数据、无效的数据类型和不正确的值。3)可视化数据分布:条形图,直方图,箱型图等。4)计算并可视化展示变量之间的相关性(关系):热图 (heatmap)。下面的文章,通过案例带你了解EDA的基本流程

Python探索性数据分析,这样才容易掌握

当然,也有一些开源的工具库可以帮你快速生成数据分析报告,如下面的两篇文章介绍了两种常见的工具:

pandas_profiling:一行代码生成你的数据分析报告

easyeda,一个简单实用的探索性数据分析工具

数据预处理往往包括缺失值处理、数据标准化和归一化等过程,而特征构建过程包括类别特征编码、连续特征分箱、文本特征构建、时空特征构建、基于模型的特征构建(如RBM)。对上面的几个过程,这里先做一个基本的总结:

1)缺失值处理:填充(均值填充、-999填充、中位数填充等方式)或删除

2)数据标准化:Z分数标准化

3)数据归一化:MinMax归一化、MaxAbs归一化、行归一化等方式

4)类别特征编码:标签编码(LabelEncode)、独热编码(OneHotEncode)、标签二值化(LabelBinarizer)、多标签二值化(MultiLabelBinarizer)、平均数编码(Mean Encoding)等方式

5)连续特征分箱:包括无监督分箱方法和有监督分箱方法。无监督分箱法具体包括自定义分箱、等距分箱、等频分箱、聚类分箱、二值化(Binarization),而有监督分箱法包括卡方分箱法、最小熵法分箱等

6)文本特征构建:包括文本统计特征、字典映射、标签二值化(LabelBinarizer)、多标签二值化(MultiLabelBinarizer)、特征哈希(Feature Hashing)、词袋模型(BOW)、TF-IDF、LDA主题模型、词嵌入向量(Word Embedding)等方法

7)时间特征构建:包括连续值时间特征、离散值时间特征、时间序列聚合特征(平均值、最小值、最大值)、时间序列历史特征(前一(或n)个窗口的取值、周期性时间序列前一(或n)周期的前一(或n)个窗口的取值)、时间序列复合特征如趋势特征(User一天对Item的行为次数/User三天对Item的行为次数的均值,表示短期UserItem的热度趋势)、自相关性特征等

8)空间特征构建:包括按经纬度对空间进行划分的特征、使用坐标拾取系统获取行政区域信息(类别特征)、结合其他地址计算距离等

9)受限玻尔兹曼机RBM

上面的总结来源于下面的文章,建议大家精读:

特征工程系列:特征预处理(上)

特征工程系列:特征预处理(下)

一文讲解特征工程 | 经典外文PPT及中文解析

特征工程|时间特征构造以及时间序列特征构造

特征工程|空间特征构造以及文本特征构造

手把手教你入门和实践特征工程 的全方位万字笔记,附代码下载

特征筛选是排除无效/冗余的特征的过程,可以加速模型的训练,特征选择的常见方法可以分为Filter方法(过滤式)、Wrapper方法(封装式)和Embedded方法(嵌入式),下面几篇文章带你了解具体的特征筛选的方法:

特征工程系列:特征筛选的原理与实现(上)

特征工程系列:特征筛选的原理与实现(下)

机器学习中特征选择怎么做?这篇文章告诉你

GitHub开源项目!一款功能强大的特征选择工具

4、经验总结

最后是一些经验总结以及常用的数据分析方法和术语的总结:

算法工程师该如何提高数据敏感度?

Python数据分析学习路线个人总结

推荐收藏 | 统计学常用的数据分析方法大总结!

推荐收藏 | 100个数据分析常用指标和术语

年货系列4-【转载】数据分析及处理&特征工程