news 2026/4/22 23:24:48

【实战】不同数据类型下的处理方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【实战】不同数据类型下的处理方案

一、问题背景

在结构化数据与时序数据建模中,模型性能的上限往往并不由网络结构本身决定,而是由特征语义是否被正确表达所决定。传统“数值型 / 类别型”二分法已无法满足深度学习建模需求。

核心结论:

入参数据至少应区分为多种语义形态,不同形态必须采用不同的数值化与模型接入方式,否则模型将被迫学习错误结构。

二、分类体系

连续数值型

定义:具有明确大小、距离和比例意义的连续变量。

典型示例

  • 年龄

处理方式

  • StandardScaler / RobustScaler
  • 直接作为连续输入特征

离散类别型

定义:无顺序、无大小,仅表示“类别差异”。
典型示例

  • 国家
  • 地区
    不推荐方式
  • 直接数值编码(引入伪顺序)
  • 高维 One-Hot(维度膨胀、稀疏)

推荐方式:Embedding

self.embeddings=nn.ModuleList([nn.Embedding(size,embedding_dim)forsizeincate_sizes])

理论依据

  • Embedding 是可学习的语义映射
  • 能在低维连续空间中表达类别相似性

有序类别型

定义:存在顺序关系,但无严格比例意义。
示例

  • 风险等级(1–5)
  • 车况等级(差 / 中 / 好)

处理策略

  • 业务含义清晰 → 数值化
  • 语义复杂 → Embedding

周期型时间特征

定义:具有周期闭环结构的时间变量。
典型示例

  • weekday(1–7)
  • month(1–12)
  • hour(0–23)
    错误方式
  • 直接数值输入
  • Embedding

推荐方式:Sin/Cos 周期编码

df['weekday_sin']=np.sin(2*np.pi*df['weekday']/7)df['weekday_cos']=np.cos(2*np.pi*df['weekday']/7)

时间差/累积型

定义:表示时间间隔或累计长度。

示例

  • 购车时间
  • 在线时间

处理方式

  • 数值化
  • 标准化

状态 / 事件型

定义:离散状态,语义强,无连续意义。
示例

  • 是否节假日
  • 是否促销期
  • 是否政策窗口期

处理方式

  • Binary + Embedding
  • Multi-class Embedding

序列型特征

定义:当前状态依赖历史序列。
示例

  • 历史价格
  • 历史成交量

模型适配

  • CNN / LSTM / Transformer
  • 不适合普通 DNN

三、处理方法

数据分类体系

类型示例处理方式
数值连续型功率、里程、V0–V14标准化/归一化 → 直接输入 ANN/CNN/LSTM
离散类别型品牌、车型、地区Embedding → 学习稠密表示
有序类别型车龄档位、配置等级可映射为数值(归一化)或 Embedding
周期型时间月份、星期、小时sin/cos 映射 → 数值特征输入
二值状态型是否事故、是否个人卖家0/1 → 数值输入即可
高维匿名特征V0–V14数值标准化 → ANN/CNN 输入

各类特征处理方案

数值型特征
  • 示例:power, kilometer, V0-V14
  • 处理:标准化 / 归一化
  • 网络子模块:
self.num_net=nn.Sequential(nn.Linear(num_dim,64),nn.ReLU(),nn.Linear(64,32))
离散类别型
  • 示例:brand, model, regionCode, bodyType
  • ❌ 不可直接编号 → 数值大小无意义
  • ✅ 使用 Embedding:
self.embeddings=nn.ModuleList([nn.Embedding(size,8)forsizeincate_sizes])

Embedding 本质:把类别映射到可学习的稠密向量空间,保留语义相似性。

有序类别型
  • 示例:车龄档位(0–5年、5–10年、10年以上)
  • 方案 A(推荐):当作数值 → 标准化输入
  • 方案 B:Embedding(非线性关系强时)
周期型时间特征
  • 示例:月份、星期
  • ❌ 直接输入会引入假序关系
  • ✅ sin/cos 映射:
df['month_sin']=np.sin(2*np.pi*df['month']/12)df['month_cos']=np.cos(2*np.pi*df['month']/12)df['weekday_sin']=np.sin(2*np.pi*df['weekday']/7)df['weekday_cos']=np.cos(2*np.pi*df['weekday']/7)
  • 转化为数值特征输入 ANN
二值状态特征
  • 示例:notRepairedDamage, seller
  • 直接 0/1 输入即可

四、模型结构修改

ANN算法

