99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用三種穩(wěn)健線性回歸模型處理異常值

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Eryk Lewinson ? 2022-10-10 14:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

線性回歸是最簡單的機(jī)器學(xué)習(xí)模型之一。它通常不僅是學(xué)習(xí)數(shù)據(jù)科學(xué)的起點(diǎn),也是構(gòu)建快速簡單的最小可行產(chǎn)品( MVP )的起點(diǎn),然后作為更復(fù)雜算法的基準(zhǔn)。

一般來說,線性回歸擬合最能描述特征和目標(biāo)值之間線性關(guān)系的直線(二維)或超平面(三維及三維以上)。該算法還假設(shè)特征的概率分布表現(xiàn)良好;例如,它們遵循高斯分布。

異常值是位于預(yù)期分布之外的值。它們導(dǎo)致特征的分布表現(xiàn)較差。因此,模型可能會向異常值傾斜,正如我已經(jīng)建立的那樣,這些異常值遠(yuǎn)離觀測的中心質(zhì)量。自然,這會導(dǎo)致線性回歸發(fā)現(xiàn)更差和更有偏差的擬合,預(yù)測性能較差。

重要的是要記住,異常值可以在特征和目標(biāo)變量中找到,所有場景都可能惡化模型的性能。

有許多可能的方法來處理異常值:從觀察值中刪除異常值,處理異常值(例如,將極端觀察值限制在合理值),或使用非常適合自己處理此類值的算法。本文重點(diǎn)介紹了這些穩(wěn)健的方法。

安裝程序

我使用相當(dāng)標(biāo)準(zhǔn)的庫:numpy、pandas、scikit-learn。我在這里使用的所有模型都是從scikit-learn的linear_model模塊導(dǎo)入的。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns from sklearn import datasets
from sklearn.linear_model import (LinearRegression, HuberRegressor, RANSACRegressor, TheilSenRegressor)

數(shù)據(jù)

鑒于目標(biāo)是展示不同的魯棒算法如何處理異常值,第一步是創(chuàng)建定制的數(shù)據(jù)集,以清楚地顯示行為中的差異。為此,請使用scikit-learn中提供的功能。

首先創(chuàng)建一個包含 500 個觀察值的數(shù)據(jù)集,其中包含一個信息性特征。只有一個特征和目標(biāo),繪制數(shù)據(jù)以及模型的擬合。此外,指定噪聲(應(yīng)用于輸出的標(biāo)準(zhǔn)差),并創(chuàng)建包含基礎(chǔ)線性模型系數(shù)的列表;也就是說,如果線性回歸模型適合生成的數(shù)據(jù),系數(shù)會是多少。在本例中,系數(shù)的值為 64.6 。提取所有模型的系數(shù),并使用它們來比較它們與數(shù)據(jù)的擬合程度。

接下來,用異常值替換前 25 個觀察值(占觀察值的 5% ),遠(yuǎn)遠(yuǎn)超出生成的觀察值的質(zhì)量。請記住,先前存儲的系數(shù)來自沒有異常值的數(shù)據(jù)。包括他們會有所不同。

N_SAMPLES = 500
N_OUTLIERS = 25 X, y, coef = datasets.make_regression( n_samples=N_SAMPLES, n_features=1, n_informative=1, noise=20, coef=True, random_state=42
)
coef_list = [["original_coef", float(coef)]] # add outliers np.random.seed(42)
X[:N_OUTLIERS] = 10 + 0.75 * np.random.normal(size=(N_OUTLIERS, 1))
y[:N_OUTLIERS] = -15 + 20 * np.random.normal(size=N_OUTLIERS) plt.scatter(X, y);

圖 1 。生成的數(shù)據(jù)和手動添加的異常值

線性回歸

從良好的舊線性回歸模型開始,該模型可能受到異常值的高度影響。使用以下示例將模型與數(shù)據(jù)擬合:

lr = LinearRegression().fit(X, y)
coef_list.append(["linear_regression", lr.coef_[0]])

