尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

YDF如何玩转多种特征类型:数值、分类、布尔与文本特征的完整清单

YDF如何玩转多种特征类型:数值、分类、布尔与文本特征的完整清单 YDF如何玩转多种特征类型数值、分类、布尔与文本特征的完整清单【免费下载链接】yggdrasil-decision-forestsA library to train, evaluate, interpret, and productionize decision forest models such as Random Forest and Gradient Boosted Decision Trees.项目地址: https://gitcode.com/gh_mirrors/yg/yggdrasil-decision-forestsYDFyggdrasil-decision-forests是一个用于训练、评估、解释并部署决策森林模型随机森林 Random Forest、梯度提升树 Gradient Boosted Trees的高性能库。它能自动识别数据中的特征类型feature semantic数值、分类、布尔、分类集合文本、离散化数值让新手几乎无需任何预处理即可喂入复杂数据。本文将完整清单式讲清 YDF 支持的每一种特征类型、适用场景、常见坑以及如何检查与手动指定语义。为什么特征语义Feature Semantic决定模型质量决策树的每一次分裂方式都取决于特征的语义数值特征→ 按阈值分裂如age 30分类特征→ 按值集合分裂如country in {USA, CH}文本分类集合特征→ 按集合交集分裂布尔特征→ 内存与速度高度优化的二值分裂语义用错既拖慢训练又拉低精度。好消息是YDF 默认自动检测语义训练后用model.describe()查看模型描述中的 Dataspec 标签页即可确认。只有检测不对时才需要用ydf.Semantic枚举手动覆盖。 语义定义源码yggdrasil_decision_forests/port/python/ydf/dataset/dataspec.pySemantic枚举底层 proto 定义yggdrasil_decision_forests/dataset/data_spec.proto五种核心特征类型速览语义典型场景缺失值表示自动识别NUMERICAL数值年龄、金额、时长、分数nan整数 / 浮点 ✅CATEGORICAL分类血型、国家、语言、状态空字符串字符串 ✅BOOLEAN布尔是否订阅、是否垃圾邮件nan仅含 0/1 的列 ✅CATEGORICAL_SET分类集合分词文本、标签集合无需手动指定DISCRETIZED_NUMERICAL离散化数值高基数数值列加速nan需手动指定1️⃣ 数值特征NUMERICALYDF 的主力任何有序、可比较的量都是数值特征年龄、时长、资产、请求次数甚至分布的中位数。整数和浮点数都会被自动识别为 NUMERICAL内部统一转为 float32 存储。缺失值用nan表示训练时 YDF 自动用列均值全局填充追求更强模型时可对数值特征开启斜切oblique树让一次分裂组合多个特征如0.3*age 0.7*income 50小数据集上收益明显代价是训练更慢参考教程documentation/public/docs/tutorial/numerical_feature.ipynb2️⃣ 分类特征CATEGORICAL树模型的正确打开方式分类特征代表无序取值物种、血型、国家、项目状态。字符串列会被自动识别为 CATEGORICAL。使用时有四条最佳实践不要分桶NN 常把数值切成 0-5 / 5-10 的桶YDF 不需要直接喂原始数值更好不要 one-hot 编码树模型下 one-hot 稳定劣于原生分类处理稀有值自动剪枝YDF 会把罕见类别合并为 OODout of dictionary由超参max_vocab_count和min_vocab_frequency控制可有效防过拟合推理时未知值训练没见过的类别如 tiger会自动映射为 OOD与缺失值区分对待 ⚠️⚠️ 特别提醒数值型的 Python Enum整数值会被误判为 NUMERICAL必须手动声明为 CATEGORICAL另外ID / 哈希类列对训练毫无帮助还会拖慢训练、撑大模型务必在训练前删除。3️⃣ 布尔特征BOOLEAN省内存的高速通道BOOLEAN 是分类特征的特化取值只能是 true / false / 缺失。大多数数据格式下 YDF 会自动识别如 CSV 中只含 0 和 1 的列。相比用数值或分类表示布尔语义在内存和训练速度上都有专门优化。注意label 列永远不能是 BOOLEAN二分类任务的标签应使用 CATEGORICAL 语义。4️⃣ 文本特征CATEGORICAL_SET标签集合与分词文本一个 CATEGORICAL 只能有一个值而 CATEGORICAL_SET 可以包含零个、一个或多个值天然适合表示分词后的文本A cat sits on a tree→{a, cat, on, sits, tree}网页标签{politics, elections, united-states}几个关键要点分词很重要按空格切分对英文尚可对中文较差集合不编码词序可考虑 bi-gram如a_cat、cat_sit保留相邻词信息稀有词同样会被 OOD 机制剪枝min_vocab_frequency控制训练更慢能不用 CATEGORICAL_SET 就不要用CSV 读取时该列会按空白自动分词 实战示例documentation/public/docs/tutorial/categorical_set_feature.ipynb5️⃣ 离散化数值特征DISCRETIZED_NUMERICAL换速度它不是一个全新语义而是告诉算法用更快的离散化方式处理数值列训练通常快约 2 倍但可能损失一点精度自动分箱后是有损的。把全部数值列设为该语义等价于超参detect_numerical_as_discretized_numericalTrue。上图为 YDF 训练的分类模型在含数值、分类混合特征的 adult 数据集上的评估可视化ROC、Precision-Recall、阈值-准确率按年龄≤50K的数值特征分组对比。6️⃣ 多维特征与向量嵌入YDF 支持定长向量作为特征——例如把文本先用句子编码器压成 512 维向量再直接喂给 YDF。YDF 会把每个分量展开成独立特征text.0_of_512、text.1_of_512……要求所有向量长度完全一致长度不一时请改用 CATEGORICAL_SET。 参考documentation/public/docs/tutorial/multidimensional_feature.ipynbYDF 不原生支持这些类型要先预处理场景建议做法⏰ 时间戳拆成日历特征星期、小时、月份比直接转 Unix 时间好得多 时间序列需专门建模防未来泄漏见documentation/public/docs/tutorial/time_sequences.ipynb 重复 proto 消息数值展开为统计量最大/最小/均值…类别转为 CATEGORICAL_SET️ 图片决策森林不是图像任务的最优架构优先考虑神经网络一张表看懂各数据格式的语义自动识别Numpy 标量类型默认行为Numpy 类型NUMERICALCATEGORICALBOOLEANDISCRETIZEDint✅ 默认可转换❌可转换float✅ 默认❌❌可转换bool可转换可转换✅ 默认可转换str❌✅ 默认❌❌CSV 文件仅含 0/1 的列 → BOOLEAN纯数字列 → NUMERICAL其他 → CATEGORICAL多维不支持。只检查前 10 万行max_num_scanned_rows_to_infer_semantic可调大。缺失值用na或空字符串。Avro自带类型信息bool → BOOLEANint/float → NUMERICALstring/bytes → CATEGORICAL数组列按元素类型展开或视为 CATEGORICAL_SET。缺失值与标签语义最后两个细节缺失值处理全局填充数值列取均值分类/布尔取众数CATEGORICAL_SET 缺失值一律走分裂的否分支。打开allow_na_conditions还可学习特征为 NA的专用分裂标签语义随任务而定回归 → NUMERICAL 标签分类 → CATEGORICAL 标签排序 → 整数 NUMERICAL 标签。标签列不允许缺失值上图为 YDF 回归任务模型理解中的条件图Ground Truth vs Predictions / Residual可用于直观验证不同特征组合下模型的预测行为。总结3 步用好 YDF 特征类型先交给自动检测model.describe()查看 Dataspec 页确认每个列的语义手动纠正例外整数型枚举 → CATEGORICAL文本列 → CATEGORICAL_SET追求速度 → DISCRETIZED_NUMERICAL清理无用列删 ID 列、把时间戳拆成日历特征、向量长度不一致的列改走 CATEGORICAL_SET官方特征语义指南documentation/public/docs/guide_feature_semantics.md完整语义定义yggdrasil_decision_forests/port/python/ydf/dataset/dataspec.py。选对特征语义你的随机森林与梯度提升树模型就能又快又准 【免费下载链接】yggdrasil-decision-forestsA library to train, evaluate, interpret, and productionize decision forest models such as Random Forest and Gradient Boosted Decision Trees.项目地址: https://gitcode.com/gh_mirrors/yg/yggdrasil-decision-forests创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表