2

我有两个数据集(A 和 B)。他们每个人都有 1000 个号码。

99% 的时间:A < 5 <= B

但是,有 1% 的时间 B < 5 < A。

如果划分点未知 - x- 如何确定x任何给定的数据集?

显然是Max(A)误导Min(B)。而且我不希望遍历整个范围(甚至只是在 Min(B) 和 Max(A) 之间)猜测和识别最大可能的分割点。

Sample Dataset

A 1
A 1
A 1
A 2
B 2 <--anomoly
A 3
A 3
A 3
A 4
A 5 <--anomoly
B 5 <--division, or `x`
B 5
B 5
B 5
A 6 <--anomoly
B 7
B 8
B 8
B 8
B 9
B 9
B 10
B 10

假设存在另一对数据集(C & D)。在允许一定的异常阈值后,如何找到 C 变为 D 的点。

你有什么建议吗?

这是一个粗略的“猜测”策略。我想在没有“猜测”循环的情况下得到同样的结果。

$maxProbable = 0;
$pointOfDivision = 0;
for ($i = Min($b); $i <= Max($a); $i++) {
    // get probability $i is in_array($a)
    $countBelow = below($i,$a); // assume function returns count of $a items below $i
    $countAbove = above($i,$b); // assume function returns count of $b items above $i
    $probBelow = $countBelow/count($a);
    $probAbove = $countAbove/count($b);
    if (($probBelow+$probAbove) > $maxProbable) {
        $maxProbable = $probBelow+$probAbove;
        $pointOfDivision = $i;
    }
}
echo $pointOfDivision;
4

1 回答 1

0

这是统计学和机器学习中的一个众所周知的问题:给定许多标记的数据点,确定新数据点的最可能标签。在一维情况下,它通常归结为确定阈值 x 并说“任何低于 x 的东西都有标签 A”和“任何高于 x 的东西都有标签 B”。

有很多算法:您可以使用例如逻辑回归神经网络支持向量机。算法的选择取决于可以假设的数据以及可用的工具和库;例如,SVM 显然很难自己实现。

如果您告诉了数据是如何生成的,或者它是否来自众所周知的统计分布,那么可能有一条捷径可以找到一个不太复杂但仍然足够的解决方案。

于 2013-08-26T14:28:55.423 回答