主要内容

使用分位数回归检测异常值

这个例子展示了如何使用分位数随机森林检测异常值。的条件分布,分位数随机森林可以检测离群值 Y 鉴于 X .但是,该方法不能检测到预测数据中的异常值。有关使用一袋决策树在预测器数据中的异常值检测,请参见OutlierMeasure的属性TreeBagger模型。

一个离群值距离数据集中大多数其他观测值足够远的观测值,可以认为是异常观测值。产生外围观测值的原因包括固有的可变性或测量误差。异常值显著影响估计和推断,因此检测它们并决定是否删除它们或考虑稳健分析是很重要的。

统计和机器学习工具箱™提供了几个功能来检测异常值,包括:

  • zscore——计算z大量的观察结果。

  • trimmean-估计数据的平均值,排除异常值。

  • 箱线图-绘制数据箱形图。

  • probplot-绘制概率图。

  • robustcov-估计多元数据的稳健协方差。

  • fitcsvm-拟合一个单类支持向量机(SVM)来金宝app确定哪些观测值位于远离决策边界的位置。

  • dbscan-使用基于密度的噪声应用空间聚类(DBSCAN)算法将观测数据划分为聚类并识别异常值。

此外,MATLAB®提供isoutlier函数,用于查找数据中的异常值。

为了演示异常值检测,以下示例:

  1. 从具有异方差的非线性模型中生成数据,并模拟一些异常值。

  2. 生长一个由回归树组成的分位数随机森林。

  3. 估计条件四分位数( 1 2 , 3. )和四分位范围( R )在预测变量的范围内。

  4. 将观测值与栅栏,这是数量 F 1 1 - 1 5 R 而且 F 2 3. + 1 5 R .任何小于 F 1 或者大于 F 2 是一个异常值。

生成数据

从模型中生成500个观测值

y t 1 0 + 3. t + t 2 t + ε t

t 是均匀分布在0和 4 π , ε t N 0 t + 0 0 1 .将数据存储在表中。

N = 500;rng (“默认”);%用于再现性T = randsample(linspace(0,4*pi,1e6),n,true)';= randn(n,1).*√((t+0.01));Y = 10 + 3*t + t *sin(2*t) +;Tbl = table(t,y);

将5个观测值沿随机垂直方向移动响应值的90%。

numOut = 5;[~,idx] = datasample(Tbl,numOut);Tbl.y (idx) = Tbl.y (idx) + randsample ([1], numOut,真)”。* (0.9 * Tbl.y (idx));

绘制数据的散点图并识别异常值。

图;情节(Tbl.t Tbl.y,“。”);持有情节(Tbl.t (idx) Tbl.y (idx),‘*’);轴;ylabel (“y”);包含(“t”);标题(“数据散点图”);传奇(“数据”“模拟异常值”“位置”“西北”);

图中包含一个轴对象。标题为“数据散点图”的axis对象包含2个类型为line的对象。这些对象表示数据、模拟异常值。

生长分位数随机森林

生长一袋200回归树使用TreeBagger

Mdl = TreeBagger(200,Tbl,“y”“方法”“回归”);

Mdl是一个TreeBagger合奏。

预测条件四分位和四分位间范围

使用分位数回归,估计50个等间距值的条件四分位数t

Tau = [0.25 0.5 0.75];predT = linspace(0,4*pi,50)';quartiles = quantilePredict(Mdl,predT,分位数的,τ);

四分位数是一个500 × 3的条件四分位数矩阵。行对应于t的概率,列对应τ

在数据的散点图上,绘制条件均值和中值响应。

meanY = predict(Mdl,predT);情节(predT(四分位数(:,2)小气鬼),“线宽”2);传奇(“数据”“模拟异常值”“平均响应”“平均响应”...“位置”“西北”);持有

图中包含一个轴对象。标题为“数据散点图”的axis对象包含4个类型为line的对象。这些对象表示数据,模拟异常值,中值响应,平均响应。

虽然条件均值和中值曲线很接近,但模拟的离群值会影响平均曲线。

计算条件 R F 1 , F 2

Iqr = quartiles(:,3) - quartiles(:,1);K = 1.5;F1 =四分位数(:,1)- k*iqr;F2 =四分位数(:,3)+ k*iqr;

K = 1.5意味着所有的观测值小于f1或者大于f2被认为是异常值,但此阈值不能与极端异常值消除歧义。一个k3.识别极端异常值。

将观察结果与围栏进行比较

画出观察结果和围栏。

图;情节(Tbl.t Tbl.y,“。”);持有情节(Tbl.t (idx) Tbl.y (idx),‘*’);情节(predT, f1 f2);传奇(“数据”“模拟异常值”“f”“₂”“位置”“西北”);轴标题(“用分位数回归检测异常值”)举行

图中包含一个轴对象。标题为“使用分位数回归检测异常值”的坐标轴对象包含4个类型行对象。这些对象表示数据,模拟异常值,F_1, F_2。

所有模拟的异常值都落在外面 F 1 F 2 ,一些观测值也在这个区间之外。

另请参阅

功能

相关的话题