自动编码器解决方案
你可以试试自动编码器。自动编码器将采用输入向量,并尝试将其重新创建为输出。所以你接受你的输入,并使用你选择的度量来测量输入和预测输出变量之间的距离(欧几里得应该可以工作,但可以尝试各种)。更大的距离可以被认为是更不正常的。因此,您可以将您的观察结果从最奇怪到最正常进行排序。
不过,请确保您仅在正常数据上训练自动编码器。这当然会假设您有超过 13 个您正在查看的样本。如果不是,这可能不会很好地工作,只是因为样本太小。
KDE 解决方案
这个想法是使用核密度估计来生成数据集的非参数联合密度。然后你会发现找到一个极端值的概率是多少。下面是一些使用 python 的 sklearn 包的代码:
from sklearn.neighbors.kde import KernelDensity
import numpy as np
X=np.matrix([[1.3269, 1.3354, 1.3318, 1.3282, 1.34666, 1.3460, 1.36084, 1.3526, 1.3539, 1.3510, 1.3480, 1.3479, 1.34893],[0.0352, 0.0992, 0.1570, 0.1431, 0.1634, 0.1629, 0.1046, 0.1655, 0.1635, 0.1642, 0.1658, 0.1666, 0.15735]])
kde = KernelDensity(kernel='gaussian', bandwidth=.45).fit(X.T)
score=kde.score_samples(X.T)
prob=np.exp(score)
print(prob/prob[6])
这段代码表明,在最低概率密度区域的观测值是观测值 1,2 和 7。当然,这对于更大的样本会更好,并且您需要对带宽大惊小怪来校准它,但应该这样做。