python - Tensorflow 的决策森林如何处理分类数据?

标签 python tensorflow machine-learning decision-tree unsupervised-learning

我正在评估两种不同的无监督机器学习算法,隔离森林和 LSTM 自动编码器模型,以识别大型时间序列数据中的异常。该数据集主要包括分类数据,例如 Ip 地址、云订阅 ID、租户 ID、userAgent 和客户端应用程序 ID。

当读取 tutorial 时在 Tensorflow 的决策树 (TF-DF) 模型的实现中,它提到该模型 native 处理非标签分类值,并且

there is no need for preprocessing in the form of one-hot encoding, normalization or extra is_present feature.

有谁知道 Tensorflow 如何在幕后处理分类特征(假设他们做了一些转换成数字表示)?

最佳答案

Tl;dr:有一种在决策树/森林中使用分类特征的自然方式,不需要编码。 Tensorflow 决策森林使用这个和许多标准转换来处理分类特征。

Tensorflow 决策森林 (TF-DF) 构建决策树/决策森林模型。单个决策树沿其特征递归地拆分数据集。沿着分类特征的拆分可以自然地通过所谓的集合条件来执行。例如,一棵树可以表达类似 userAgents\in\{“Mozilla/5.0”, “InternetExplorer/10.0”\} 的条件。其他类型的条件是 also possible .如果数据集包含分类特征,Tensorflow 决策森林 (TF-DF) 可以构建集合条件。

更具体地说,Tensorflow Decision Forests 使用 C++ 库 Yggdrasil Decision Forests (YDF) 在引擎盖下进行任何高级计算。盐电报价three different algorithms用于找到良好的数据分类拆分。例如,Random 算法将随机尝试许多可能的分割并选择最佳分割。

出于性能和质量原因,YDF 还对分类特征进行了预处理:如果分类值非常罕见,YDF 可能会将其视为“不在字典中”,“罕见”的阈值为 user-configurable .此外,YDF 通过降低项目频率将分类特征映射到整数,并将映射存储为模型的一部分。请注意,这纯粹是一种内部编码;算法知道特征是分类的,因此整数编码的典型问题不适用。

最后,Tensorflow 决策森林 (TF-DF) 使用 Keras,它期望分类任务具有整数标签。因此,TF-DF 用户必须自己对标签进行编码或使用内置的 pd_dataframe_to_tf_dataset .

请注意,此答案仅适用于 Tensorflow 决策森林。 Tensorflow 的其他部分可能需要手动编码。

关于python - Tensorflow 的决策森林如何处理分类数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74744899/

相关文章:

python - Windows错误: [Error 5] Access is denied using boto/python

javascript - 使用python mechanize登录带有javascript md5哈希函数的网页

python - 当启用 eager execution 时,Tensor.graph 没有意义

machine-learning - 使用 flow_from_directory 时无法创建 keras 模型

machine-learning - 检查输入 : expected conv2d_1_input to have 4 dimensions, 但获得形状为 (800, 1000) 的数组时出错

python - MongoDB node.js驱动安装需要Python吗?

用于对 ls -l 输出中的值求和的 Python 脚本

python - 在 Tensorflow 中恢复和预测

python - frozen_inference_graph.pb 和 saved_model.pb 有什么区别?

python - 替换嵌套循环