机器学习:如何检测生成相关布尔值的自变量
Machine Learning: How to detect the independent variables that are generating a dependent boolean value
我正在尝试在我的工作中使用机器学习,但我找不到一种方法来使其适应我的需要。而且我不知道它是否已经是一个已知问题,或者我是否正在处理尚无已知解决方案的问题。
假设我有很多自变量,编码为 onehot,以及一个只有两个状态的因变量:True(结果有错误)和 False(结果成功)
我的自变量是我在 API 中用于查询的参数,结果是返回 API 的参数。
我的 objective 是检测一个模式,我可以在几个小时的特定时间范围内在数据集中看到失败的参数,这样我就可以避免查询 API 如果我肯定会失败。
(我每天处理数百万个查询,这种机制对于良好的用户体验至关重要)
我将尝试举一个例子,以便您了解我的需要。
假设我有一家送货公司,我有 3 辆卡车,我可以走 3 条不同的路线。
因此,我的虚拟变量将是 T1、T2、T3、R1、R2 和 R3(我可以删除 T3 和 R3,因为忽略了其他 2 个)
然后,我有一个关于交货延迟时间的大数据集。所以: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__
不仅我想说 "in most cases, truck 1 arrives late, it could have a problem, I shouldn't send it more",这也是一个有效的结果,而且我还想检测如下内容:"in most cases, truck 1 arrives late when it goes in the route 1, probably this type of truck has a problem on this specific route"
这个数据集是一个例子,真实的数据集很大,有上千个因变量,所以在同一个数据集中可能有不止一个问题。
示例:卡车 1 在路线 1 上有问题,卡车 3 在路线 1 上有问题。
示例2:卡车1在路线1上有问题,卡车3在任何路线上都有问题。
所以,我会像这样创建一个黑名单:
示例:如果 (truck=1 AND route=1) OR (truck=3 AND route=1)
则阻止
示例 2:如果 (truck=1 AND route=1) OR truck=3
则阻止
我实际上是在没有机器学习的情况下这样做的,使用丑陋的代码生成独立列的大量笛卡尔积,并计算 "delayed" 的数量。然后我选择最差的 delayed/total 比例,将其列入黑名单,然后用新值再次迭代。
这个错误通常是暂时的,所以我会每隔几个小时发送一个新的数据集,我不需要生命周期分析,除了算法考虑这些临时问题。
任何人都知道我可以使用什么,或者我可以在哪里调查它?
如果需要,请随时询问更多信息。
提前致谢!
此致
您应该检查用于机器学习 classifier 的 scikit-learn 包(随机森林是行业标准)。对于这个问题,您可以将一部分数据(训练集,比如 80% 的数据)提供给模型,它会学习如何预测结果变量(delayed/not 延迟)。
然后,您可以通过 'testing' 对剩余 20% 的数据(测试集)测试模型的准确性,看看您的模型是否擅长预测正确的结果。这会给你一个百分比的准确性。通常越高越好,除非你有严重不平衡的 classes,在这种情况下,你的 classifier 将总是预测更常见的 class 以获得简单的高精度。
最后,如果准确性令人满意,您可以找出您的模型认为哪些预测变量对实现该预测水平最重要,即变量重要性。我认为这就是你所追求的。所以 运行 这每隔几个小时就会告诉您集合中的哪些特征(列)最适合预测卡车是否迟到。
显然,这说起来容易做起来难,而且您通常必须对数据进行大量清理,有时是归一化(尽管在随机森林的情况下不是),有时是对 class化验进行加权,有时设计新功能...这是一个专注的职业是有原因的。
基本上您要问的是 "how do I do Data Science?"。希望这能让您入门,剩下的(即学习)就靠您了。
我正在尝试在我的工作中使用机器学习,但我找不到一种方法来使其适应我的需要。而且我不知道它是否已经是一个已知问题,或者我是否正在处理尚无已知解决方案的问题。 假设我有很多自变量,编码为 onehot,以及一个只有两个状态的因变量:True(结果有错误)和 False(结果成功)
我的自变量是我在 API 中用于查询的参数,结果是返回 API 的参数。
我的 objective 是检测一个模式,我可以在几个小时的特定时间范围内在数据集中看到失败的参数,这样我就可以避免查询 API 如果我肯定会失败。
(我每天处理数百万个查询,这种机制对于良好的用户体验至关重要)
我将尝试举一个例子,以便您了解我的需要。 假设我有一家送货公司,我有 3 辆卡车,我可以走 3 条不同的路线。
因此,我的虚拟变量将是 T1、T2、T3、R1、R2 和 R3(我可以删除 T3 和 R3,因为忽略了其他 2 个) 然后,我有一个关于交货延迟时间的大数据集。所以: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__
不仅我想说 "in most cases, truck 1 arrives late, it could have a problem, I shouldn't send it more",这也是一个有效的结果,而且我还想检测如下内容:"in most cases, truck 1 arrives late when it goes in the route 1, probably this type of truck has a problem on this specific route"
这个数据集是一个例子,真实的数据集很大,有上千个因变量,所以在同一个数据集中可能有不止一个问题。
示例:卡车 1 在路线 1 上有问题,卡车 3 在路线 1 上有问题。
示例2:卡车1在路线1上有问题,卡车3在任何路线上都有问题。
所以,我会像这样创建一个黑名单:
示例:如果 (truck=1 AND route=1) OR (truck=3 AND route=1)
则阻止示例 2:如果 (truck=1 AND route=1) OR truck=3
则阻止我实际上是在没有机器学习的情况下这样做的,使用丑陋的代码生成独立列的大量笛卡尔积,并计算 "delayed" 的数量。然后我选择最差的 delayed/total 比例,将其列入黑名单,然后用新值再次迭代。
这个错误通常是暂时的,所以我会每隔几个小时发送一个新的数据集,我不需要生命周期分析,除了算法考虑这些临时问题。
任何人都知道我可以使用什么,或者我可以在哪里调查它?
如果需要,请随时询问更多信息。
提前致谢!
此致
您应该检查用于机器学习 classifier 的 scikit-learn 包(随机森林是行业标准)。对于这个问题,您可以将一部分数据(训练集,比如 80% 的数据)提供给模型,它会学习如何预测结果变量(delayed/not 延迟)。
然后,您可以通过 'testing' 对剩余 20% 的数据(测试集)测试模型的准确性,看看您的模型是否擅长预测正确的结果。这会给你一个百分比的准确性。通常越高越好,除非你有严重不平衡的 classes,在这种情况下,你的 classifier 将总是预测更常见的 class 以获得简单的高精度。
最后,如果准确性令人满意,您可以找出您的模型认为哪些预测变量对实现该预测水平最重要,即变量重要性。我认为这就是你所追求的。所以 运行 这每隔几个小时就会告诉您集合中的哪些特征(列)最适合预测卡车是否迟到。
显然,这说起来容易做起来难,而且您通常必须对数据进行大量清理,有时是归一化(尽管在随机森林的情况下不是),有时是对 class化验进行加权,有时设计新功能...这是一个专注的职业是有原因的。
基本上您要问的是 "how do I do Data Science?"。希望这能让您入门,剩下的(即学习)就靠您了。