以分类变量(枚举)作为输入的神经网络

2024-04-02

我正在尝试使用神经网络解决一些机器学习问题,主要是使用NEAT进化(增强拓扑的神经进化)。

我的一些输入变量是连续的,但其中一些具有分类性质,例如:

  • 物种:{狮子,豹子,老虎,美洲虎}
  • 行业:{医疗保健、保险、金融、IT、广告}

起初,我想通过将类别映射到离散数字来对这样的变量进行建模,例如:

{狮子:1,豹子:2,老虎:3,美洲虎:4}

但恐怕这会在变量上添加某种任意拓扑。老虎不是狮子和豹子的总和。

通常采用什么方法来解决这个问题?


不幸的是,这儿没有good解决方案,每个都会导致某种问题:

  • 正如您所提到的,您的解决方案是添加拓扑;它可能没那么糟糕,因为 NN 可以拟合任意函数并表示“if”,但在许多情况下它会(因为 NN 经常陷入某些局部最小值)。
  • 您可以以以下形式对数据进行编码is_categorical_feature_i_equal_j,这不会产生任何额外的拓扑,但会以二次方的方式增加特征数量。因此,代替“物种”,您会得到特征“is_lion”、“is_leopard”等,并且只有其中一个是相等的1当时
  • 如果与可能的分类值相比数据量很大(例如,您有 10000 个 od 数据点,并且只有 10 个可能的分类值),也可以将问题分成 10 个独立的问题,每个问题都针对一个特定值进行训练(因此我们有“狮子的神经网络”“美洲虎的神经网络”等)

这两种方法适用于“极端”情况 - 一种方法的计算成本非常低,但可能导致高偏差,而第二种方法则引入了很多复杂性,但不应影响分类过程本身。最后一种很少可用(由于假设了少量的分类值),但在机器学习方面相当合理。

Update

8年里发生了很多事情。解决方案 2 绝对是最受欢迎的一种,随着计算量的增长、神经网络的广泛采用以及稀疏输入的支持,成本现在可以忽略不计

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以分类变量(枚举)作为输入的神经网络 的相关文章

  • Google Inceptionism:按类别获取图像

    在著名的 Google Inceptionism 文章中 http googleresearch blogspot jp 2015 06 inceptionism going deeper into neural html http goo
  • 未初始化的枚举变量值

    我使用 enum 声明新类型 DAY 然后从中声明两个变量 day1 和 day2 然后当我使用未初始化的值时 我应该看到 0 到 6 之间的值 因为 enumlist 中的值介于 0 到 6 之间 但我收到了这些值改为 858993460
  • 现代 CNN(卷积神经网络)作为 DetectNet 旋转不变吗?

    众所周知 用于目标检测的 nVidia DetectNet CNN 卷积神经网络 基于 Yolo DenseBox 的方法 https devblogs nvidia com parallelforall deep learning obj
  • 使用 Serde 反序列化时有没有办法允许未知的枚举标签? [复制]

    这个问题在这里已经有答案了 我正在反序列化一个标记的枚举 derive Deserialize enum Foo A A B B C C 如果 Serde 遇到一个不存在的标签A B or C 那么就会抛出错误 有没有办法为未知标签添加包罗
  • 将枚举类型绑定到文本框

    我将 textbox text 值绑定到枚举类型 我的枚举看起来像这样 public enum Type Active Selected ActiveAndSelected 我不想完成的是在文本框上显示 活动模式 而不是 活动 等等 可以这
  • C# 按键枚举混淆:Keys.Alt 或 Keys.RButton |键.Shift键|按键.Alt

    我正在尝试测试是否按下了 Alt 键 我有一张类似于以下的支票 private void ProcessCmdKey Keys keyData if keyData Keys Alt System Console WriteLine Alt
  • 实例标准化与批量标准化

    据我所知 批量归一化通过将激活转向单位高斯分布来帮助加快训练速度 从而解决梯度消失问题 批量归一化行为在训练 使用每个批次的平均值 var 和测试时间 使用训练阶段的最终运行平均值 var 时应用不同 另一方面 实例归一化充当本文提到的对比
  • 帮助我在 Python 中实现反向传播

    EDIT2 新的训练集 Inputs 0 0 0 0 0 0 1 0 0 0 2 0 0 0 3 0 0 0 4 0 1 0 0 0 1 0 1 0 1 0 2 0 1 0 3 0 1 0 4 0 2 0 0 0 2 0 1 0 2 0 2
  • 带数据注释的枚举类型的 Json.NET 自定义序列化

    我想序列化一个枚举类型 以便它返回一个数组 其中枚举作为对象 其中包含 值 名称 和数据注释值 我需要序列化方面的帮助 这是我到目前为止所做的 枚举 public enum Status Display Name Active status
  • 从成员函数返回枚举

    我想实现返回枚举的函数 class myClass private res res public enum res ok fail res getRes bool checkRes res r other function that cha
  • 如何向 MySQL 中的 ENUM 类型列添加更多成员?

    MySQL 参考手册没有提供关于如何执行此操作的明确示例 我有一个 ENUM 类型的国家 地区名称列 我需要向其中添加更多国家 地区 实现此目的的正确 MySQL 语法是什么 这是我的尝试 ALTER TABLE carmake CHANG
  • Xcode 6 代码编辑器异常行为

    截至最近 我在使用 Xcode 6 代码编辑器时遇到了一些麻烦 最终导致编辑窗口中的焦点快速变化 在编辑文本时跳转到同一文件中完全不同的位置 一切就是这样开始的 最近 编辑器拒绝上下滚动 挂起 停止显示行号或任何其他文本 我该怎么做才能让它
  • C#中Enum中定义的value__是什么

    What value 可能在这里 value MSN ICQ YahooChat GoogleTalk 我运行的代码很简单 namespace EnumReflection enum Messengers MSN ICQ YahooChat
  • WPF ComboBox 中具有本地化名称的枚举

    我有一个列出枚举的组合框 enum StatusEnum Open 1 Closed 2 InProgress 3
  • 如何反转 dropout 来补偿 dropout 的影响并保持期望值不变?

    我正在学习神经网络中的正则化deeplearning ai课程 在dropout正则化中 教授说 如果应用dropout 计算出的激活值将比不应用dropout时 测试时 更小 因此 我们需要扩展激活以使测试阶段更简单 我理解这个事实 但我
  • JAXB 枚举字段未序列化

    我有以下课程 package dictionary import java io Serializable import java util Objects import javax xml bind annotation XmlEleme
  • 如何获取在代码中 attrs.xml 中创建的枚举

    我创建了一个自定义视图 找到它here https bitbucket org informatic0re awesome font iconview 具有枚举类型的可声明样式属性 在 xml 中 我现在可以为我的自定义属性选择枚举条目之一
  • 在监督分类中,使用partial_fit() 的MLP 比使用fit() 的表现更差

    我正在使用的学习数据集是灰度图像flatten让每个像素代表一个单独的样本 第二张图像在训练后将被逐像素分类Multilayer perceptron MLP 前一个分类器 我遇到的问题是MLP当它一次接收到所有训练数据集时表现更好 fit
  • Java:枚举:NoClassDefFoundError

    我在 J2EE 应用程序中使用枚举时遇到问题 我在无状态服务 bean 内的 switch case 中使用枚举 在运行时 我在 switch 语句上看到以下异常 Caused by java lang NoClassDefFoundErr
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法

随机推荐