กลับไปหน้าบทความ

อ่าน 5 นาที

เอ็กซ์จีบูสต์

XGBoost [ 2 ] (eXtreme Gradient Boosting) เป็น ไลบรารี ซอฟต์แวร์โอเพน ซอร์ส ที่ให้เฟรม เวิร์ก การเพิ่มประสิทธิภาพแบบไล่ ระดับ สำหรับ C++ , Java , Python , [ 3 ] R , [ 4 ] Julia ,...

เอ็กซ์จีบูสต์

เอ็กซ์จีบูสต์
นักพัฒนาผู้ร่วมพัฒนา XGBoost
ปล่อย27 มีนาคม 2557 ( 27 มีนาคม 2014 )
เวอร์ชันเสถียร
3.0.0 [ 1 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 15 มีนาคม 2025 ( 15 มีนาคม 2025 )
เขียนเป็นซี++
ระบบปฏิบัติการลินุกซ์ , มอสซาเรลล่า , ไมโครซอฟต์ วินโดวส์
พิมพ์การเรียนรู้ของเครื่อง
ใบอนุญาตใบอนุญาต Apache 2.0
เว็บไซต์xgboost .ai
ที่เก็บข้อมูล
  • github.com/dmlc/xgboost

XGBoost [ 2 ] (eXtreme Gradient Boosting) เป็นไลบรารีซอฟต์แวร์โอเพน ซอร์ส ที่ให้เฟรม เวิร์ก การเพิ่มประสิทธิภาพแบบไล่ระดับ สำหรับC++ , Java , Python , [ 3 ] R , [ 4 ] Julia , [ 5 ] Perl , [ 6 ]และScalaโดยทำงานบนLinux , Microsoft Windows , [ 7 ]และmacOS [ 8 ] จากคำอธิบายโครงการ มีเป้าหมายที่จะจัดหา "ไลบรารีการเพิ่มประสิทธิภาพแบบไล่ระดับ (GBM, GBRT, GBDT) ที่ปรับขนาด ได้พกพาได้ และกระจาย" โดยทำงานบนเครื่องเดียว รวมถึงเฟรมเวิร์กการประมวลผลแบบกระจายApache Hadoop , Apache Spark , Apache FlinkและDask [ 9 ] [ 10 ]

XGBoost ได้รับความนิยมและความสนใจอย่างมากในช่วงกลางทศวรรษ 2010 ในฐานะอัลกอริทึมที่ทีมที่ชนะการแข่งขันการเรียนรู้ของเครื่อง หลายทีมเลือก ใช้[ 11 ]

ประวัติศาสตร์

XGBoost เริ่มต้นจากการเป็นโครงการวิจัยโดย Tianqi Chen [ 12 ]ซึ่งเป็นส่วนหนึ่งของกลุ่ม Distributed (Deep) Machine Learning Community (DMLC) ที่มหาวิทยาลัยวอชิงตันในตอนแรกมันเริ่มต้นจากการเป็นแอปพลิเคชันเทอร์มินัลที่สามารถกำหนดค่าได้โดยใช้ ไฟล์การกำหนดค่า libsvmมันกลายเป็นที่รู้จักกันดีในวงการแข่งขัน ML หลังจากที่ถูกนำไปใช้ในโซลูชันที่ชนะการแข่งขัน Higgs Machine Learning Challengeไม่นานหลังจากนั้น แพ็กเกจ Python และ R ก็ถูกสร้างขึ้น และปัจจุบัน XGBoost มีการใช้งานแพ็กเกจสำหรับ Java, Scala , Julia, Perlและภาษาอื่นๆ ซึ่งทำให้ไลบรารีนี้เข้าถึงนักพัฒนาได้มากขึ้นและมีส่วนทำให้ได้รับความนิยมในหมู่ ชุมชน Kaggleซึ่งมีการนำไปใช้ในการแข่งขันจำนวนมาก[ 11 ]

ในไม่ช้าก็มีการบูรณาการเข้ากับแพ็กเกจอื่นๆ อีกหลายแพ็กเกจ ทำให้ใช้งานได้ง่ายขึ้นในชุมชนต่างๆ ปัจจุบันได้มีการบูรณาการเข้ากับscikit-learnสำหรับ ผู้ใช้ Pythonและแพ็กเกจ caret สำหรับ ผู้ใช้ Rนอกจากนี้ยังสามารถบูรณาการเข้ากับเฟรมเวิร์กการไหลของข้อมูล เช่นApache Spark , Apache HadoopและApache Flinkโดยใช้ Rabit [ 13 ]และ XGBoost4J [ 14 ] ที่ถูกทำให้เป็นนามธรรม XGBoost ยังมีให้บริการบนOpenCL สำหรับ FPGA [ 15 ] Tianqi Chen และ Carlos Guestrinได้เผยแพร่การใช้งาน XGBoost ที่มีประสิทธิภาพและปรับขนาดได้[ 16 ]

แม้ว่าโมเดล XGBoost มักจะให้ความแม่นยำสูงกว่าต้นไม้ตัดสินใจเดี่ยว แต่ก็ต้องแลกมาด้วยความสามารถในการตีความที่ลดลงของต้นไม้ตัดสินใจ ตัวอย่างเช่น การติดตามเส้นทางที่ต้นไม้ตัดสินใจใช้ในการตัดสินใจนั้นง่ายและเข้าใจได้เอง แต่การติดตามเส้นทางของต้นไม้หลายร้อยหรือหลายพันต้นนั้นยากกว่ามาก

คุณสมบัติ

คุณสมบัติเด่นของ XGBoost ที่ทำให้แตกต่างจากอัลกอริธึมการเพิ่มประสิทธิภาพแบบไล่ระดับอื่นๆ ได้แก่: [ 17 ] [ 18 ] [ 16 ]

  • การลงโทษต้นไม้ที่ชาญฉลาด
  • การหดตัวตามสัดส่วนของข้อใบ
  • นิวตันบูสเตอร์
  • พารามิเตอร์การสุ่มเพิ่มเติม
  • การนำไปใช้งานบนระบบเดี่ยว ระบบ กระจายและการคำนวณนอกหน่วยความจำหลัก
  • การเลือกคุณสมบัติอัตโนมัติ
  • การร่างควอนไทล์แบบถ่วงน้ำหนักที่ได้รับการพิสูจน์ทางทฤษฎีเพื่อการคำนวณที่มีประสิทธิภาพ
  • การเพิ่มประสิทธิภาพโครงสร้างต้นไม้แบบขนานด้วยความเบาบาง
  • โครงสร้างบล็อกที่สามารถแคชได้อย่างมีประสิทธิภาพสำหรับการฝึกต้นไม้ตัดสินใจ

อัลกอริทึม

XGBoost ทำงานในลักษณะเดียวกับวิธีNewton–Raphsonในพื้นที่ฟังก์ชัน ซึ่งแตกต่างจากGradient Boosting ที่ทำงานในลักษณะเดียวกับ Gradient Descent ในพื้นที่ฟังก์ชัน โดยใช้ การประมาณค่า Taylorอันดับสองในฟังก์ชันความสูญเสียเพื่อให้เชื่อมโยงกับวิธี Newton–Raphson

อัลกอริทึม XGBoost ทั่วไปที่ไม่มีการปรับแต่งค่าใดๆ มีดังนี้:

อินพุต: ชุดข้อมูลฝึกฝน, ฟังก์ชันความสูญเสียที่สามารถหาอนุพันธ์ได้, จำนวนผู้เรียนรู้แบบอ่อนและอัตราการเรียนรู้

อัลกอริทึม:

  • กำหนดค่าเริ่มต้นให้กับโมเดลด้วยค่าคงที่:
โปรดทราบว่านี่คือการเริ่มต้นของแบบจำลอง ดังนั้นเราจึงกำหนดค่าคงที่ให้กับอินพุตทั้งหมด ดังนั้นแม้ว่าในการวนซ้ำครั้งต่อๆ ไปเราจะใช้การปรับให้เหมาะสมเพื่อค้นหาฟังก์ชันใหม่ แต่ในขั้นตอนที่ 0 เราต้องหาค่าที่เท่ากันสำหรับอินพุตทั้งหมด ซึ่งทำให้ฟังก์ชันความสูญเสียมีค่าน้อยที่สุด
  1. สำหรับm = 1 ถึงM :
    1. คำนวณ 'เกรเดียนต์' และ 'เฮสเซียน':
    2. สร้างแบบจำลองการเรียนรู้พื้นฐาน (หรือแบบจำลองการเรียนรู้แบบอ่อน เช่น ต้นไม้) โดยใช้ชุดข้อมูลฝึกฝนโดยแก้ปัญหาการหาค่าเหมาะสมที่สุดด้านล่างนี้:
    3. อัปเดตโมเดล:
  2. เอาต์พุต

พารามิเตอร์

XGBoost มีพารามิเตอร์ที่สามารถระบุได้เพื่อส่งผลต่อการทำงานและประสิทธิภาพ พารามิเตอร์บางส่วนได้แก่: [ 19 ]

  • อัตราการเรียนรู้ (หรือที่เรียกว่า "ขนาดขั้นตอน" หรือ "การหดตัว") คือตัวเลขระหว่าง 0 ถึง 1 (ค่าเริ่มต้นคือ 0.3) ซึ่งกำหนดอัตราที่อัลกอริทึมเรียนรู้จากแต่ละรอบการทำงาน
  • n_estimators กำหนดจำนวนต้นไม้ที่จะสร้างในแบบจำลองกลุ่ม โดยทั่วไปแล้วจำนวนต้นไม้ที่มากขึ้นจะเพิ่มความซับซ้อนของแบบจำลอง แต่ก็อาจนำไปสู่การโอเวอร์ฟิตติ้งได้หากมีต้นไม้มากเกินไป
  • แกมมา (หรือที่รู้จักกันในชื่อตัวคูณลากรางจ์ หรือพารามิเตอร์ลดการสูญเสียขั้นต่ำ) ควบคุมปริมาณการลดการสูญเสียขั้นต่ำที่จำเป็นในการแบ่งเพิ่มเติมบนโหนดใบของต้นไม้ ค่าเริ่มต้นใน XGBoost คือ 0
  • max_depth แสดงถึงความลึกที่แต่ละต้นไม้ในกระบวนการบูสติ้งสามารถเติบโตได้ระหว่างการฝึก โดยค่าเริ่มต้นคือ 6

รางวัล

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=XGBoost&oldid=1349194143 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เอ็กซ์จีบูสต์

XGBoost [ 2 ] (eXtreme Gradient Boosting) เป็น ไลบรารี ซอฟต์แวร์โอเพน ซอร์ส ที่ให้เฟรม เวิร์ก การเพิ่มประสิทธิภาพแบบไล่ ระดับ สำหรับ C++ , Java , Python , [ 3 ] R , [ 4 ] Julia ,...

ประวัติศาสตร์

XGBoost เริ่มต้นจากการเป็นโครงการวิจัยโดย Tianqi Chen [ 12 ] ซึ่งเป็นส่วนหนึ่งของกลุ่ม Distributed (Deep) Machine Learning Community (DMLC) ที่ มหาวิทยาลัยวอชิงตัน ในตอนแรกมันเริ่มต้นจากการเป็นแอปพลิเคชันเทอร์มินัลที่สามารถกำหนดค่าได้โดยใช้ ไฟล์การกำหนดค่า...

คุณสมบัติ

คุณสมบัติเด่นของ XGBoost ที่ทำให้แตกต่างจากอัลกอริธึมการเพิ่มประสิทธิภาพแบบไล่ระดับอื่นๆ ได้แก่: [ 17 ] [ 18 ] [ 16 ]

อัลกอริทึม

XGBoost ทำงานในลักษณะเดียวกับวิธี Newton–Raphson ในพื้นที่ฟังก์ชัน ซึ่งแตกต่างจาก Gradient Boosting ที่ทำงานในลักษณะเดียวกับ Gradient Descent ในพื้นที่ฟังก์ชัน โดยใช้ การประมาณค่า Taylor อันดับสองในฟังก์ชันความสูญเสียเพื่อให้เชื่อมโยงกับวิธี Newton–Raphson