R語言使用隨機過采樣(Random Oversampling)平衡數據集

隨機過采樣(Random Oversampling)是一種用于平衡數據集的技術,常用于機器學習中處理類別不平衡問題。當某個類別的樣本數量遠少于其他類別時(例如二分類中的正負樣本比例懸殊),模型可能會偏向多數類,導致對少數類的預測性能較差。隨機過采樣通過復制少數類的樣本來增加其數量,從而達到類別平衡的目的。

在這里插入圖片描述
通俗簡單的來說,隨機過采樣是一種簡單但有效的技術,它從少數類中隨機選擇樣本并復制它們,直到各類樣本數量相等或接近為止。

隨機過采樣的優點:
實現簡單。
不改變原始數據分布。
能有效緩解類別不平衡帶來的偏差。

隨機過采樣的缺點:
容易引起過擬合:因為是直接復制已有樣本,模型可能記住這些樣本而不是學習泛化特征。
沒有引入新的信息,只是重復已有樣本。

下面咱們通過R語言簡單介紹一下使用隨機過采樣(Random Oversampling)平衡數據,方法來源于文章(Lunardon, N., Menardi, G., Torelli, N.J.R.J., 2014. ROSE: a Package for Binary )
Imbalanced Learning, 6, p. 79)
先導入R包

# 加載所需庫
library(ROSE)
library(ggplot2)
library(dplyr)

咱們先生成一個不平衡的二分類數據

# 設置隨機種子以確保結果可復現
set.seed(123)
# 假設有 1000 個樣本,其中只有 10% 是正類(y=1)n <- 1000
X1 <- rnorm(n)                    # 特征1
X2 <- rnorm(n)                    # 特征2
y <- rbinom(n, size = 1, prob = 0.1)  # 少數類只占10%# 構建數據框
data <- data.frame(X1 = X1, X2 = X2, y = as.factor(y))

在這里插入圖片描述
咱們可以看到數據的0很多1很少,這個屬于數據陽性比例過少,數據不平衡,

table(data$y)

在這里插入圖片描述
可以看到,陽性結果大概只有十分之一,圖示一下

# 繪制原始數據分布圖
ggplot(data, aes(x = X1, y = X2, color = y)) +geom_point(size=2) +ggtitle("原始數據分布 (不平衡)") +theme_minimal()

在這里插入圖片描述
下面咱們使用隨機過采樣(Random Oversampling)平衡數據,使用 ROSE 包中的 ovun.sample 函數,設置 method = “over”,默認將各類樣本數量調整為與最多類相同,其實非常用以,就是一句話代碼

data_over <- ovun.sample(y ~ ., data = data, method = "over", seed = 123)$data

查看過采樣后的類別分布
在這里插入圖片描述
可以看到,1明顯增多了,圖示一下

# 繪制過采樣后的數據分布圖
ggplot(data_over, aes(x = X1, y = X2, color = y)) +geom_point(size=3) +ggtitle("過采樣后的數據分布 (平衡)") +theme_minimal()

在這里插入圖片描述
最后我來總結一下,ROSE法隨機過采樣方法,屬于比較簡單的平衡數據集方法,隨機過采樣最簡單的方式是直接從少數類中隨機抽取樣本并復制它們。這種做法會使得少數類的樣本數量增加,從而在某種程度上改變了原始的數據分布。特別是當過采樣的比例較高時,會導致模型看到更多的重復樣本。

由于少數類樣本被重復使用,模型可能學會這些特定樣本的細節和噪音,而非一般化的模式。這意味著模型可能會對訓練集上的表現非常好,但在未見過的數據(測試集或真實世界中的新數據)上表現較差,即發生過擬合。

目前這類方法用于機器學習比較多,對于邏輯回歸這樣的線性分類器,隨機過采樣可以通過增加少數類的權重來幫助模型“注意到”這些樣本。然而,這也可能導致模型對少數類的預測過于樂觀,因為它是在一個經過人為調整的數據分布上進行訓練的。因此進行敏感性分析我認為是十分必要的。

