自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不用SMOTE算法,我們?nèi)绾翁幚矶囝惒黄胶鈹?shù)據(jù)?

人工智能 機(jī)器學(xué)習(xí) 算法
機(jī)器學(xué)習(xí)中的一個常見問題是處理不平衡數(shù)據(jù),其中目標(biāo)類中比例嚴(yán)重失調(diào),存在高度不成比例的數(shù)據(jù)。

本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。

機(jī)器學(xué)習(xí)中的一個常見問題是處理不平衡數(shù)據(jù),其中目標(biāo)類中比例嚴(yán)重失調(diào),存在高度不成比例的數(shù)據(jù)。

[[344863]]

什么是多類不平衡數(shù)據(jù)?

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

什么是SMOTE算法?

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

合成樣本

限制:

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

因此,為了跳過這個問題,可以使用'class_weight '參數(shù)手動為類分配權(quán)重。

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

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

(1) Sklearn utils

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

  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參數(shù)。但是XGboost對二進(jìn)制分類使用scale_pos_weight,對二進(jìn)制和多類問題使用樣本權(quán)重。

(2) 數(shù)長比

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

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

(3) 平和權(quán)重技術(shù)(Smoothen Weights)

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

  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) 樣本權(quán)重策略

下面的函數(shù)不同于用于為XGboost算法獲取樣本權(quán)重的class_weight參數(shù)。它為每個訓(xùn)練樣本返回不同的權(quán)重。樣本權(quán)重是一個與數(shù)據(jù)長度相同的數(shù)組,包含應(yīng)用于每個樣本的模型損失的權(quán)重。

  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) 類權(quán)重與樣本權(quán)重:

樣本權(quán)重用于為每個訓(xùn)練樣本提供權(quán)重,這意味著應(yīng)該傳遞一個一維數(shù)組,其元素數(shù)量與訓(xùn)練樣本完全相同。類權(quán)重用于為每個目標(biāo)類提供權(quán)重,這意味著應(yīng)該為要分類的每個類傳遞一個權(quán)重。

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

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2019-02-25 08:35:22

機(jī)器學(xué)習(xí)數(shù)據(jù)模型

2021-01-04 10:40:37

Python不平衡數(shù)據(jù)機(jī)器學(xué)習(xí)

2016-12-13 11:48:05

數(shù)據(jù)處理不平衡數(shù)據(jù)

2018-04-20 11:33:22

不平衡數(shù)據(jù)數(shù)據(jù)集模型

2018-09-11 13:47:35

數(shù)據(jù)不平衡數(shù)據(jù)分布數(shù)據(jù)集

2023-09-29 22:51:22

數(shù)據(jù)不平衡Python機(jī)器學(xué)習(xí)

2017-03-20 09:25:10

機(jī)器學(xué)習(xí)采樣數(shù)據(jù)合成

2023-12-26 15:32:25

不平衡數(shù)據(jù)過采樣機(jī)器學(xué)習(xí)

2019-03-27 08:51:38

機(jī)器學(xué)習(xí)類失衡算法

2017-03-28 09:40:23

機(jī)器學(xué)習(xí)數(shù)據(jù)不平衡

2017-06-16 22:14:45

機(jī)器學(xué)習(xí)數(shù)據(jù)不平衡

2020-09-21 09:02:56

AI機(jī)器學(xué)習(xí)類不平衡

2024-10-18 07:10:43

2016-09-07 13:26:25

R語言不平衡數(shù)據(jù)

2021-06-06 22:41:30

人才技術(shù)預(yù)測不平衡

2018-06-11 16:20:22

數(shù)據(jù)不平衡數(shù)據(jù)集算法

2022-05-06 09:48:56

機(jī)器學(xué)習(xí)樣本不平衡

2025-01-20 09:00:00

2024-08-26 10:47:22

2013-06-04 09:16:29

Google存儲數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號