คำถามติดแท็ก xgboost

สำหรับคำถามที่เกี่ยวข้องกับอัลกอริทึม eXtreme Gradient Boosting

5
GBM กับ XGBOOST ความแตกต่างที่สำคัญ?
ฉันพยายามเข้าใจถึงความแตกต่างที่สำคัญระหว่าง GBM และ XGBOOST ฉันพยายาม google แต่ไม่พบคำตอบที่ดีใด ๆ ที่อธิบายความแตกต่างระหว่างอัลกอริธึมทั้งสองและทำไม xgboost ทำงานได้ดีกว่า GBM เกือบทุกครั้ง อะไรทำให้ XGBOOST เร็วขึ้น?

2
จะตีความผลลัพธ์ของ XGBoost ได้อย่างไร?
ฉันใช้โมเดล xgboost xgb.importanceผมไม่ทราบว่าวิธีการตีความการส่งออกของ อะไรคือความหมายของการได้รับความคุ้มครองและความถี่และเราจะตีความมันได้อย่างไร นอกจากนี้ Split, RealCover และ RealCover% หมายถึงอะไร ฉันมีพารามิเตอร์พิเศษบางอย่างที่นี่ มีพารามิเตอร์อื่น ๆ ที่สามารถบอกฉันเพิ่มเติมเกี่ยวกับคุณสมบัติการนำเข้า จากเอกสาร R ฉันมีความเข้าใจว่าการได้รับนั้นคล้ายกับการรับข้อมูลและความถี่คือจำนวนครั้งที่มีการใช้คุณลักษณะในต้นไม้ทั้งหมด ฉันไม่รู้ว่า Cover คืออะไร ฉันรันโค้ดตัวอย่างที่ให้ไว้ในลิงก์ (และพยายามทำเช่นเดียวกันกับปัญหาที่ฉันกำลังทำอยู่) แต่การแยกคำจำกัดความที่ให้ที่นั่นไม่ตรงกับตัวเลขที่ฉันคำนวณ importance_matrix เอาท์พุท: Feature Gain Cover Frequence 1: xxx 2.276101e-01 0.0618490331 1.913283e-02 2: xxxx 2.047495e-01 0.1337406946 1.373710e-01 3: xxxx 1.239551e-01 0.1032614896 1.319798e-01 4: xxxx 6.269780e-02 0.0431682707 1.098646e-01 5: …