后面會介紹一下更加高級的方法,如SMOTE合成采樣。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908508.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908508.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908508.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【力扣】2434.使用機器人打印字典序最小的字符串

1、題目描述&#xff1a; 2、測試用例&#xff1a; 3、解題思路 每次刪除字符串s的第一個字符&#xff0c;可以將s看做隊列&#xff0c;每次從頭部出。在t的尾端插入或刪除&#xff0c;可以將t看做棧棧頂元素出棧條件&#xff1a;①比即將入棧的元素小并且比s中剩下的還沒有入…

業務材料——半導體行業MES系統核心功能工業協議AI賦能

一、前置概念 半導體行業 半導體行業主要生產基于半導體材料&#xff08;如硅、鍺、化合物半導體等&#xff09;的電子元器件及相關產品&#xff0c;廣泛應用于計算、通信、能源、醫療等領域。 MES系統 MES系統&#xff08;Manufacturing Execution System&#xff0c;制造…

視頻的分片上傳,斷點上傳

? 上傳功能的實現&#xff0c;點擊上傳按鈕&#xff0c;判斷添加的文件是否符合要求&#xff0c;如果符合把他放入文件列表中&#xff0c;并把他的狀態設置為等待中&#xff0c;對于每個文件&#xff0c;把他們切分為chunksize大小的文件片段&#xff0c;再檢查他的狀態是否為…

指針的定義與使用

