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...