散点图中的模式检测

机器算法验证 回归 数据可视化 曲线拟合 散点图
2022-03-19 22:38:48

下面是一个散点图(上限为 1 万美元),代表一个项目收到的平均捐款与开放的捐赠者选择数据中代表的所有项目的资金请求文章的字数。

捐赠金额与文章长度

有一个明显的模式,我试图通过拟合曲线来表征

f(x)=(axb)2

通过手动参数操作。但是,我想知道在看起来像这样的数据中进行建模或查找模式/关系的其他方法。


这是促使我寻找其他方法的差异:

在线性回归的典型示例中,散点是与曲线的偏差。在此示例中,显然不是这种情况,因为这些点似乎聚集在某个区域下。

3个回答

只是为了详细说明我的评论,这是一个示例,说明您的明显模式如何可能是由沿 x 轴的数据分布引起的伪影。我生成了 100,000 个数据点。它们正态分布在 x 轴上(),呈指数分布在 y 轴上()。μ=2500,σ=600λ=1

在此处输入图像描述

在散点图的“视觉包络线”之后,有一个清晰的(虽然是虚幻的)模式:y 在 1000< x<4000 的范围内看起来最大。然而,这种明显的模式,在视觉上非常有说服力,只是 x 值的分布造成的伪影。也就是说,在 1000< x<4000 范围内只有更多数据。您可以在底部的 x 直方图中看到这一点。

为了证明这一点,我计算了x 的 bin 中的平均y 值(黑线)。对于所有 x,这几乎是恒定的。如果数据是根据我们从散点图中的直觉分布的,则 1000< x<4000 范围内的平均值应该高于其他范围 - 但事实并非如此。所以真的没有模式。

我并不是说这就是您的数据的全部内容。但我敢打赌这是部分解释。

附录与实际捐赠者选择数据。

带有过度标记的原始散点图:

在此处输入图像描述

不透明度降低的相同散点图:

在此处输入图像描述

出现了不同的模式,但在 800K 数据点的情况下,仍然有很多细节会因过度打击而丢失。

缩放,再次降低不透明度并添加更平滑:

在此处输入图像描述

我猜你在 Y 轴上的变量是指数分布的(),但似乎速率参数会根据你的变量的正常密度概率而变化X 轴。p(y)=λeλyλ

我使用 MatLab 生成了随机数据,使用 X 的正态分布和 Y 的指数分布,,我得到了与您的数据类似的结果:λ=p(x)

在此处输入图像描述

您可以尝试机器学习来拟合参数,更改成本函数以比较“直方图”上每个 bin 的概率密度和速率参数。如果是这样,不要忘记在每次迭代中运行几次随机生成器以最小化成本。

这是我用于情节的代码:

% Normal distribution generation.
x = randn(10000,1);
x = x - min(x);                     % Shifting curve so every x is > 0.

% Histogram informations
k = 100;                            % Number of bins.
binSize = (max(x) - min(x)) / k;    % Width of bins.
y = 0:(k);
y = y .* binSize + min(x);          % Array with Intervals.

p = zeros(k,1);
data = [];

% For every bin...
for i = 1:k
    a = x(x >= y(i) & x < y(i + 1));    % All X values within condition.
    p(i) = size(a,1);                   % Number of occurences (or
                                        % Normal Density Probability).

    if ~isempty(a)
        for j = 1:p(i)

            % lambda = Rate parameter of exponential distribution
            % Rate parameter is varying with normal density probability.
            lambda = p(i);

            % Every X in normal distribution will have a Y
            % which was generated randomly by the exponential 
            % distribution function EXPRND.
            data = [data; a(j), exprnd(lambda)];

        end
    end
end

% Plotting normal distribution VS modified exponential distribution
scatter(data(:,1),data(:,2))

问题提到回归,它通常解决条件期望: 其中是平均捐赠,是单词数。线性回归可能过于严格,因此可以应用局部回归方法,例如 Nadaraya-Watson 核回归。结果可能对带宽的选择很敏感:宽带宽可能会掩盖有趣的局部变化。

E[y|x]=yp(y|x)dy,
yx

更一般地说,之间的独立性问题很有趣。如果是独立的,则,当然条件期望也是独立的。但是即使条件期望独立于 x , y 也可能以有趣的xyxyp(y|x)=p(y)yxx

有了这么多数据,我会查看的直方图,它们都具有几乎相同的值,并查看直方图如何随着的所选值的变化而变化。只有经过这样的调查,我才会考虑如何更正式地进行。yxx