成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

神經網絡中的分位數回歸和分位數損失

人工智能 機器學習
在使用機器學習構建預測模型時,我們不只是想知道“預測值(點預測)”,而是想知道“預測值落在某個范圍內的可能性有多大(區間預測)”。

在使用機器學習構建預測模型時,我們不只是想知道“預測值(點預測)”,而是想知道“預測值落在某個范圍內的可能性有多大(區間預測)”。例如當需要進行需求預測時,如果只儲備最可能的需求預測量,那么缺貨的概率非常的大。但是如果庫存處于預測的第95個百分位數(需求有95%的可能性小于或等于該值),那么缺貨數量會減少到大約20分之1。

獲得這些百分位數值的機器學習方法有:

  • scikit-learn:GradientBoostingRegressor(loss='quantile, alpha=alpha)
  • LightGBM: LGBMRegressor(objective='quantile', alpha=alpha)
  • XGBoost: XGBoostRegressor(objective='reg:quantileerror', quantile_alpha=alpha) (version 2.0~)

這種”預測值落在某個范圍內的可能性有多大(區間預測)”的方法都被稱作分位數回歸,上面的這些機器學習的方法是用了一種叫做Quantile Loss的損失。

Quantile loss是用于評估分位數回歸模型性能的一種損失函數。在分位數回歸中,我們不僅關注預測的中心趨勢(如均值),還關注在分布的不同分位數處的預測準確性。Quantile loss允許我們根據所關注的分位數來量化預測的不確定性。

假設我們有一個預測問題,其中我們要預測一個連續型變量的分布,并且我們關注不同的分位數,例如中位數、0.25分位數、0.75分位數等。對于第q分位數,Quantile Loss定義為:

這里:

  • yy 是真實值。
  • yy 是模型的預測值。
  • qq 是目標分位數,取值范圍為0,10,1。

這個損失函數的核心思想是,當模型的預測值超過真實值時,損失是預測值與真實值的差值乘以q。當預測值低于真實值時,損失是預測值與真實值的差值乘以1?q。這確保了對于不同的分位數,我們有不同的懲罰。如果我們更關心較小分位數(例如,中位數),我們會設定較小的q,反之亦然。

用Pytorch實現分位數損失

下面是一個使用Pytorch將分位數損失定義為自定義損失函數的示例。

import torch
 
 def quantile_loss(y_true, y_pred, quantile):
     errors = y_true - y_pred
     loss = torch.mean(torch.max((quantile - 1) * errors, quantile * errors))
     return loss

對于訓練來說,跟正常的訓練方法一樣:

for epoch in range(num_epochs):
    for batch_x, batch_y in dataloader:
        optimizer.zero_grad()
        outputs = model(batch_x)
        loss = quantile_loss(outputs, batch_y, quantile)
        loss.backward()
        optimizer.step()

讓我們看看這個自定義的損失函數是否如預期的那樣工作。

Pytorch分位數損失測試

首先,我們嘗試為x生成均勻隨機分布(-5~5),為y生成與x指數成比例的正態隨機分布,看看是否可以從x預測y的分位數點。

# Generate dummy data
 num_samples = 10000
 shape = (num_samples, 1)
 torch.manual_seed(0)
 
 # x is uniform random from -5 to 5
 # y is random normal distribution * exp(scaled x)
 x_tensor = torch.rand(shape) * 10 - 5
 x_scaled = x_tensor / 5
 y_tensor = torch.randn(shape) * torch.exp(x_scaled)
 
 # Convert values to NumPy array (for graphs)
 x = x_tensor.numpy()
 y = y_tensor.numpy()

網絡結構很簡單,兩個中間層64個節點+每層relu。在沒有任何正則化或提前停止的情況下使用100次epoch。待預測的四分位數(百分位數)在列中為[0.500,0.700,0.950,0.990,0.995],在行中為批大小[1,4,16,64,256],總共有25個預測。在10,000個訓練數據實例(藍色)中,低于預測輸出值(紅色)的實例的比率在圖中被標記為“實際”值。

低于指定百分位數值的樣本百分比通常接近指定值,并且輸出分位數預測的是非常直接的。

再考慮一個稍微復雜的例子,其中y=clip(x, - 2,2) + randn。其中clip(x, - 2,2)是剪輯函數(將值限制在指定范圍內)。當數字超出給定范圍時,該函數將其限制到最近的邊界(如果將范圍設置為-2到2,并輸入-5的輸入值,該函數將返回-2;如果輸入10,它將返回2),而randn是遵循正態分布的隨機數。網絡結構和其他設置與前一種情況相同。

與前一種情況一樣,低于指定百分位數值的樣本百分比通常接近指定值。分位數預測的理想形狀總是左上角圖中紅線的形狀。它應該隨著指定的百分位數的增加而平行向上移動。當移動到圖的右下方時,預測的紅線呈現出更線性的形狀,這不是一個理想的結果。

讓我們用一個更復雜的形狀,我們的目標是y=2sin(x) + randn。其他設置與前一種情況相同。

可以看到低于指定百分位數值的樣本百分比通常接近指定值。當向5x5圖的右下方移動時,分位數預測的形狀偏離了正弦形狀。在圖的右下方,預測值的紅線變得更加線性。

如何選擇Q

我們看到,如果設置過高的quantile,會得到扁平化的值,那么如何判斷使用Quantile Loss得到的結果是否“扁平”,如何“避免扁平呢”?

檢測“扁平化”的方法之一是一起計算第50、68和95個百分位值,并檢查這些值之間的關系,即使要獲得的最終值是99.5百分位值。如果樣本分布服從正態分布,以μ為均值,σ為標準差

在μ±σ區間內的概率約為68;在μ±2σ區間內的概率約為95;在μ±3σ區間內的概率約為99.7

如果第68百分位-第50百分位、第95百分位-第50百分位和99.5百分位-第50百分位值的比值明顯偏離1:2:3,我們可以確定偏離的百分位值已經“變平”。

避免扁平化”的第一種方法是減少批量大小,如上面的實驗所示。較小的批量大小避免了這個問題,并且不太可能產生平坦的預測。但是減少批大小也有缺點,比如收斂不穩定和增加訓練時間,所以它只是有時一個容易采用的選擇。

第二種方法是在同一批次中收集相似的樣本,而不是隨機生成批次。這避免了“在批內低于和高于預測值的樣本比例與指定的百分位數值之間的平衡”。

最后"扁平化"是無法避免的,我們只能進行緩解,下列符號用于下列方程。

  • P0:第50個百分位值
  • P1:第68個百分位值
  • P2:第95百分位值
  • P3: 99.5百分位值

使用上述變量,可以使用以下流程圖獲得適當的99.5%百分位數值。

總結

分位數回歸是一種強大的統計工具,對于那些關注數據分布中不同區域的問題,以及需要更加靈活建模的情況,都是一種有價值的方法。

本文將介紹了在神經網絡種自定義損失實現分位數回歸,并且介紹了如何檢測和緩解預測結果的"扁平化"問題。Quantile loss在一些應用中很有用,特別是在金融領域的風險管理問題中,因為它提供了一個在不同分位數下評估模型性能的方法。

責任編輯:華軒 來源: DeepHub IMBA
相關推薦

2024-05-07 11:46:50

時間序列概率預測

2024-05-10 11:57:02

時間序列概率

2023-06-18 23:00:39

神經網絡損失函數隨機變量

2019-10-08 15:39:54

人工智能損失函數網絡

2021-06-21 10:43:25

Python神經網絡深度學習

2024-07-10 11:09:35

2015-01-05 17:24:20

JMP

2022-10-17 15:43:14

深度學習回歸模型函數

2018-06-21 15:17:15

機器學習

2025-02-19 15:12:17

神經網絡PyTorch大模型

2018-07-03 16:10:04

神經網絡生物神經網絡人工神經網絡

2023-11-14 16:29:14

深度學習

2018-02-02 17:08:48

機器學習算法決策樹

2009-08-21 16:55:43

C#空格函數

2020-08-06 10:11:13

神經網絡機器學習算法

2025-02-25 14:13:31

2018-08-13 09:00:00

人工智能機器學習神經網絡

2023-05-12 14:58:50

Java神經網絡深度學習

2023-11-03 08:00:00

積分神經網絡DNN

2018-01-29 00:16:16

神經網絡遞歸卷積深度學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品视频一区二区三区 | 狠狠狠色丁香婷婷综合久久五月 | 欧美成人免费 | 在线观看视频一区二区三区 | 久久国产精品99久久久大便 | 欧美电影免费网站 | 亚洲第一天堂 | 中文字幕日韩三级 | 久久久久久久久久爱 | 欧美日韩亚洲系列 | 亚洲永久免费 | 久久国产一区二区三区 | 国产精品久久久久久一区二区三区 | 91网在线播放| 日韩成人一区二区 | 在线中文字幕亚洲 | 91精品国产综合久久久久久漫画 | 亚洲国产精品一区二区第一页 | 免费观看一级特黄欧美大片 | 日本成年免费网站 | 成人水多啪啪片 | 国产成人a亚洲精品 | 91久久久久久久久久久久久 | 羞羞视频免费在线观看 | 亚洲国产二区 | 天天干干 | 暴草美女 | 国产免费福利 | 九九免费视频 | 日韩精品在线一区 | 色综合色综合网色综合 | 国产精品成人一区二区 | 久久五月婷 | 国产三级| 亚洲码欧美码一区二区三区 | 国产精品亚洲成在人线 | 久久亚洲一区 | 欧美一级片在线播放 | 久久成人精品视频 | japanhd美女动| 国产精品久久久久久久久久久久久 |