拓端tecdat|matlab使用分位數(shù)隨機森林(QRF)回歸樹檢測異常值
原文鏈接:http://tecdat.cn/?p=22160?
原文出處:拓端數(shù)據(jù)部落公眾號
這個例子展示了如何使用分位數(shù)隨機林來檢測異常值。分位數(shù)隨機林可以檢測到與給定X的Y的條件分布有關的異常值。
離群值是一些觀測值,它的位置離數(shù)據(jù)集中的大多數(shù)其他觀測值足夠遠,可以認為是異常的。離群觀測的原因包括固有的變異性或測量誤差。異常值顯著影響估計和推斷,因此檢測它們決定是刪除還是穩(wěn)健分析非常重要。
為了演示異常值檢測,此示例:
從具有異方差性的非線性模型生成數(shù)據(jù),并模擬一些異常值。
生長回歸樹的分位數(shù)隨機森林。
估計預測變量范圍內的條件四分位(Q1、Q2和Q3)和四分位距(IQR)。
將觀測值與邊界進行比較,邊界為F1=Q1?1.5IQR和F2=Q3+1.5IQR。任何小于F1或大于F2的觀測值都是異常值。
生成數(shù)據(jù)
從模型中生成500個觀測值
在0 ~ 4π之間均勻分布,εt約為N(0,t+0.01)。將數(shù)據(jù)存儲在表中。
rng('default'); % 為保證重復性
randsample(linspace(0,4*pi,1e6),n,true)';
epsilon = randn(n,1).*sqrt((t+0.01));
將五個觀測值沿隨機垂直方向移動90%的值。
numOut = 5;
Tbl.y(idx) + randsample([-1 1],numOut,true)'.*(0.9*Tbl.y(idx));
繪制數(shù)據(jù)的散點圖并識別異常值。
plot(Tbl.t,Tbl.y,'.');
plot(Tbl.t(idx),Tbl.y(idx),'*');
title('數(shù)據(jù)散點圖');
legend('數(shù)據(jù)','模擬異常值','Location','NorthWest');

生成分位數(shù)隨機森林
生成200棵回歸樹。
Tree(200,'y','regression');
返回是一個TreeBagger集合。
預測條件四分位數(shù)和四分位數(shù)區(qū)間
使用分位數(shù)回歸,估計t范圍內50個等距值的條件四分位數(shù)。
linspace(0,4*pi,50)';
quantile(pred,'Quantile');
quartile是一個500 × 3的條件四分位數(shù)矩陣。行對應于t中的觀測值,列對應于概率。
在數(shù)據(jù)的散點圖上,繪制條件均值和中值因變量。
plot(pred,[quartiles(:,2) meanY]);
legend('數(shù)據(jù)','模擬的離群值','中位數(shù)因變量','平均因變量',...

雖然條件均值和中位數(shù)曲線很接近,但模擬的離群值會影響均值曲線。
計算條件IQR、F1和F2。
iqr = quartiles(:,3) - quartiles(:,1);
f1 = quartiles(:,1) - k*iqr;
k=1.5意味著所有小于f1或大于f2的觀測值都被認為是離群值,但這一閾值并不能與極端離群值相區(qū)分。k為3時,可確定極端離群值。
將觀測結果與邊界進行比較
繪制觀察圖和邊界。
plot(Tbl.t,Tbl.y,'.');
legend('數(shù)據(jù)','模擬的離群值','F_1','F_2');
title('使用分位數(shù)回歸的離群值檢測')

所有模擬的異常值都在[F1,F(xiàn)2]之外,一些觀測值也在這個區(qū)間之外。

最受歡迎的見解
1.從決策樹模型看員工為什么離職
2.R語言基于樹的方法:決策樹,隨機森林
3.python中使用scikit-learn和pandas決策樹
4.機器學習:在SAS中運行隨機森林數(shù)據(jù)分析報告
5.R語言用隨機森林和文本挖掘提高航空公司客戶滿意度
6.機器學習助推快時尚精準銷售時間序列
7.用機器學習識別不斷變化的股市狀況——隱馬爾可夫模型的應用
8.python機器學習:推薦系統(tǒng)實現(xiàn)(以矩陣分解來協(xié)同過濾)
9.python中用pytorch機器學習分類預測銀行客戶流失