本系列只用于自己做笔记用.
来源 : 实用机器学习 李沐
https://www.bilibili.com/video/BV1Xh411p7M9
2.2 数据清理
Data Errors
现实中, 当我们进行模型训练时, 如果我们使用的不是标准数据集, 我们就会难以评判模型的优劣. 特别是当用于训练的数据并不干净的时候, 模型可能会难以收敛, 或者会损失精度.
一个好的模型通常能容纳错误的数据, 但是会造成一定程度的精度下降.
而当这个模型被部署在online并且接受新的数据时, 将可能引发新的错误. (如使用self supervised learning时, 标记的label不干净, 但是又会重新放入到网络中进行训练)
Types of data errors
Outliers : 数据分布不在正常的分布中.
Rule violations : 违背规则. 如某个必要的要素缺失.
Pattern violations : 违背设定的格式/语法. 如价格设置了美元, 但是给出的是rmb.
How to detect
Outliers : 类别修改, boxplot
Rule : functional dependencies , Denial constraints
Pattern : syntactic, semantic
数据变换
raw data 到我们需要的数据大体上是不一样的, 这时候需要进行数据变形.
我们通常把数据标注后, 特征工程前的过程, 叫做数据变形.
Normalization
Min-Max normalization. 线性的划分到[a,b]中.
Z-score normalization. 0 mean 1 standard deviation.
Decimal scaling. minimized to [-1, 1].
Log scaling. 相比于数值, 更注重比例.
Image Transformations
图片占用空间较大, 而且储存成本较高.
一般我们会使用下采样和剪切的方法. 而且机器学习对于低分辨率图像也有较好的适应性.
需要注意的是, 如果使用jpeg, 质量为中等质量(80%~90%), 大概会有1%的精度下降.
也可以使用whitening让输入冗余性更小, 且模型会收敛的更快.
Video Transformation
视频预处理跟图像大致相同, 都是用于平衡储存空间、图像质量和读取速度的.
通常使用的是10s内的短视频/片段(e.g. 包含一个动作)
复杂的视频也无法被神经网络所理解.
难点 : 不同的视频会有不同的压缩算法, 需要在储存和采样解码速度之间做妥协. 为了加速, 有时会使用GPU解码.
Text Transformation
词根化、语法化.
am, is, are -> be
car, cars, car's, cars' -> car
词源化tokenization.
把text分割成一个个词.
text.split(" ")
Summary
数据转换是把数据转换成模型更适合的状态.
需要平衡质量、储存、读取速度之间的关系.
表: normalization
图: 剪裁、下采样、 whitening
视频: clipping, sample frames
文本: 词根化、语法化, 来进行简化输入, 词源化得到输入到机器学习的小单元(unit).
2.4 特征工程
机器学习偏爱固定好的, 具有特定长度的输入/输出.
传统机器学习如SVM比较依赖特定的特征输入, 以前的数据工程师也专注于提取不同的数据特征用于训练网络.
深度学习的过程也大致相同, 但是特征提取并不是人工进行选择, 而是自动的选择, 代价是更花费数据和计算.
Tabular
- int / float : 直接使用或者区间量化
- categorical data : one-hot encoding. 不常见 / 不重要的放在同一类Unknown, 以维持列数在有限上.
- Date-time : feature list. e.g. [year, month, day, day_of_year, week_of_year, day_of_week] 划分的时候最好能体现特定的特征.
- Feature combination : 两种特征之间的外乘(Cartesian product)
Text
- bag of words : 把token用one-hot表示出来, 然后对于一句话就把所有one-hot加起来. (会丢失顺序信息, 还可能内容过大)
- Word embedding (Word2Vect): 把词表示成一个向量, 向量之间有语义信息 (语义相近体现为向量之间的内积较小). 这个向量是通过网络预测上下文的词训练出来的.
- Pre-trained language models (e.g. BERT, GPT-3) : transformer模型, 相较于word2vect更大. 能抽取比较好的语义信息.
Image / Video
- 传统特征 : 手动提取, 如sift
- 预训练深度神经网络 : 分类器前的feature map, 如resnet, vgg等.
summary
特征提取很重要, 目前通常有手动提取和深度学习两种方法, 后面的方法更受人喜爱, 但是会更expensive.
2.5 总结
Challenge
- 数据大小和质量之间的权衡.
- 数据质量 :
- 多样性 : 不同的方面
- 无偏移的 : 没有偏移到特定的一方.
- 公平性 : 没有区别对待人和事.
- 大型数据管理 : 存储, 处理, 版本控制, 安全