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

不用SMOTE算法,我們如何處理多類不平衡數據?

人工智能 機器學習 算法
機器學習中的一個常見問題是處理不平衡數據,其中目標類中比例嚴重失調,存在高度不成比例的數據。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)。

機器學習中的一個常見問題是處理不平衡數據,其中目標類中比例嚴重失調,存在高度不成比例的數據。

[[344863]]

什么是多類不平衡數據?

當分類問題的目標類(兩個或兩個以上)不均勻分布時,稱為不平衡數據。如果不能處理好這個問題,模型將會成為災難,因為使用類不平衡數據建模會偏向于大多數類。處理不平衡數據有不同的方法,最常見的是過采樣(Oversampling)和創建合成樣本。

什么是SMOTE算法?

SMOTE是一種從數據集生成合成算例的過采樣技術,它提高了對少數類的預測能力。雖然沒有信息損失,但它有一些限制。

合成樣本

限制:

  • SMOTE不適用于高維數據。
  • 可能會發生類的重疊,并給數據帶來更多干擾。

因此,為了跳過這個問題,可以使用'class_weight '參數手動為類分配權重。

為什么使用類別權重(Class weight)?

類別權重通過對具有不同權重的類進行懲罰來直接修改損失函數,有目的地增加少數階級的權力,減少多數階級的權力。因此,它比SMOTE效果更好。本文將介紹一些最受歡迎的獲得數據的權重的技術,它們對不平衡學習問題十分奏效。

(1) Sklearn utils

可以使用sklearn來獲得和計算類權重。在訓練模型的同時將這些權重加入到少數類別中,可以提高類別的分類性能。

  1. from sklearn.utils import class_weightclass_weightclass_weight =class_weight.compute_class_weight('balanced, 
  2. np.unique(target_Y), 
  3. target_Y)model = LogisticRegression(class_weightclass_weight = class_weight) 
  4. model.fit(X,target_Y)# ['balanced', 'calculated balanced', 'normalized'] arehyperpaameterswhic we can play with. 

對于幾乎所有的分類算法,從邏輯回歸到Catboost,都有一個class_weight參數。但是XGboost對二進制分類使用scale_pos_weight,對二進制和多類問題使用樣本權重。

(2) 數長比

非常簡單明了,用行數除以每個類的計數數,然后

  1. weights = df[target_Y].value_counts()/len(df) 
  2. model = LGBMClassifier(class_weight = weights)model.fit(X,target_Y) 

(3) 平和權重技術(Smoothen Weights)

這是選擇權重的最佳方法之一。labels_dict是包含每個類的計數的字典對象,對數函數對不平衡類的權重進行平和處理。

  1. def class_weight(labels_dict,mu=0.15): 
  2.     total = np.sum(labels_dict.values())    keys = labels_dict.keys()    weight = dict()for i in keys: 
  3.         score =np.log(mu*total/float(labels_dict[i]))        weight[i] = score if score > 1else 1return weight# random labels_dict 
  4. labels_dict = df[target_Y].value_counts().to_dict()weights =class_weight(labels_dict)model = RandomForestClassifier(class_weight = weights
  5. model.fit(X,target_Y) 

(4) 樣本權重策略

下面的函數不同于用于為XGboost算法獲取樣本權重的class_weight參數。它為每個訓練樣本返回不同的權重。樣本權重是一個與數據長度相同的數組,包含應用于每個樣本的模型損失的權重。

  1. def BalancedSampleWeights(y_train,class_weight_coef): 
  2.     classes = np.unique(y_train, axis =0
  3. classes.sort()class_samples = np.bincount(y_train)total_samples = class_samples.sum()n_classes = len(class_samples)    weights = total_samples / (n_classes* class_samples * 1.0) 
  4. class_weight_dict = {key : value for (key, value) in              zip(classes, weights)} 
  5. class_weight_dict[classes[1]] = class_weight_dict[classes[1]] * 
  6. class_weight_coefsample_weights = [class_weight_dict[i] for i in y_train] 
  7.     return sample_weights#Usage 
  8. weight=BalancedSampleWeights(target_Y,class_weight_coef) 
  9. model = XGBClassifier(sample_weight = weight) 
  10. model.fit(X, target_Y) 

(5) 類權重與樣本權重:

樣本權重用于為每個訓練樣本提供權重,這意味著應該傳遞一個一維數組,其元素數量與訓練樣本完全相同。類權重用于為每個目標類提供權重,這意味著應該為要分類的每個類傳遞一個權重。

以上是為分類器查找類權重和樣本權重的幾種方法,所有這些技術都對筆者的項目有效,你可以試試這些技巧,絕對大有幫助。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2019-02-25 08:35:22

機器學習數據模型

2021-01-04 10:40:37

Python不平衡數據機器學習

2016-12-13 11:48:05

數據處理不平衡數據

2018-04-20 11:33:22

不平衡數據數據集模型

2018-09-11 13:47:35

數據不平衡數據分布數據集

2023-09-29 22:51:22

數據不平衡Python機器學習

2017-03-20 09:25:10

機器學習采樣數據合成

2023-12-26 15:32:25

不平衡數據過采樣機器學習

2019-03-27 08:51:38

機器學習類失衡算法

2017-03-28 09:40:23

機器學習數據不平衡

2017-06-16 22:14:45

機器學習數據不平衡

2020-09-21 09:02:56

AI機器學習類不平衡

2024-10-18 07:10:43

2016-09-07 13:26:25

R語言不平衡數據

2021-06-06 22:41:30

人才技術預測不平衡

2018-06-11 16:20:22

數據不平衡數據集算法

2022-05-06 09:48:56

機器學習樣本不平衡

2025-01-20 09:00:00

2013-06-04 09:16:29

Google存儲數據

2024-08-26 10:47:22

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九九久久国产免费 | 草久久| 精品国产欧美一区二区 | 亚洲成人午夜电影 | 黄色一级电影免费观看 | 亚洲www | 欧美中文在线 | 亚洲最大福利网 | 免费观看黄色一级片 | 女人精96xxx免费网站p | 精品欧美一区免费观看α√ | 成人在线视频免费观看 | 日韩成人免费在线视频 | 国产一区 在线视频 | 国产精品亚洲综合 | 久久成人精品 | av黄色免费在线观看 | 亚洲一区二区三区在线播放 | 久久精品av麻豆的观看方式 | 日韩不卡视频在线 | 中文字幕视频网 | 中文字幕视频在线 | 精品1区 | 91久久国产综合久久 | 一区二区三区av | 国产真实精品久久二三区 | 伊人久久在线观看 | 91精品久久久久久久久久入口 | 日韩不卡在线观看 | 久久精品色欧美aⅴ一区二区 | 四虎最新视频 | 亚洲视频免费观看 | 欧美在线一区二区三区 | 中文字幕在线免费观看 | 羞羞视频网 | 国产一区二区三区四区五区3d | 日日碰狠狠躁久久躁96avv | 欧美专区在线 | 国产在线视频一区二区 | 亚洲欧美在线观看视频 | 天堂三级|