1.指針的定義和使用 int point1(){//定義指針int a 10;//指針定義語法&#xff1a; 數據類型 * 指針變量名int * p;cout << "sizeof (int(*)) --> " << sizeof(p) << endl;//讓指針記錄變量a的地址 & 取址符p &a ;cout << &qu…

Git開發實戰

本文對開發中git的常用概念和操作做一個總結。參考綠毛鴨子的部分內容。 git分布式的體現 1.本地完整的版本庫&#xff1a; 每個克隆下來的 Git 倉庫都包含了項目的所有歷史記錄、提交、分支等信息。這意味著每個開發者的本地倉庫是一個完整的版本控制系統&#xff0c;包括…

ingress-nginx 開啟 Prometheus 監控 + Grafana 查看指標

環境已經部署了 ingress-nginx&#xff08;DaemonSet 方式&#xff09;&#xff0c;并且 Prometheus Grafana 也已經運行。但之前 /metrics 端點沒有暴露 Nginx 核心指標&#xff08;如 nginx_ingress_controller_requests_total&#xff09;&#xff0c;經過調整后現在可以正…

ThinkPHP 5.1 中的 error 和 success 方法詳解

1、success() 方法 public function someAction() {// 操作成功邏輯...return $this->success(操作成功, 跳轉地址, 額外數據); } 參數說明 參數類型說明默認值msgstring成功提示信息空字符串urlstring跳轉URLnull (不跳轉)datamixed返回的額外數據nullwaitinteger跳轉等…

抗輻照MCU在衛星載荷電機控制器中的實踐探索

摘要:在航天領域&#xff0c;衛星系統的可靠運行對電子元件的抗輻照性能提出了嚴苛要求。微控制單元&#xff08;MCU&#xff09;作為衛星載荷電機控制器的核心部件&#xff0c;其穩定性與可靠性直接關系到衛星任務的成敗。本文聚焦抗輻照MCU在衛星載荷電機控制器中的應用實踐&…

計算機視覺——相機標定

計算機視覺——相機標定 一、像素坐標系、圖像坐標系、相機坐標系、世界坐標系二、坐標系變換圖像坐標系 → 像素坐標系相機坐標系 → 圖像坐標系世界坐標系 → 相機坐標系 ? \star ? 世界坐標系 → 像素坐標系 三、相機標定 一、像素坐標系、圖像坐標系、相機坐標系、世界坐…

好未來0520上機考試題1:括號的最大嵌入深度

題目 &#xff08;LeetCode 1614.括號的最大嵌入深度&#xff09; 給定 有效括號字符串 s&#xff0c;返回 s 的嵌套深度。嵌套深度是嵌套括號的最大數量。 示例 1&#xff1a; 輸入&#xff1a;s "(1(2*3)((8)/4))1" 輸出&#xff1a;3 解釋&#xff1a;數字…

MySQL復雜SQL(多表聯查/子查詢)詳細講解

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點睡覺 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 MySQL復雜SQL&#xff08;多表聯查/子查詢&a…

Spring中循環依賴問題的解決機制總結

一、解決機制 1. 什么是循環依賴 循環依賴是指兩個或多個Bean之間相互依賴對方&#xff0c;形成一個閉環的依賴關系。最常見的情況是當Bean A依賴Bean B&#xff0c;而Bean B又依賴Bean A時&#xff0c;就形成了循環依賴。在Spring容器初始化過程中&#xff0c;如果不加以特殊…

集運維_安裝linux,麒麟等系統_步驟

u盤工具選擇Ventoy,Rufus 在選擇Ventoy和Rufus這兩款U盤啟動盤制作工具時,需根據具體需求權衡其優缺點: ?核心差異? ?多系統支持?: ?Ventoy?:支持將多個ISO、WIM、IMG等類型的鏡像文件直接復制到U盤,實現?一盤多用?(例如同時存放Windows、Linux等鏡像),無需…

第4章:Cypher查詢語言基礎

Cypher是Neo4j的聲明式圖查詢語言&#xff0c;專為處理圖數據而設計。它允許用戶以直觀、高效的方式查詢和修改圖數據庫中的數據。本章將介紹Cypher的基本概念和語法&#xff0c;幫助讀者掌握使用Cypher進行基礎圖數據操作的能力。 4.1 Cypher語言概述 Cypher是Neo4j的主要查…

上位機知識篇---Flask框架實現Web服務

本文將簡單介紹Web 服務與前端顯示部分,它們基于Flask 框架和HTML/CSS/JavaScript實現,主要負責將實時視頻流和檢測結果通過網頁展示,并提供交互式狀態監控。以下是詳細技術解析: 一、Flask Web 服務架構 1. 核心路由設計 @app.route(/) def index():"""…

Neovim - 打造一款屬于自己的編輯器(一)

文章目錄 前言&#xff08;勸退&#xff09;neovim 安裝neovim 配置配置文件位置第一個 hello world 代碼拆分 neovim 配置正式配置 neovim基礎配置自定義鍵位Lazy 插件管理器配置tokyonight 插件配置BufferLine 插件配置自動補全括號 / 引號 插件配置 前言&#xff08;勸退&am…

按字典序排列最小的等效字符串

文章目錄 題目思路解題過程Python代碼C代碼復雜度 題目 給出長度相同的兩個字符串s1 和 s2 &#xff0c;還有一個字符串 baseStr 。 其中 s1[i] 和 s2[i] 是一組等價字符。 舉個例子&#xff0c;如果 s1 “abc” 且 s2 “cde”&#xff0c;那么就有 ‘a’ ‘c’, ‘b’ ‘…

Ubuntu2404 下搭建 Zephyr 開發環境

1. 系統要求 操作系統&#xff1a;Ubuntu2404&#xff08;64位&#xff09;磁盤空間&#xff1a;至少 8GB 可用空間&#xff08;Zephyr 及其工具鏈較大&#xff09; 2. 安裝必要工具 Tool Min. Version CMake 3.20.5 Python 3.10 Devicetree compiler 1.4.6 2.1 安裝系…

2025年06月07日Github流行趨勢

項目名稱&#xff1a;netbird 項目地址url&#xff1a;https://github.com/netbirdio/netbird項目語言&#xff1a;Go歷史star數&#xff1a;14824今日star數&#xff1a;320項目維護者&#xff1a;mlsmaycon, braginini, pascal-fischer, lixmal, pappz項目簡介&#xff1a;使…

fast-reid部署

配置設置&#xff1a; 官方庫鏈接&#xff1a; https://github.com/JDAI-CV/fast-reid# git clone https://github.com/JDAI-CV/fast-reid.git 安裝依賴&#xff1a; pip install -r docs/requirements.txt 編譯&#xff1a;切換到fastreid/evaluation/rank_cylib目錄下&a…