爾云間生信代碼|用R包實現(xiàn)SOMTE算法解決數(shù)據(jù)不平衡的問題
科研有捷徑,輸入代碼,一鍵獲取科研成果!就是這么省事,來具體看下有多方便!
搜索http://985.so/a9kb查看全部代碼(目前共計50+持續(xù)新增中),也可以點擊右側(cè)【目錄】,可以看到更多有趣的代碼;真香提示:文末可以知道如何獲取代碼~?
在數(shù)據(jù)分析時,往往存在數(shù)據(jù)的不平衡性。比如我們有600多例良性腫瘤和1800例惡性腫瘤,很明顯陽性數(shù)據(jù)和陰性數(shù)據(jù)不等,這樣必然會使得分析結(jié)果產(chǎn)生偏倚。而SMOTE就是一種可以糾正這種不平衡數(shù)據(jù)偏倚的算法。
處理有不平衡數(shù)據(jù)的最簡單的方法是隨機復制,然而隨機復制往往會導致過度擬合,從而影響模型效果?,F(xiàn)在的做法一般有兩種:一是去除訓練數(shù)據(jù)集多數(shù)分類中的樣本數(shù),即欠抽樣;二是形成新的樣本從而平衡數(shù)據(jù),即過抽樣。而欠抽樣往往會導致樣本中一些隱含的信息丟失,所以過抽樣的算法應用地更為廣泛。
SMOTE(Synthetic minoritye over-sampling technique,SMOTE)是Chawla在2002年提出的過抽樣的算法,其核心思想是在一些位置相近的少數(shù)類樣本中插入新樣本來達到平衡樣本的目的,特點是算法是增加新的不存在的樣例,因此一定程度上避免了分類器過度擬合。
這里,主要介紹如何用R包實現(xiàn)SMOTE算法解決數(shù)據(jù)不平衡的問題:
1. 安裝載入DMwR
rm(list=ls())
install.packages(“DMwR”,dependencies=T)
library(DMwR)
2. 讀入數(shù)據(jù)
data=read.csv(“data.csv”,header=T)
3. SMOTE處理
在SMOTE算法中,會對多數(shù)樣本進行欠抽樣,少數(shù)樣本進行過抽樣。
newdata=SMOTE(formula,data,perc.over=,perc.under=)
formula:設定數(shù)據(jù)集中的自變量和分組變量
data:指定處理的數(shù)據(jù)集
perc.over,perc.under選項分別定義過抽樣和欠抽樣的次數(shù)。
4. 整理數(shù)據(jù)
使用table()查看陽性數(shù)據(jù)和陰性數(shù)據(jù)的比例。
table(“data$class”)
有興趣的讀者可嘗試以下代碼,可以看到樣本數(shù)目少的分組經(jīng)過SMOTE算法的處理,實現(xiàn)了樣例的增加。


以上就是小編的分享內(nèi)容,如果您苦于沒有思路不知道如何來入手生信分析,或者需要一些熱門生信手段的代碼,可以聯(lián)系小云~