importtorchimporttorch.nnasnnclassCarPriceANN(nn.Module):def__init__(self,num_dim,cate_sizes):super().__init__()# 数值子网络self.num_net=nn.Sequential(nn.Linear(num_dim,64),nn.ReLU(),nn.Linear(64,32))# 类别 Embeddingself.embeddings=nn.ModuleList([nn.Embedding(size,8)forsizeincate_sizes])fusion_dim=32+len(cate_sizes)*8# 融合网络self.fc=nn.Sequential(nn.Linear(fusion_dim,64),nn.ReLU(),nn.Dropout(0.2),nn.Linear(64,1))defforward(self,x_num,x_cate):num_feat=self.num_net(x_num)cate_feat=torch.cat([emb(x_cate[:,i])fori,embinenumerate(self.embeddings)],dim=1)x=torch.cat([num_feat,cate_feat],dim=1)returnself.fc(x).squeeze()

CNN + LSTM算法

特征类型适合 LSTM?
时间序列数值
周期型时间✅(sin/cos 后)
类别型❌ → Embedding 后拼接
静态属性❌ → 后融合 MLP
classCarPriceCNNLSTM(nn.Module):def__init__(self,num_feat_dim,cate_sizes,emb_dim=8):super().__init__()self.embeddings=nn.ModuleList([nn.Embedding(size,emb_dim)forsizeincate_sizes])self.conv=nn.Conv1d(num_feat_dim,64,kernel_size=3,padding=1)self.lstm=nn.LSTM(64,64,batch_first=True)fusion_dim=64+len(cate_sizes)*emb_dim self.fc=nn.Sequential(nn.Linear(fusion_dim,64),nn.ReLU(),nn.Linear(64,1))defforward(self,x_seq,x_cate):x=x_seq.transpose(1,2)# [B, C, T]x=self.conv(x)x=x.transpose(1,2)# [B, T, C]_,(h_n,_)=self.lstm(x)seq_feat=h_n[-1]cate_feat=torch.cat([emb(x_cate[:,i])fori,embinenumerate(self.embeddings)],dim=1)x=torch.cat([seq_feat,cate_feat],dim=1)returnself.fc(x).squeeze()

五、总结

在结构化与序列混合特征建模中,数据语义表达的正确性远比网络复杂度更关键,总结如下核心原则:

  1. 多维分类入参策略

    • 数值型:标准化 / 归一化 → 直接输入
    • 离散类别型:Embedding → 可学习稠密向量
    • 有序类别型:数值化或Embedding(取决于非线性关系)
    • 周期型:Sin/Cos 编码 → 数值输入
    • 二值状态/事件型:0/1 或 Embedding
    • 序列型特征:CNN / LSTM / Transformer 建模
  2. 网络设计原则

    • 子网络独立处理:不同特征类型在模型中应先独立编码或提取表示
    • 特征融合:数值特征 + 类别 Embedding → 融合层 → 回归输出
    • 时间序列特征:通过 CNN / LSTM 提取动态模式,再与静态特征融合
  3. 建模实质

    • 核心目标是让模型理解特征语义,而不是盲目堆叠输入
    • 多输入网络(Multi-Input Neural Network)是表格和混合特征预测的首选方案
    • ANN 适合静态表格数据,CNN+LSTM 适合历史序列或时间窗口建模
  4. 工程建议

    • 特征处理应与业务理解结合,避免引入伪顺序或错误关联
    • Embedding 维度可调,过大易过拟合,过小易欠拟合
    • 周期型特征必须转换,否则模型难以捕捉周期规律
    • 对序列特征,可选滑动窗口 + CNN/LSTM 提取局部和全局模式

总结一句话

模型性能的上限不在网络结构,而在于特征的语义表达与正确编码;合理分类、独立编码、融合建模,是表格+序列深度学习预测的工业级实践标准。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 22:30:48

Open-AutoGLM性能优化秘籍,让模型训练速度提升3倍

第一章:Open-AutoGLM性能优化概述Open-AutoGLM作为一款面向自动化生成语言任务的开源大模型框架,其性能表现直接影响推理效率与部署成本。在实际应用场景中,模型的响应延迟、吞吐量以及资源占用率是关键评估指标。为此,性能优化成…

作者头像 李华
网站建设 2026/4/20 12:27:24

揭秘Open-AutoGLM核心技术:如何实现大模型全自动推理与优化

第一章:揭秘Open-AutoGLM核心技术:如何实现大模型全自动推理与优化Open-AutoGLM 是一款面向大语言模型(LLM)的自动化推理与优化框架,致力于在不依赖人工干预的前提下,实现模型推理路径的智能选择、计算资源…

作者头像 李华
网站建设 2026/4/17 16:44:37

理解TI理想二极管IC的工作原理通俗解释

用MOSFET“伪造”一个零压降二极管?TI理想二极管IC的底层逻辑揭秘你有没有遇到过这种情况:设计一个12V/10A的电源系统,结果发现光是那个用来防反接的肖特基二极管就发热到烫手——3.5W的功耗白白浪费在导通压降上。更糟的是,输出电…

作者头像 李华