机器学习:如何检测生成依赖布尔值的独立变量

我在工作中尝试使用机器学习,但找不到适合我需求的方法。我不知道这是否是一个已知问题,还是我正在处理一个尚未有已知解决方案的问题。假设我有很多独立变量,编码为独热编码,还有一个依赖变量,只有两种状态:True(结果有错误)和False(结果成功)

我的独立变量是我在API查询中使用的参数,结果是由API返回的。

我的目标是检测模式,以便在几个小时的时间范围内,在数据集中看到导致失败的参数,这样如果我确定查询可能会失败,我就可以避免查询API。

(我每天要处理数百万次查询,这个机制对良好的用户体验至关重要)

我会举个例子,以便你能理解我需要什么。假设我有一家送货公司,我有3辆卡车和3条不同的路线可供选择。

所以,我的虚拟变量将是T1、T2、T3、R1、R2和R3(我可以删除T3和R3,因为它们可以通过省略其他两个来考虑)。然后,我有一个关于送货延迟时间的大型数据集。所以:Delayed=1或Delayed=0

有了这个,我会有一个这样的数据集:

T1_|_T2_|_T3_|_R1_|_R2_|_R3||Delayed------------------------------------_1_|_0__|_0__|_1__|_0__|_0_||____0___1_|_0__|_0__|_0__|_1__|_0_||____1___0_|_1__|_0__|_1__|_0__|_0_||____0___1_|_0__|_0__|_0__|_1__|_0_||____1___1_|_0__|_0__|_1__|_0__|_0_||____0__

我不仅想说“在大多数情况下,卡车1到达晚了,可能有问题,我不应该再派它”,这也是一个有效的结果,但我还想检测类似的情况:“在大多数情况下,当卡车1走路线1时到达晚了,可能这类卡车在这条特定路线上有问题”

这个数据集只是一个例子,实际的数据集非常庞大,有成千上万的依赖变量,所以可能在同一个数据集中存在多个问题。

例子:卡车1在路线1上有问题,卡车3在路线1上有问题。

例子2:卡车1在路线1上有问题,卡车3在任何路线上都有问题。

所以,我会创建一个黑名单,如下所示:

例子:如果(卡车=1 AND 路线=1)OR(卡车=3 AND 路线=1),则阻止

例子2:如果(卡车=1 AND 路线=1)OR 卡车=3,则阻止

我实际上没有使用机器学习来做这件事,而是用一段丑陋的代码制作了一个独立列的巨大笛卡尔积,并计算“延迟”的数量。然后我选择最差的延迟/总数比例,将其列入黑名单,并用新值再次迭代。

这些错误通常是临时的,所以我会每隔几个小时发送一个新数据集,我不需要一个终身分析,除了算法需要考虑这些临时问题。

有人知道我可以使用什么,或者我可以在哪里调查这个问题吗?

如果需要更多信息,请随时问我。

提前感谢!

此致


回答:

你应该查看scikit-learn包中的机器学习分类器(随机森林是行业标准)。对于这个问题,你可以将一部分数据(训练集,比如80%的数据)输入模型,它将学会如何预测结果变量(延迟/不延迟)。

然后,你可以通过在剩余20%的数据(测试集)上“测试”来检验模型的准确性,看看你的模型是否擅长预测正确的结果。这将给你一个百分比的准确率。通常情况下,准确率越高越好,除非你有严重不平衡的类别,在这种情况下,你的分类器只会总是预测更常见的类别以获得容易的高准确率。

最后,如果准确率令人满意,你可以找出你的模型认为哪些预测变量对达到该预测水平最重要,即变量重要性。我认为这就是你想要的。所以每隔几个小时运行一次,你就可以确切地知道数据集中哪些特征(列)最能预测卡车是否会晚到。

显然,说起来容易做起来难,通常你需要对数据进行大量清理,有时需要标准化(不过随机森林不需要),有时需要对分类进行加权,有时需要设计新特征……这就是为什么这是一个专门的职业。

你问的本质上是“我如何进行数据科学?”。希望这能让你开始,其余的(即学习)就靠你自己了。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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