然后準(zhǔn)備一個用于繪制模型擬合的對象。plotline_X對象是一個 2D 數(shù)組,包含在生成的數(shù)據(jù)集指定的間隔內(nèi)均勻分布的值。使用此對象獲取模型的擬合值。它必須是 2D 數(shù)組,因?yàn)樗?code style="font-size:inherit;color:inherit;margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;line-height:inherit;vertical-align:baseline;background-color:rgb(244,244,244);">scikit-learn中模型的預(yù)期輸入。然后創(chuàng)建一個fit_df數(shù)據(jù)框,在其中存儲擬合值,通過將模型擬合到均勻分布的值來創(chuàng)建。

plotline_X = np.arange(X.min(), X.max()).reshape(-1, 1) fit_df = pd.DataFrame( index = plotline_X.flatten(), data={"linear_regression": lr.predict(plotline_X)}
)

準(zhǔn)備好數(shù)據(jù)框架后,繪制線性回歸模型與具有異常值的數(shù)據(jù)的擬合圖。

fix, ax = plt.subplots()
fit_df.plot(ax=ax)
plt.scatter(X, y, c="k")
plt.title("Linear regression on data with outliers");

圖 2 顯示了異常值對線性回歸模型的顯著影響。

圖 2 :線性回歸模型對含有異常值的數(shù)據(jù)的擬合

使用線性回歸獲得了基準(zhǔn)模型?,F(xiàn)在是時候轉(zhuǎn)向穩(wěn)健回歸算法了。

Huber Regression

Huber regression 是穩(wěn)健回歸算法的一個示例,該算法為被識別為異常值的觀察值分配較少的權(quán)重。為此,它在優(yōu)化例程中使用 Huber 損耗。下面讓我們更好地了解一下這個模型中實(shí)際發(fā)生了什么。

Huber 回歸最小化以下?lián)p失函數(shù):

\min\limits_{\omega,\sigma}\sum\limits_{i=1}^{n}(\sigma+H_{\epsilon}(\frac{X_i\omega-y_i}{\sigma})\sigma)+\alpha\|\omega\|2^2

其中,\sigma表示標(biāo)準(zhǔn)差,X_i表示特征集,y_i是回歸的目標(biāo)變量,\omega是估計系數(shù)的向量,\alpha是正則化參數(shù)。該公式還表明,根據(jù) Huber 損失,對異常值的處理與常規(guī)觀測不同:

H_{\epsilon}(z)=\begin{cases} z^2, & \text{if}|z|<\epsilon \\ 2\epsilon|z|-\epsilon^2, & \text{otherwise}\end{cases}

Huber 損失通過考慮殘差來識別異常值,用z表示。如果觀察被認(rèn)為是規(guī)則的(因?yàn)闅埐畹慕^對值小于某個閾值),然后應(yīng)用平方損失函數(shù)。否則,將觀察值視為異常值,并應(yīng)用絕對損失。話雖如此,胡伯損失基本上是平方損失函數(shù)和絕對損失函數(shù)的組合。

好奇的讀者可能會注意到,第一個方程類似于 Ridge regression ,即包括 L2 正則化。 Huber 回歸和嶺回歸的區(qū)別在于異常值的處理。

通過分析兩種常用回歸評估指標(biāo):均方誤差( MSE )和平均絕對誤差( MAE )之間的差異,您可能會認(rèn)識到這種損失函數(shù)的方法。與 Huber 損失的含義類似,我建議在處理異常值時使用 MAE ,因?yàn)樗粫衿椒綋p失那樣嚴(yán)重地懲罰這些觀察值。

與前一點(diǎn)相關(guān)的是,優(yōu)化平方損失會導(dǎo)致均值周圍的無偏估計,而絕對差會導(dǎo)致中值周圍的無偏估計。中位數(shù)對異常值的魯棒性要比平均值強(qiáng)得多,因此預(yù)計這將提供一個偏差較小的估計。

