xgboost回歸問題?

時間 2021-06-09 17:59:21

1樓:Dennis LD

這個問題有兩個顯注的特徵

1)特徵維度:在回歸問題裡,3,000個特徵太多了。這些特徵裡會有很多correlations

2)資料標註不平衡:標註為0的占多數

針對這兩個問題,可以考慮下面的方法

根據重要的特徵壓縮數量, 用PCA去除correlation

from

sklearn.decomposition

import

PCAimport

numpy

asnp

from

sklearn.decomposition

import

PCAimport

xgboost

asxgb

import

numpy

asnp

# data.shape = (3000, 100)

data=np

.zeros

(shape=(

3000

,100

),dtype=np

.float32

)labels=np

.arange

(3000

)print("

{}".format

(repr

(data

)))d_train

=xgb

.DMatrix

(data

,labels

)model

=xgb

.XGBRegressor

()model

.fit

(data

,labels

)xgb

.plot_importance

(model

.feature_importances_

)plt

.show

()# Get the first 100 features in the importance ranked in xgb feature importance

pca=

PCA(

n_components=10

)uncorrelated_features

=pca

.fit_transform

(feature

)重新取樣

1) 通過對代表性不足的類的有意抽樣來提高資料收集的質量。可以迭代進行重複取樣過程。針對非0的資料集對進行有意取樣

2) Downsampling: 從已有的資料收集中重新取樣,去平衡頻繁與較不頻繁的收集比例,象0和非0的標記為50:50

Hyperparameter tuning: 增加estimators和depths

from sklearn.model_selection import GridSearchCV

params =

model = XGBRegressor()

hy_model = GridSearchCV(model, params, cv=5, iid=False)

hy_model.fit(data, labels)

print("{}".format(hy_model.best_params_)

2樓:張大帥

首先,這不叫線性回歸,就叫回歸。

然後,效果不好的原因是多方面的,樣本分佈不平衡只是可能的原因之一,可能的原因那多了去了,需要你具體描述你的問題,資料,特徵等。

我只給乙個建議,就是模型分層。就你的問題,如果你想得到很多0,還不如變成乙個二分類問題,先看是不是0,如果判斷是0,就給0,非0再走回歸模型。

XGBoost做分類問題時每一輪迭代擬合的是什麼?

XGBoost的樹不是CART樹,擬合的不是殘差,而是直接根據誤差函式obj減小的幅度來決定選哪個特徵的哪個間斷點來劃分樹結點 優先選能讓誤差函式減少幅度最大的那個 而每個葉結點的輸出值,就是那個wj,也完全由Gj,Hj和lambda來決定。回歸問題,Gj Hj分別是MSE 也可以是其他的函式如hu...

xgboost中的min child weight是什麼意思

我說一下自己的理解。參考https stats.stackexchange.com 1 對於回歸問題,假設損失函式是均方誤差函式,每個樣本的二階導數是乙個常數,這個時候 min child weight就是這個葉子結點中樣本的數目。如果這個值設定的太小,那麼會出現單個樣本成乙個葉子結點的情況,這很容...

如何用caffe解決回歸問題?

如果你用CNN做回歸,我給乙個簡單的思路 按照key value對生成資料集之後,不管你是選擇finetuning還是重新訓練,把最後一層的神經元置為1,選擇方差損失函式。講個簡單的例子,我打算用AlexNet來finetune乙份我自己的資料,那我把最後一層fc8層,也就是分類器,重新命名,把nu...