这个例子展示了如何使用分位数检测异常值随机森林。分位数随机森林可以检测异常值的条件分布
鉴于
。然而,这种方法不能检测异常值的预测数据。预测数据中的异常值检测使用决策树的一个袋子,看到OutlierMeasure
财产的TreeBagger
模型。
一个离群值是一个观察,位于足够远从其他观测数据集,可以认为是异常。外围观察的原因包括内在可变性或测量误差。离群值显著影响估计和推断,所以它是重要的检测并决定是否删除它们或者考虑一个健壮的分析。
统计和机器学习工具箱™提供了一些函数来检测异常值,包括:
同时,MATLAB®提供了isoutlier
函数,发现数据中的异常值。
为了演示异常值检测,这个例子:
从非线性模型异方差性和生成数据模拟一些异常值。
分位数的随机森林回归树生长。
有条件的四分位数估计( , , )和四分位范围( )范围内的预测变量。
比较观察到栅栏,它们的数量 和 。任何小于的观察 或大于 是一个例外。
产生500的观测模型
0之间均匀分布 , 。将数据存储在一个表。
n = 500;rng (“默认”);%的再现性t = randsample (linspace(1 0 4 *πe6), n, true) ';ε= randn (n, 1)。* sqrt ((t + 0.01));y = 10 + 3 * t + t。*罪(2 * 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”);标题(数据的散点图);传奇(“数据”,“模拟异常值”,“位置”,“西北”);
一袋200回归树使用生长TreeBagger
。
Mdl = TreeBagger(200台,“y”,“方法”,“回归”);
Mdl
是一个TreeBagger
合奏。
利用分位数回归,50条件四分位数估计的等距的值的范围内t
。
τ= (0.25 0.5 0.75);predT = linspace(0, 4 *π,50)';四分位数= quantilePredict (Mdl predT,分位数的,τ);
四分位数
500 -,- 3矩阵的条件四分位数。行对应的观测t
,列对应的概率τ
。
在数据的散点图,画出条件均值和中位数的反应。
小气鬼=预测(Mdl predT);情节(predT(四分位数(:,2)小气鬼),“线宽”2);传奇(“数据”,“模拟异常值”,“平均响应”,“平均响应”,…“位置”,“西北”);持有从;
虽然条件均值和中位数曲线接近,模拟异常值会影响均值曲线。
计算条件 , , 。
差=四分位数(:3)-四分位数(:1);k = 1.5;f1 =四分位数(:1)- k *差;f2 =四分位数(:,3)+ k *差;
k = 1.5
意味着所有观测不到f1
或大于f2
被认为是异常值,但这个阈值并不消除歧义从极端的异常值。一个k
的3
确定极端异常值。
观察和栅栏的阴谋。
图;情节(Tbl.t Tbl.y,“。”);持有在情节(Tbl.t (idx) Tbl.y (idx),‘*’);情节(predT, f1 f2);传奇(“数据”,“模拟异常值”,“f”,“₂”,“位置”,“西北”);轴紧标题(孤立点检测利用分位数回归的)举行从
所有模拟异常值超出 这个区间以外,一些观察。