使用默認(rèn)值 1.35 ,這決定了回歸對異常值的敏感性。 Huber ( 2004 )表明,當(dāng)誤差服從正態(tài)分布且\sigma= 1 和= 1.35 時,相對于 OLS 回歸,效率達(dá)到 95% 。

對于您自己的用例,我建議使用網(wǎng)格搜索等方法調(diào)整超參數(shù)alpha和epsilon。

使用以下示例將 Huber 回歸擬合到數(shù)據(jù):

huber = HuberRegressor().fit(X, y)
fit_df["huber_regression"] = huber.predict(plotline_X)
coef_list.append(["huber_regression", huber.coef_[0]])

圖 3 顯示了擬合模型的最佳擬合線。

圖 3 。 Huber 回歸模型對含異常值數(shù)據(jù)的擬合

RANSAC 回歸

隨機(jī)樣本一致性( RANSAC )回歸 是一種非確定性算法,試圖將訓(xùn)練數(shù)據(jù)分為內(nèi)聯(lián)(可能受到噪聲影響)和異常值。然后,它僅使用內(nèi)聯(lián)線估計最終模型。

RANSAC 是一種迭代算法,其中迭代包括以下步驟:

從初始數(shù)據(jù)集中選擇一個隨機(jī)子集。

將模型擬合到選定的隨機(jī)子集。默認(rèn)情況下,該模型是線性回歸模型;但是,您可以將其更改為其他回歸模型。

使用估計模型計算初始數(shù)據(jù)集中所有數(shù)據(jù)點(diǎn)的殘差。絕對殘差小于或等于所選閾值的所有觀察值都被視為內(nèi)聯(lián),并創(chuàng)建所謂的共識集。默認(rèn)情況下,閾值定義為目標(biāo)值的中值絕對偏差( MAD )。

如果足夠多的點(diǎn)被分類為共識集的一部分,則擬合模型保存為最佳模型。如果當(dāng)前估計模型與當(dāng)前最佳模型具有相同的內(nèi)聯(lián)數(shù),則只有當(dāng)其得分更好時,才認(rèn)為它更好。

迭代執(zhí)行步驟的次數(shù)最多,或者直到滿足特殊停止標(biāo)準(zhǔn)??梢允褂萌齻€專用超參數(shù)設(shè)置這些標(biāo)準(zhǔn)。如前所述,最終模型是使用所有內(nèi)部樣本估計的。

將 RANSAC 回歸模型與數(shù)據(jù)擬合。

ransac = RANSACRegressor(random_state=42).fit(X, y)
fit_df["ransac_regression"] = ransac.predict(plotline_X)
ransac_coef = ransac.estimator_.coef_
coef_list.append(["ransac_regression", ransac.estimator_.coef_[0]])

如您所見,恢復(fù)系數(shù)的過程有點(diǎn)復(fù)雜,因?yàn)槭紫刃枰褂?code style="font-size:inherit;color:inherit;margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;line-height:inherit;vertical-align:baseline;background-color:rgb(244,244,244);">estimator_訪問模型的最終估計器(使用所有已識別的內(nèi)聯(lián)線訓(xùn)練的估計器)。由于它是一個LinearRegression對象,請像前面一樣繼續(xù)恢復(fù)系數(shù)。然后,繪制 RANSAC 回歸擬合圖(圖 4 )。

Graph showing the fit of the RANSAC regression model to the data with outliers.

圖 4 。 RANSAC 回歸模型對含有異常值的數(shù)據(jù)的擬合

使用 RANSAC 回歸,您還可以檢查模型認(rèn)為是內(nèi)聯(lián)值和離群值的觀察值。首先,檢查模型總共識別了多少異常值,然后檢查手動引入的異常值中有多少與模型的決策重疊。訓(xùn)練數(shù)據(jù)的前 25 個觀察值都是引入的異常值。

inlier_mask = ransac.inlier_mask_
outlier_mask = ~inlier_mask
print(f"Total outliers: {sum(outlier_mask)}")
print(f"Outliers you added yourself: {sum(outlier_mask[:N_OUTLIERS])} / {N_OUTLIERS}")

