[数据处理] 1. 数据处理流程

人工智能

数据处理流程

原始数据
(图像/文本)
数据读取
(如读取文件
或数据库)
数据预处理
(裁剪、缩放
清洗等)
数据增强
(如图像旋转
颜色扰动)
缓存/加速
(内存缓存、
TFRecord等)
数据批处理
(batching)
数据加载器
(多线程/多进
程并行加载)
模型训练

在深度学习中,数据是模型的“燃料”,其质量直接决定了模型性能的上限。本文将结合数学原理、工程实践与可视化分析,系统梳理数据处理的关键环节。


一、数据准备

1. 数据收集

  • 分布一致性假设(i.i.d)

    P ( X t r a i n ) ≈ P ( X t e s t ) ≈ P ( X r e a l ) P(X_{train}) ≈ P(X_{test}) ≈ P(X_{real}) P(Xtrain)P(Xtest)P(Xreal)

    数据应具有代表性,确保训练、测试与实际应用场景的分布一致性。

  • 常见数据源对比

数据源类型优点缺点适用场景
公开数据集标注规范、即用性强与目标场景可能存在差异算法验证、初期原型
模拟数据可控性强、快速生成难以拟合真实分布构建边界测试样本
实地采集分布贴近真实场景成本高、周期长模型上线部署

2. 数据清洗

  • 缺失值处理方法

    • 删除法:适用于缺失比例 < 5%

    • 插值法:如线性插值:

      x t = x t − 1 + ( x t + 1 − x t − 1 ) 2 x_t = x_{t-1} + \frac{(x_{t+1}-x_{t-1})}{2} xt=xt1+2(xt+1xt1)

    • 模型预测法:使用如随机森林等机器学习模型进行补全:

      from sklearn.ensemble import IsolationForest
      
      clf = IsolationForest(contamination=0.01)
      outliers = clf.fit_predict(data)
      clean_data = data[outliers == 1]
      

3. 数据标注质量控制

评估维度指标含义常见度量
准确性Accuracy标注与真实标签一致的比例与 GT 比对
一致性IAA多标注员间的一致性Kappa/Fleiss’ k
完整性Completeness是否遗漏应标注内容Recall
正确性Correctness标注内容是否准确Precision
模糊性Ambiguity Rate含模糊/不确定性标注比例模糊数 / 总数
效率Annotation Speed单样本平均标注时间秒/样本
审核通过率Review Pass Rate质检通过比例通过数 / 审核样本数
质检覆盖率QA Coverage审核样本占比审核样本数 / 总样本数

4. 数据预处理

  • 图像归一化

    x ′ = x − μ σ x' = \frac{x - \mu}{\sigma} x=σxμ

    其中 μ \mu μ 为均值, σ \sigma σ 为标准差。

  • 文本向量化(TF-IDF)

    TF-IDF ( t , d ) = TF ( t , d ) × log ⁡ ( N DF ( t ) ) \text{TF-IDF}(t,d) = \text{TF}(t,d) \times \log\left(\frac{N}{\text{DF}(t)}\right) TF-IDF(t,d)=TF(t,d)×log(DF(t)N)


二、数据读取

1. PyTorch数据加载流程

import torch
from torchvision import transforms

class CustomDataset(torch.utils.data.Dataset):
    def __init__(self, data, transform=None):
        self.data = data
        self.transform = transform

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        sample = self.data[idx]
        if self.transform:
            sample = self.transform(sample)
        return sample

# 数据管道构建
dataset = CustomDataset(data, transform=transforms.ToTensor())
dataloader = torch.utils.data.DataLoader(
    dataset, 
    batch_size=64, 
    num_workers=4, 
    pin_memory=True, 
    shuffle=True
)

2. 性能优化策略

  • 多线程/多进程并行加载机制
数据集
加载器1
加载器2
加载器3
加载器4
Batch 1
Batch 2
Batch 3
Batch 4
训练
  • 内存映射与HDF5加速
import h5py

with h5py.File('data.hdf5', 'r') as f:
    dataset = f['images']
    batch = dataset[0:64]  # 无需加载全部至内存

三、数据增强

1. 图像增强:仿射变换

  • 通用仿射变换矩阵

    [ x ′ y ′ 1 ] = [ s cos ⁡ θ − s sin ⁡ θ t x s sin ⁡ θ s cos ⁡ θ t y 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} s\cos\theta & -s\sin\theta & t_x \\ s\sin\theta & s\cos\theta & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} xy1 = scosθssinθ0ssinθscosθ0txty1 xy1

  • Albumentations示例

import albumentations as A

transform = A.Compose([
    A.RandomRotate90(),
    A.Cutout(num_holes=8, max_h_size=8, max_w_size=8),
    A.RandomGamma(gamma_limit=(80,120)),
    A.GaussNoise(var_limit=(10,50)),
])

augmented = transform(image=image)['image']

2. 文本增强:语义保持与上下文挖掘

  • 回译增强(多语种)流程

    原始文本
    中文->英文
    英文->法文
    法文->中文
    增强文本
  • 上下文补全示例

from transformers import BertForMaskedLM, BertTokenizer

model = BertForMaskedLM.from_pretrained('bert-base-chinese')
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')

text = "这家餐厅的菜品非常美味"
masked_text = "这家餐厅的菜品非常[MASK]"

inputs = tokenizer(masked_text, return_tensors='pt')
outputs = model(**inputs)
predictions = outputs.logits.argmax(-1)
new_word = tokenizer.decode(predictions[0, 8])  # 示例输出:可口、丰富等

四、数据质量评估

1. 分布可视化

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(12, 6))
sns.set(style="whitegrid")

# 类别分布
plt.subplot(1, 2, 1)
sns.countplot(x='class', data=df)
plt.title('Class Distribution')

# 特征分布
plt.subplot(1, 2, 2)
sns.histplot(df['feature'], kde=True)
plt.title('Feature Distribution')

plt.tight_layout()
plt.show()

2. 数据质量指标

指标公式理想范围
类别平衡度 min ⁡ ( n _ i ) max ⁡ ( n _ i ) \frac{\min(n\_i)}{\max(n\_i)} max(n_i)min(n_i)> 0.7
特征缺失率 缺失数 总样本数 \frac{\text{缺失数}}{\text{总样本数}} 总样本数缺失数< 5%
标注一致性Cohen’s Kappa> 0.8

总结与建议

  1. 数据质量大于数量:1000条精准标注数据,胜于10000条噪声数据。
  2. 贴近真实分布:验证集应匹配目标场景。
  3. 建立闭环机制:推动“数据-模型”协同演化。

一个优秀的数据科学家,应当像调试模型超参一样精细化打磨数据流——这是深度学习性能飞跃的关键支点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斌zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值