1
ทำไม xgboost จึงเร็วกว่า GradientBoostingClassifier ของ sklearn มาก?
ฉันพยายามที่จะฝึกอบรมการยกระดับความลาดชันของตัวอย่างมากกว่า 50k ด้วยคุณสมบัติตัวเลข 100 ตัว XGBClassifierจัดการ 500 ต้นภายใน 43 วินาทีบนเครื่องของฉันในขณะที่GradientBoostingClassifierจัดการเพียง 10 ต้น (!) ใน 1 นาทีและ 2 วินาที :( ฉันไม่ได้พยายามที่จะเติบโต 500 ต้นเพราะจะใช้เวลาหลายชั่วโมงฉันใช้แบบเดียวกันlearning_rateและmax_depthการตั้งค่า ดูด้านล่าง อะไรทำให้ XGBoost เร็วขึ้นมาก? มันใช้การปรับแต่งแบบใหม่เพื่อส่งเสริมการไล่ระดับสีที่พวก sklearn ไม่รู้หรือไม่? หรือว่า "ตัดมุม" และปลูกต้นไม้ที่ตื้นขึ้น? ป.ล. ฉันตระหนักถึงการสนทนานี้: https://www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-surveyแต่ไม่สามารถหาคำตอบได้ที่นั่น ... XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.05, max_delta_step=0, max_depth=10, min_child_weight=1, missing=None, n_estimators=500, nthread=-1, objective='binary:logistic', reg_alpha=0, reg_lambda=1, …
29 scikit-learn  xgboost  gbm  data-mining  classification  data-cleaning  machine-learning  reinforcement-learning  data-mining  bigdata  dataset  nlp  language-model  stanford-nlp  machine-learning  neural-network  deep-learning  randomized-algorithms  machine-learning  beginner  career  xgboost  loss-function  neural-network  software-recommendation  naive-bayes-classifier  classification  scikit-learn  feature-selection  r  random-forest  cross-validation  data-mining  python  scikit-learn  random-forest  churn  python  clustering  k-means  machine-learning  nlp  sentiment-analysis  machine-learning  programming  python  scikit-learn  nltk  gensim  visualization  data  csv  neural-network  deep-learning  descriptive-statistics  machine-learning  supervised-learning  text-mining  orange  data  parameter-estimation  python  pandas  scraping  r  clustering  k-means  unsupervised-learning 

3
Hypertuning พารามิเตอร์ XGBoost
XGBoost ทำงานได้อย่างยอดเยี่ยมเมื่อพูดถึงการจัดการกับตัวแปรตามหมวดหมู่และต่อเนื่อง แต่ฉันจะเลือกพารามิเตอร์ที่เหมาะสมสำหรับปัญหา XGBoost ได้อย่างไร นี่คือวิธีที่ฉันใช้พารามิเตอร์สำหรับปัญหา Kaggle ล่าสุด: param <- list( objective = "reg:linear", booster = "gbtree", eta = 0.02, # 0.06, #0.01, max_depth = 10, #changed from default of 8 subsample = 0.5, # 0.7 colsample_bytree = 0.7, # 0.7 num_parallel_tree = 5 # alpha = 0.0001, # lambda …
27 r  python  xgboost 

2
LightGBM กับ XGBoost
ฉันพยายามเข้าใจว่าวิธีไหนดีกว่า (แม่นยำยิ่งขึ้นโดยเฉพาะในปัญหาการจำแนก) ฉันได้ค้นหาบทความเปรียบเทียบ LightGBM และ XGBoost แต่พบเพียงสอง: https://medium.com/implodinggradients/benchmarking-lightgbm-how-fast-is-lightgbm-vs-xgboost-15d224568031 - ซึ่งเกี่ยวกับความเร็ว แต่ไม่แม่นยำ https://github.com/Microsoft/LightGBM/wiki/Experiments - ซึ่งมาจากผู้เขียนของ LightGBM และไม่แปลกใจที่ LightGBM ชนะที่นั่น ในการทดสอบของฉันฉันได้รับ AUC เดียวกันทั้งสองอัลกอริทึม แต่ LightGBM ทำงานได้เร็วขึ้น 2 ถึง 5 เท่า ถ้า LGBM เจ๋งมากทำไมฉันไม่ได้ยินเรื่องนี้ที่นี่และ Kaggle :)
25 xgboost 

3
ทำไมเราต้องมี XGBoost และ Random Forest?
ฉันไม่ชัดเจนเกี่ยวกับแนวคิดสองประการ: XGBoost แปลงผู้เรียนที่อ่อนแอเป็นผู้เรียนที่แข็งแกร่ง อะไรคือข้อดีของการทำเช่นนี้? รวมผู้เรียนที่อ่อนแอหลายคนเข้าด้วยกันแทนที่จะใช้ต้นไม้ต้นเดียว? ป่าสุ่มใช้ตัวอย่างต่าง ๆ จากต้นไม้เพื่อสร้างต้นไม้ อะไรคือข้อดีของวิธีนี้แทนที่จะใช้ต้นไม้เอกพจน์

4
XGBoost จัดการกับความหลากหลายด้วยตัวเองหรือไม่?
ขณะนี้ฉันกำลังใช้ XGBoost กับชุดข้อมูลที่มีคุณสมบัติ 21 รายการ (เลือกจากรายการของคุณสมบัติ 150 รายการ) จากนั้นจึงใช้รหัสร้อนเพื่อรับคุณสมบัติ ~ 98 ไม่กี่ของคุณสมบัติเหล่านี้ 98 จะค่อนข้างซ้ำซ้อนตัวอย่างเช่น: ตัวแปร (คุณลักษณะ) กยังปรากฏเป็นและ{A}AAABABA\frac{B}{A}CACA\frac{C}{A} คำถามของฉันคือ: ต้นไม้ตัดสินใจที่ได้รับการส่งเสริมจะจัดการกับความสัมพันธ์แบบหลายทางได้อย่างไร( ถ้า? ) การมีอยู่ของความหลากสีจะส่งผลกระทบต่อการทำนายอย่างไรถ้ามันไม่ได้ถูกจัดการ? จากสิ่งที่ฉันเข้าใจรูปแบบคือการเรียนรู้มากกว่าหนึ่งต้นและการทำนายขั้นสุดท้ายขึ้นอยู่กับบางสิ่งบางอย่างเช่น "ผลรวมถ่วงน้ำหนัก" ของการทำนายรายบุคคล ดังนั้นหากสิ่งนี้ถูกต้องต้นไม้การตัดสินใจที่ถูกกระตุ้นควรจะสามารถจัดการการพึ่งพาระหว่างตัวแปรได้ นอกจากนี้ในบันทึกที่เกี่ยวข้อง - วัตถุที่มีความสำคัญของตัวแปรใน XGBoost ทำงานอย่างไร


4
ข้อมูลมัลติคลาสที่ไม่สมดุลกับ XGBoost
ฉันมี 3 คลาสพร้อมการกระจายนี้: Class 0: 0.1169 Class 1: 0.7668 Class 2: 0.1163 และฉันใช้xgboostสำหรับการจำแนกประเภท scale_pos_weightฉันรู้ว่ามีพารามิเตอร์ที่เรียกว่า แต่จะจัดการกับกรณี 'มัลติคลาส' ได้อย่างไรและฉันจะตั้งค่าได้อย่างไร

1
ต้นไม้ตัดสินใจ: ต้นไม้ฉลาด (ดีที่สุดก่อน) และระดับต้นไม้ฉลาด
ปัญหาที่ 1: ฉันสับสนกับคำอธิบายของ LightGBMเกี่ยวกับวิธีการขยายต้นไม้ พวกเขาระบุ: ขั้นตอนวิธีการเรียนรู้ต้นไม้ตัดสินใจส่วนใหญ่จะปลูกต้นไม้ตามระดับ (ความลึก) ในแนวนอนเช่นภาพต่อไปนี้: คำถามที่ 1 : อัลกอริทึม "ส่วนใหญ่" ใดถูกนำมาใช้ในลักษณะนี้ เท่าที่ฉันรู้ C4.5 และ CART ใช้ DFS XGBoost ใช้ BFS อัลกอริธึมหรือแพ็คเกจอื่นใดที่ใช้ BFS สำหรับต้นไม้ตัดสินใจ ปัญหาที่ 2: สถานะ LightGBM: LightGBM ปลูกต้นไม้ตามใบฉลาด (ดีที่สุดก่อน) มันจะเลือกใบไม้ที่มีการสูญเสียเดลต้าสูงสุดที่จะเติบโต เมื่อปลูกใบเดียวกันอัลกอริทึมใบไม้ฉลาดสามารถลดการสูญเสียมากกว่าอัลกอริทึมระดับฉลาด คำถามที่ 2 : ถูกต้องหรือไม่ที่จะบอกว่าต้นไม้เจริญเติบโตที่ชาญฉลาดระดับจะมีความลึกเท่ากันสำหรับใบไม้ทั้งหมด? คำถามที่ 3:หากคำถามที่ 2 ไม่ถูกต้องต้นไม้จากการเติบโตในระดับที่ฉลาดและใบไม้จะมีลักษณะเหมือนกันในตอนท้ายของการสำรวจเส้นทาง (โดยไม่ต้องตัดแต่งกิ่ง ฯลฯ ) มันเป็นคำสั่งที่ถูกต้องหรือไม่ คำถามที่ 4:ถ้าคำถามที่ 3 …

2
การจัดอันดับแบบคู่ใน xgBoost เป็นอย่างไร
เท่าที่ฉันรู้ในการฝึกอบรมการเรียนรู้เพื่อจัดอันดับแบบจำลองคุณต้องมีสามสิ่งในชุดข้อมูล: ป้ายกำกับหรือความเกี่ยวข้อง รหัสกลุ่มหรือแบบสอบถาม คุณสมบัติเวกเตอร์ ตัวอย่างเช่นชุดข้อมูล Microsoft Learning to Rankใช้รูปแบบนี้ (ป้ายกำกับ, id กลุ่มและคุณสมบัติ) 1 qid:10 1:0.031310 2:0.666667 ... 0 qid:10 1:0.078682 2:0.166667 ... ฉันลอง xgBoost ที่ใช้ GBM เพื่อทำการจัดอันดับแบบคู่ พวกเขามีตัวอย่างสำหรับงานการจัดอันดับที่ใช้โปรแกรม C ++ เพื่อเรียนรู้เกี่ยวกับชุดข้อมูล Microsoft ดังกล่าวข้างต้น อย่างไรก็ตามฉันใช้ตัวห่องูหลามและไม่สามารถหาตำแหน่งที่ฉันสามารถป้อนรหัสกลุ่ม ( qidด้านบน) ฉันสามารถฝึกนางแบบโดยใช้คุณสมบัติและคะแนนความเกี่ยวข้อง แต่ฉันรู้สึกว่าฉันขาดอะไรไป นี่คือสคริปต์ตัวอย่าง gbm = XGBRegressor(objective="rank:pairwise") X = np.random.normal(0, 1, 1000).reshape(100, 10) y = …
14 search  ranking  xgboost  gbm 

3
Pandas Dataframe ถึง DMatrix
ฉันพยายามเรียกใช้ xgboost ใน scikit เรียนรู้ และฉันใช้ Pandas เพื่อโหลดข้อมูลไปยังดาต้าเฟรม ฉันควรจะใช้แพนด้า df กับ xgboost อย่างไร ฉันสับสนกับชุดคำสั่ง DMatrix ที่จำเป็นในการเรียกใช้ xgboost algo

1
XGBRegressor vs. xgboost.train ความแตกต่างความเร็วสูงหรือไม่?
ถ้าฉันฝึกโมเดลของฉันโดยใช้รหัสต่อไปนี้: import xgboost as xg params = {'max_depth':3, 'min_child_weight':10, 'learning_rate':0.3, 'subsample':0.5, 'colsample_bytree':0.6, 'obj':'reg:linear', 'n_estimators':1000, 'eta':0.3} features = df[feature_columns] target = df[target_columns] dmatrix = xg.DMatrix(features.values, target.values, feature_names=features.columns.values) clf = xg.train(params, dmatrix) มันเสร็จในเวลาประมาณ 1 นาที ถ้าฉันฝึกโมเดลของฉันโดยใช้วิธีการเรียนรู้ Sci-Kit: import xgboost as xg max_depth = 3 min_child_weight = 10 subsample = 0.5 colsample_bytree = …

1
ความสำคัญของคุณลักษณะที่มีคุณลักษณะหมวดหมู่ที่มีความสำคัญสูงสำหรับการถดถอย (ตัวแปร depdendent ที่เป็นตัวเลข)
ฉันพยายามใช้ความสำคัญของคุณลักษณะจาก Random Forests เพื่อทำการเลือกคุณลักษณะเชิงประจักษ์สำหรับปัญหาการถดถอยที่คุณสมบัติทั้งหมดเป็นหมวดหมู่และส่วนใหญ่มีหลายระดับ (ตามลำดับที่ 100-1,000) เนื่องจากการเข้ารหัสแบบ one-hot สร้างตัวแปรดัมมี่สำหรับแต่ละระดับความสำคัญของคุณลักษณะสำหรับแต่ละระดับและไม่ใช่แต่ละฟีเจอร์ (คอลัมน์) วิธีที่ดีในการรวมความสำคัญของคุณลักษณะเหล่านี้คืออะไร ฉันคิดเกี่ยวกับการสรุปหรือรับความสำคัญโดยเฉลี่ยสำหรับทุกระดับของคุณลักษณะ (อาจเป็นไปได้ว่าในอดีตจะมีอคติต่อคุณลักษณะเหล่านั้นที่มีระดับมากขึ้น) มีการอ้างอิงใด ๆ เกี่ยวกับปัญหานี้หรือไม่? เราสามารถทำอะไรได้อีกเพื่อลดจำนวนคุณสมบัติ ฉันตระหนักถึงกลุ่มเชือกไม่สามารถหาอะไรที่ง่ายต่อการใช้งานสำหรับการเรียนรู้ Scikit

3
ต้องการความช่วยเหลือในการทำความเข้าใจข้อเสนอจุดแยกโดยประมาณของ xgboost
พื้นหลัง: ในxgboost ย้ำพยายามเพื่อให้พอดีกับต้นไม้ฉเสื้อมากกว่าทุกnตัวอย่างซึ่งช่วยลดการดังต่อไปนี้วัตถุประสงค์:tttftftf_tnnn ∑i=1n[gift(xi)+12hif2t(xi)]∑i=1n[gift(xi)+12hift2(xi)]\sum_{i=1}^n[g_if_t(x_i) + \frac{1}{2}h_if_t^2(x_i)] ที่เป็นลำดับแรกและอนุพันธ์ลำดับที่สองในช่วงก่อนหน้านี้ประมาณค่าที่ดีที่สุดของเราY (จากการย้ำT - 1 ):gi,higi,hig_i, h_iy^y^\hat{y}t−1t−1t-1 gi=dy^l(yi,y^)gi=dy^l(yi,y^)g_i=d_{\hat{y}}l(y_i, \hat{y}) hi=d2y^l(yi,y^)hi=dy^2l(yi,y^)h_i=d^2_{\hat{y}}l(y_i, \hat{y}) และคือฟังก์ชันการสูญเสียของเราlll คำถาม (ในที่สุด): เมื่อมีการสร้างและเมื่อพิจารณาจากคุณลักษณะเฉพาะkในการแยกเฉพาะที่พวกเขาใช้การแก้ปัญหาต่อไปนี้ในการประเมินผู้สมัครเพียงบางส่วนแยก: พวกเขาจัดเรียงตัวอย่างทั้งหมดของพวกเขาโดยx k , ข้ามรายการที่เรียงลำดับและผลรวมของพวกเขาสองอนุพันธ์ชั่วโมงฉัน พวกเขาคิดว่าเป็นผู้สมัครที่แยกเฉพาะเมื่อรวมการเปลี่ยนแปลงมากกว่าε ทำไมเป็นแบบนั้น ???ftftf_tkkkxkxkx_khihih_iϵϵ\epsilon คำอธิบายที่พวกเขาให้ฉัน: พวกเขาอ้างว่าเราสามารถเขียนสมการก่อนหน้าได้เช่น: ∑i=1n12hi[ft(xi)−gi/hi]2+constant∑i=1n12hi[ft(xi)−gi/hi]2+constant\sum_{i=1}^n\frac{1}{2}h_i[f_t(x_i) - g_i/h_i]^2 + constant และฉันล้มเหลวในการติดตามพีชคณิต - คุณสามารถแสดงให้เห็นว่าทำไมมันเท่ากัน? แล้วพวกเขาก็อ้างว่า "นี่คือการสูญเสียน้ำหนักกำลังสองที่แน่นอนด้วยฉลากและน้ำหนักh i " - คำแถลงที่ฉันเห็นด้วย แต่ฉันไม่เข้าใจว่ามันเกี่ยวข้องกับอัลกอริธึมการสมัครแยกที่พวกเขาใช้อยู่อย่างไร ..gi/higi/higi/hihihih_i ขอขอบคุณและขออภัยถ้ามันยาวเกินไปสำหรับฟอรัมนี้
12 xgboost  gbm 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.