運(yùn)行該示例將打印以下摘要:

Total outliers: 51
Outliers you added yourself: 25 / 25

大約 10% 的數(shù)據(jù)被確定為異常值,所有引入的觀察結(jié)果都被正確歸類為異常值。然后可以快速將內(nèi)聯(lián)線與異常值進(jìn)行比較,以查看標(biāo)記為異常值的其余 26 個觀察值。

plt.scatter(X[inlier_mask], y[inlier_mask], color="blue", label="Inliers")
plt.scatter(X[outlier_mask], y[outlier_mask], color="red", label="Outliers")
plt.title("RANSAC - outliers vs inliers");

圖 5 顯示,距離原始數(shù)據(jù)的假設(shè)最佳擬合線最遠(yuǎn)的觀測值被視為異常值。

圖 5 。與 RANSAC 算法識別的異常值進(jìn)行比較的內(nèi)聯(lián)線

泰爾森回歸

scikit-learn中可用的最后一種穩(wěn)健回歸算法是 Theil-Sen regression 。這是一種非參數(shù)回歸方法,這意味著它不假設(shè)基礎(chǔ)數(shù)據(jù)分布。簡而言之,它涉及在訓(xùn)練數(shù)據(jù)子集上擬合多元回歸模型,然后在最后一步聚合系數(shù)。

下面是算法的工作原理。首先,它計算從訓(xùn)練集 X 中的所有觀察值創(chuàng)建的大小為 p (超參數(shù)n_subsamples)的子集上的最小二乘解(斜率和截距)。如果計算截距(可選),則必須滿足以下條件p 》= n_features + 1。直線的最終斜率(可能還有截距)定義為所有最小二乘解的(空間)中值。

該算法的一個可能缺點(diǎn)是計算復(fù)雜度,因?yàn)樗梢钥紤]等于n_samples choose n_subsamples的最小二乘解總數(shù),其中n_samples是 X 中的觀測數(shù)。鑒于這一數(shù)字可能迅速擴(kuò)大,可以做幾件事:

在樣本數(shù)量和特征方面,只對小問題使用該算法。然而,由于明顯的原因,這可能并不總是可行的。

調(diào)整n_subsamples超參數(shù)。值越低,對異常值的魯棒性越高,但效率越低,而值越高,魯棒性越低,效率越高。

使用max_subpopulation超參數(shù)。如果n_samples choose n_subsamples的總值大于max_subpopulation,則該算法僅考慮給定最大大小的隨機(jī)子種群。自然,僅使用所有可能組合的隨機(jī)子集會導(dǎo)致算法失去一些數(shù)學(xué)特性。

此外,請注意,估計器的穩(wěn)健性隨著問題的維數(shù)迅速降低。要了解這在實(shí)踐中的效果,請使用以下示例估計泰爾森回歸:

theilsen = TheilSenRegressor(random_state=42).fit(X, y)
fit_df["theilsen_regression"] = theilsen.predict(plotline_X)
coef_list.append(["theilsen_regression", theilsen.coef_[0]])

圖 6 。泰爾森回歸模型對含有異常值的數(shù)據(jù)的擬合

模型比較

到目前為止,已經(jīng)對包含異常值的數(shù)據(jù)擬合了三種穩(wěn)健回歸算法,并確定了各個最佳擬合線?,F(xiàn)在是進(jìn)行比較的時候了。

從圖 7 的目視檢查開始。為了顯示太多行,未打印原始數(shù)據(jù)的擬合行。然而,考慮到大多數(shù)數(shù)據(jù)點(diǎn)的方向,很容易想象它是什么樣子。顯然, RANSAC 和泰爾森回歸得到了最準(zhǔn)確的最佳擬合線。

圖 7 。所有考慮的回歸模型的比較

更準(zhǔn)確地說,請查看估計系數(shù)。表 1 顯示, RANSAC 回歸結(jié)果最接近原始數(shù)據(jù)之一。有趣的是, 5% 的異常值對正則線性回歸擬合的影響有多大。

