在 Java 中实现多维度的 Adaboost

Posted

技术标签:

【中文标题】在 Java 中实现多维度的 Adaboost【英文标题】:Implementing Adaboost for multiple dimensions in Java 【发布时间】:2012-02-05 14:20:44 【问题描述】:

我正在研究 Java 中的 AdaBoost 实现。 它应该适用于 2D 3D 或 10D 上的“双”坐标。 我为 Java 找到的只是二进制数据 (0,1),而不是多维空间。

我目前正在寻找一种方法来表示维度并初始化分类器以进行提升。

我正在寻找有关如何在 Java 中表示多维空间以及如何初始化分类器的建议。

数据介于 [-15,+15] 之间。目标值为1或2。

【问题讨论】:

【参考方案1】:

使用JBoost 怎么样,我想它有你要找的东西。

【讨论】:

感谢您的建议。我实际上找到了它并试着玩了一下。对于想要使用 AdaBoost 的人来说,它真的很有用。最初的意图是自己实现 Adaboost。 Weka 附带了一些非常好的工具,我发现它们对运行和使用许多数据挖掘算法有很大帮助,并且还有可用的源代码。 我不明白,虽然..你说你发现的所有东西都适用于“二进制数据而不是多维空间”,而 JBoost 不限于其中任何一个,所以......我想我对你的问题是什么感到困惑,那么? 无意混淆,抱歉。澄清我的问题:我想自己实现 AdaBoost,而不仅仅是使用现有版本。这是我的一个项目的一部分。 JBoost 作为参考和运行 AdaBoost 的平台非常有用。【参考方案2】:

为什么不对每个对象使用double[] 数组?这是Java中表示特征向量的常用方式。

【讨论】:

我不认为这是被问到的问题;我认为 OP 很好奇如何将 AdaBoost 用于实值数据,而不是如何在内部存储所有内容。 没错!我正在尝试在“真实”数据上实现 AdaBoost,表示为“双类型”。【参考方案3】:

要在空间数据上使用增强决策树,典型的方法是尝试在某个轴上找到一个“分区点”,以最小化两个子树中的残差信息。为此,您沿着某个轴(例如 x 轴)找到一些值,然后将数据点分成两组 - 一组点的 x 坐标低于该分割点,一组点的 x 坐标为在那个分裂点之上。这样,您将实值空间数据转换为 0/1 数据 - 0 值是低于分割点的值,而 1 值是高于分割点的值。因此,该算法与 AdaBoost 相同,只是在选择要分割的轴时,还必须考虑潜在的分割点。

【讨论】:

以上是关于在 Java 中实现多维度的 Adaboost的主要内容,如果未能解决你的问题,请参考以下文章

在 Tensorflow 中实现一个展平层

在C中实现非矩形数组

在Python中实现阈值检测功能

在 Java 中实现单例模式的有效方法是啥? [关闭]

支持向量机分类及在R中实现

在 Java 中实现动态插件