如何通过简单的模拟模型生成人工数据集,用于具有二元响应和 4-5 特征的分类分析? [关闭]
Posted
技术标签:
【中文标题】如何通过简单的模拟模型生成人工数据集,用于具有二元响应和 4-5 特征的分类分析? [关闭]【英文标题】:How generate an artificial data set through a simple simulation model for Classification analysis with Binary Response and 4-5 features? [closed] 【发布时间】:2013-01-21 15:40:33 【问题描述】:我需要一个模拟模型,它可以生成具有二元响应变量的人工分类数据集。然后我想使用这个数据集检查各种分类器的性能。数据集可能有任意数量的特征,即预测变量。
【问题讨论】:
【参考方案1】:您需要知道要生成数据的分布。很可能是正态分布。然后你需要将数据点标记到它的类。
正态分布: example algorithm for generating random value in dataset with normal distribution?
高斯分布: C++: generate gaussian distribution
excel中的数据生成:http://www.databison.com/index.php/how-to-generate-normal-distribution-sample-set-in-excel/
【讨论】:
【参考方案2】:这是个坏主意,不会告诉你分类器的相对优点。
首先我将解释如何生成数据,然后解释为什么你不会从中学到任何东西。你想要一个二元特征向量:有很多方法可以做到这一点,但让我们采取最简单的方法。独立伯努利变量的向量。以下是生成任意数量实例的方法:
-
对于每个特征 i,从均匀分布中生成一个参数 theta_i,其中 0
对于每个期望的实例 j,通过从均匀分布再次采样来生成第 i 个特征 f_ji。如果您采样的数字小于 theta_i,则设置 f_ij = 1,否则将其设置为 0
这将允许您生成任意数量的实例。 然而,问题是你知道数据的真实分布,所以你可以得到贝叶斯最优决策规则:这是理论上的最优分类器。在我上面给你的生成方案下,朴素贝叶斯分类器接近于最优(如果你使用实际的贝叶斯版本来整合参数,它将是最优分类器)。
这是否意味着朴素贝叶斯是最好的分类器?不,当然不是:通常,实际上我们对分类器在我们不知道数据真实分布的数据集上的性能感兴趣。事实上,discriminative modelling 的整个概念是基于这样一种思想,即当真实分布未知时,试图估计它所解决的问题比分类所需的要困难。
总之,那么:非常仔细地考虑这是否是你想要做的。您不能模拟数据并使用它来决定哪个分类器是“最好的”,因为哪个最好取决于您用于模拟的配方。如果您想查看某些分类器表现不佳或奇怪的数据,您可以模拟此类数据以确认您的假设,但我认为这不是您想要做的。
编辑:
我意识到您实际上想要一个二元结果,而不是二元特征。我说的一些你可以忽略。
二元响应来自逻辑回归模型:
log( p/(1-p) ) = w.x
其中 w 是您的权重向量,x 是您的特征向量。要在给定观测 x 的情况下从该模型进行模拟,取点积 w.x,应用逆 logit 函数:
logit^-1 = 1 / (1 + exp(-w.x))
这会给你一个 0-1 范围内的数字。然后将响应采样为带有参数 p 的伯努利变量,即在 [0,1] 中取一个统一的数字,如果小于 p,则返回 1,否则返回 0。
如果你也想模拟 xs,你可以,但你又回到了我上面讨论的领域。另外,请注意,由于这是逻辑回归采样,因此该分类器在这里将具有明显的优势,正如我在上面描述的...
【讨论】:
是的,你是对的。我想要一个不偏向任何分类器的数据集。一个回归示例可以是模型:Y = (2sinX1)(2sinX2)+e,其中 X1 和 X2 是均匀的,e 是高斯的。我需要二进制响应的地方。谢谢! 啊等等 - 二进制响应?然后你想要逻辑回归模型。让我编辑我的答案。以上是关于如何通过简单的模拟模型生成人工数据集,用于具有二元响应和 4-5 特征的分类分析? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
FPS游戏实战数据集|yolov8训练模型导出|C/C++项目|驱动鼠标模拟人工|加密狗USB硬件虚拟化
如何获得一个良好的二元分类深度神经模型,其中负数据更多位于数据集上?
吴恩达-医学图像人工智能专项课程-第一课第一周16-18节-如何确保数据集病人不重叠+作业解说