你可能會問哪種穩(wěn)健回歸算法最好?通常情況下,答案是“視情況而定”以下是一些指導(dǎo)原則,可以幫助您找到適合您具體問題的正確模型:

一般來說,在高維環(huán)境中進(jìn)行穩(wěn)健擬合是困難的。

與泰爾·森和蘭薩克不同的是,休伯回歸并沒有試圖完全過濾掉異常值。相反,它會減少它們對貼合度的影響。

Huber 回歸應(yīng)該比 RANSAC 和 Theil-Sen 更快,因?yàn)楹笳哌m用于較小的數(shù)據(jù)子集。

泰爾森和 RANSAC 不太可能像 使用默認(rèn)超參數(shù)的 Huber 回歸。

RANSAC 比泰爾森更快,并且隨著樣本數(shù)的增加,其擴(kuò)展性更好。

RANSAC 應(yīng)該更好地處理 y 方向上的大異常值,這是最常見的場景。

考慮到前面的所有信息,您還可以根據(jù)經(jīng)驗(yàn)對所有三種穩(wěn)健回歸算法進(jìn)行實(shí)驗(yàn),看看哪一種最適合您的數(shù)據(jù)。

關(guān)于作者

Eryk Lewinson 是一位數(shù)據(jù)科學(xué)家,有定量金融方面的背景。在他的職業(yè)生涯中,他曾為兩家咨詢公司工作,一家金融科技公司,最近為荷蘭最大的在線零售商工作。在他的工作中,他使用機(jī)器學(xué)習(xí)為公司生成可操作的見解。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于RK3568國產(chǎn)處理器教學(xué)實(shí)驗(yàn)箱操作案例分享:一元線性回歸實(shí)驗(yàn)

    根據(jù)患者的病歷數(shù)據(jù)(如體檢指標(biāo)、藥物服用情況、平時的飲食習(xí)慣等)預(yù)測某種疾病發(fā)生的概率。站在數(shù)據(jù)挖掘的角度看待線性回歸模型,它屬于一有監(jiān)督的學(xué)習(xí)算法,即在建模過程中必須同時具備自變量
    發(fā)表于 12-05 14:14

    異常值概述及檢驗(yàn)處理

    異常值處理
    發(fā)表于 04-26 13:13

    回歸算法有哪些,常用回歸算法(3)詳解

    有兩個重要組成部分:自變量和因變量之間的關(guān)系,以及不同自變量對因變量影響的強(qiáng)度。以下是幾種常用的回歸方法:線性回歸:使用最廣泛的建模技術(shù)之一。已存在 200 多年,已經(jīng)從幾乎所有可能的角度進(jìn)行了研究
    發(fā)表于 07-28 14:36

    TensorFlow實(shí)現(xiàn)簡單線性回歸

    ??梢詫?shù)據(jù)進(jìn)行歸一化處理: 為訓(xùn)練數(shù)據(jù)聲明 TensorFlow 占位符: 創(chuàng)建 TensorFlow 的權(quán)重和偏置變量且初始值為零: 定義用于預(yù)測的線性回歸模型: 定義損失函數(shù):
    發(fā)表于 08-11 19:34

    TensorFlow實(shí)現(xiàn)多元線性回歸(超詳細(xì))

    初始化權(quán)重: 定義要用于預(yù)測的線性回歸模型。現(xiàn)在需要矩陣乘法來完成這個任務(wù): 為了更好地求微分,定義損失函數(shù): 選擇正確的優(yōu)化器: 定義初始化操作符: 開始計算圖: 繪制損失函數(shù): 在這里,我們發(fā)現(xiàn)損失
    發(fā)表于 08-11 19:35

    常用的FBAR模型有哪三種?

    常用的FBAR模型有哪三種?
    發(fā)表于 03-11 06:16

    使用PyMC3包實(shí)現(xiàn)貝葉斯線性回歸

    分布。這個方法相當(dāng)復(fù)雜,原理方面我們這里不做詳細(xì)描述,這里只說明一些簡單的概念,為什么使用MCMC呢?  頻率主義和貝葉斯回歸方法之間的關(guān)鍵區(qū)別在于他們?nèi)绾?b class='flag-5'>處理參數(shù)。在頻率統(tǒng)計中,線性回歸
    發(fā)表于 10-08 15:59

    使用KNN進(jìn)行分類和回歸

    一般情況下k-Nearest Neighbor (KNN)都是用來解決分類的問題,其實(shí)KNN是一可以應(yīng)用于數(shù)據(jù)分類和預(yù)測的簡單算法,本文中我們將它與簡單的線性回歸進(jìn)行比較。KNN模型
    發(fā)表于 10-28 14:44

    多響應(yīng)線性回歸模型Bayes最優(yōu)設(shè)計的等價性定理

    多響應(yīng)線性回歸模型Bayes最優(yōu)設(shè)計的等價性定理:討論多響應(yīng)線性回歸模型的Bayes設(shè)計問題,給
    發(fā)表于 10-25 12:23 ?15次下載

    基于支持向量回歸的交易模型穩(wěn)健性策略

    交易模型穩(wěn)健性,指的是該模型的利潤率曲線的波動性較小,沒有大起大落。針對一個基于支持向量回歸(SVR)技術(shù)的算法交易模型
    發(fā)表于 12-05 15:30 ?0次下載
    基于支持向量<b class='flag-5'>回歸</b>的交易<b class='flag-5'>模型</b>的<b class='flag-5'>穩(wěn)健</b>性策略

    基于Weierstrass逼近定理在非線性回歸模型中應(yīng)用

    基于Weierstrass逼近定理,闡釋了將一般非線性回歸模型近似為多項式模型處理的數(shù)學(xué)原理,從而引入了把多元非線性回歸分析轉(zhuǎn)化為多元
    發(fā)表于 01-12 09:59 ?0次下載

    掌握logistic regression模型,有必要先了解線性回歸模型和梯度下降法

    先回想一下線性回歸,線性回歸模型幫助我們用最簡單的線性方程實(shí)現(xiàn)了對數(shù)據(jù)的擬合,然而,這只能完成
    的頭像 發(fā)表于 06-04 11:31 ?7894次閱讀
    掌握logistic regression<b class='flag-5'>模型</b>,有必要先了解<b class='flag-5'>線性</b><b class='flag-5'>回歸</b><b class='flag-5'>模型</b>和梯度下降法

    基于低秩表示的魯棒線性回歸模型

    現(xiàn)有的線性回歸方法不能有效處理噪聲和異常數(shù)據(jù)。針對這一問題,結(jié)合低秩表示和魯棒回歸方法構(gòu)建模型L
    發(fā)表于 05-28 10:56 ?4次下載

    數(shù)據(jù)清洗、缺失值填充和異常值處理

    綜上所述,數(shù)據(jù)清洗、缺失值填充和異常值處理對數(shù)據(jù)分析非常重要,并且 MATLAB 提供了許多工具來實(shí)現(xiàn)這些步驟??梢愿鶕?jù)具體情況選擇合適的函數(shù)和方法來處理數(shù)據(jù)。
    的頭像 發(fā)表于 06-21 15:30 ?3785次閱讀

    靜電放電ESD三種模型及其防護(hù)設(shè)計

    點(diǎn)擊關(guān)注,電磁兼容不迷路。靜電放電ESD三種模型及其防護(hù)設(shè)計ESD:ElectrostaticDischarge,即是靜電放電,每個從事硬件設(shè)計和生產(chǎn)的工程師都必須掌握ESD的相關(guān)知識。為了定量
    的頭像 發(fā)表于 09-15 08:02 ?4479次閱讀
    靜電放電ESD<b class='flag-5'>三種</b><b class='flag-5'>模型</b>及其防護(hù)設(shè)計