如何通过简单的模拟模型生成用于分类分析的具有二元响应和4-5个特征的人工数据集?

我需要一个模拟模型来生成一个具有二元响应变量的人工分类数据集。然后我想使用这个数据集来检查各种分类器的性能。数据集可以有任意数量的特征,即预测变量。


回答:

这是一个糟糕的主意,并且不会告诉你关于分类器相对优劣的任何信息。

首先,我将解释如何生成数据,然后解释为什么这样做不会让你学到任何东西。你想要一个二元特征向量:有很多方法可以做到这一点,但我们采用最简单的方法。一个独立的伯努利变量向量。这里是生成任意数量实例的配方:

  1. 对于每个特征i,从均匀分布中生成一个参数theta_i,其中0 < theta_i < 1
  2. 对于每个所需实例j,通过再次从均匀分布中抽样生成第i个特征f_ji。如果你抽样的数字小于theta_i,则设置f_ij = 1,否则设置为0

这将允许你生成任意数量的实例。然而,问题在于你知道数据的真实分布,因此你可以得到贝叶斯最优决策规则:这是理论上最优的分类器。在我上面给出的生成方案下,朴素贝叶斯分类器接近最优(如果你使用了实际的贝叶斯版本,其中你整合了参数,它将是最优的分类器)。

这是否意味着朴素贝叶斯是最好的分类器?当然不是:通常情况下,我们关注的是在我们不知道数据真实分布的数据集上的分类器性能。实际上,判别模型的整个概念是基于当真实分布未知时,试图估计它是在解决一个比分类所需更难的问题的想法。

总之:请仔细考虑这是否是你想做的事情。你不能通过模拟数据来决定哪个分类器是“最好的”,因为哪个是最好的将取决于你用于模拟的配方。如果你想查看某些分类器在某些类型的数据上表现不佳或奇怪,你可以模拟这种类型的数据来确认你的假设,但我认为这不是你想要做的。

编辑:

我意识到你实际上想要的是二元结果,而不是二元特征。你可以忽略我所说的一些内容。

二元响应来自逻辑回归模型:

log( p/(1-p) ) = w.x

其中w是你的权重向量,x是你的特征向量。给定观察到的x,从这个模型中模拟,取w.x的点积,应用逆逻辑函数:

logit^-1 = 1 / (1 + exp(-w.x))

这会给你一个在0-1范围内的数字。然后以参数p的伯努利变量采样响应,即取[0,1]范围内的均匀数,如果它小于p,则返回1,否则返回0。

如果你也想模拟xs,你可以,但你又回到了我上面讨论的领域。另外,请注意,由于这是逻辑回归抽样,这里这个分类器将有一个明显的优势,正如我上面所描述的…

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注