当使用PELT算法检测以下图片的变化点时,如何获得最优惩罚的值?它需要30的惩罚,数据集的长度为315个样本:

平均值和标准差如下:

对于第二个样本,需要对90个样本的惩罚范围为4到14 :红色标记指示分裂点。信号平均值为26.8,std偏差为7.9。

在此基础上,从断裂库中求出了计算pelt算法惩罚值的公式吗?
发布于 2022-08-22 08:14:52
在实践中,最常见的刑罚选择是与转换点数成线性关系的选择。这类处罚的例子包括Akaike信息准则(AIC) (β = 2p)和Schwarz信息准则(SIC,也称为BIC) (β = p log n)。
您可以简单地使用pen = p * log(len(data)),p用于校准,data是一个数据值数组。
我的建议是通过设置不同的惩罚值来定义算法的灵敏度级别。
def calculate_penalty(data, sensitivity, cal=[6, 3, 1.5]):
if sensitivity == "Low":
return cal[0] * log(len(data))
elif sensitivity == "Medium":
return cal[1] * log(len(data))
elif sensitivity == "High":
return cal[2] * log(len(data))https://stackoverflow.com/questions/71920414
复制相似问题