主要内容

使用分位数回归检测离群值

这个例子展示了如何使用分位数随机森林检测离群值。分位数随机森林可以检测相对于的条件分布的离群值 Y 鉴于 X .然而,该方法不能检测出预测数据中的异常值。对于使用决策树的预测器数据中的离群值检测,请参见OutlierMeasure财产的TreeBagger模型。

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

Statistics and Machine Learning Toolbox™提供了几个检测异常值的函数,包括:

  • zscore——计算z分数的观察。

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

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

  • probplot-画概率图。

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

  • fitcsvm拟合一类支持向量机(SVM),以确定万博1manbetx哪些观测数据位于远离决策边界的位置。

  • 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(1 0 4 *πe6), n, true) ';ε= randn (n, 1)。* sqrt ((t + 0.01));Y = 10 + 3*t + t.* sin2 *t +;台=表(t, y);

在随机的垂直方向移动5个观察值,移动90%的响应值。

numOut = 5;[~, idx] = datasample(资源描述,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对象包含两个类型为line的对象。这些对象表示数据、模拟离群值。

增长分位数随机森林

种植一袋200棵回归树使用TreeBagger

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

Mdl是一个TreeBagger合奏。

预测条件四分位数和四分位数区间

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

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

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

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

小气鬼=预测(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个类型为line的对象。这些对象代表Data、模拟离群值、F_1、F_2。

所有的模拟异常值都落在外面 F 1 F 2 ,有些观测结果也超出了这个区间。

另请参阅

功能

相关的话题