fbpx

XGBoost нь градиент дээр суурилсан модыг өргөтгөх алгоритмыг ашиглан машин сургалтын загваруудын чадлыг сайжруулах зорилготой  юм. Энэ нь өргөн хэрэглээтэй, өндөр гүйцэтгэлтэй, олон давуу талтай бөгөөд олон салбарт өргөнөөр ашиглагддаг.

XGBoost нь анх Tianqi Chen болон бусад хамтран ажиллагсад 2014 онд анхны хувилбарыг гаргаснаар эхэлсэн бөгөөд C++ дээр суурилан хөгжүүлэгдсэн. Одоогоор маш олон тооны өгөгдлийн уралдаанд түрүүлэхэд ашиглагдаж буй хүчирхэг хэрэгсэл юм. Мөн 10 дахин илүү хурдан ажилладаг ба ихэнх тохиолдолд өндөр нарийвчлалтай үр дүнг өгдөг.

Өргөтгөх чадвар(Flexibility):

Cross Platform: Янз бүрийн  компьютерын платформ, үйлдлийн систем, төхөөрөмжүүд дээр ажиллах боломжтой програм хангамж.

Multiple language support: Хэрэглэгчийн интерфэйс нь Python, R, Julia зэрэг олон төрлийн програмчлалын хэлүүдтэй холбогдон ажиллах боломжтой.

Machine Learning problems: Regression, Classification, Binary, Multi-Class, Time series (Илүү сайн ), Ranking, Overfit, Anamony гээд олон төрлийн асуудлуудыг шийдвэрлэхэд ашиглагддаг.

Гүйцэтгэл (Performance ), Хурд(Speed):

  1. Greedy and Approximate algorithm

XGboost нь Greedy, Approximate алгоритмыг ашигладаг. Энэ нь урт хугацааны хамгийн сайн сонголт мөн эсэхийг урьдчилан харалгүйгээр шийдвэр гаргадаг.

Жишээ нь дата багцыг шугаман регресс дахь цэгүүдийг квантил болгон хувааж, эхний квантилыг ашиглан хоёр дахь квантил дахь эхний нөхцлийг тодорхойлох гэх мэт ажиллана. Хэдий чинээ олон квантилтай байх тусам илүү олон нөхцөл шалгах шаардлагатай бөгөөд энэ нь модыг барихад илүү их хугацаа шаардагдана.

XGBoost Approximate Greedy algorithm нь боломжит нөхцлийн онооны зөвхөн квантилуудыг шалгадаг. 

2.Parallel Learning and Weighted Quantile Sketch

Parallel Learning

Блок бүтэц: Зэрэгцээ боловсруулалтыг дэмжихийн тулд блок бүтцийг ашигладаг.

Жишээ нь 200 шинж чанартай өгөгдөл дээр зэрэгцүүлэлтийн процесс хийгээгүй бол бүх шинж чанаруудыг дарааллан харж, туршихад маш их цаг хугацаа зарцуулна. Дата багцын багагныг авч эрэмбэлж, дараа нь хуваах цэгүүдийг олж, блокуудад хуваана. Жишээ нь 1,3-ийн хуваах цэг нь 2 гэх мэтээр. Ийнхүү бид өгөгдлийг хуваах цэгүүдээр хувааж, entropy эсвэл gini index-ийг тооцох  шалгуурыг тавина.

Weighted Quantile Sketch

Өгөгдлийн багцийг жижиг хэсгүүдэд хувааж, өөр өөр компьютер дээр байрлуулна гэж бодвол weighted quantile algorithm нь ойролцоогоор гистограмм гаргахын тулд компьютер бүрээс утгуудыг нэгтгэж, гистограммын квантилуудыг тооцоолоход ашигладаг. Квантилууд тус бүр дээр ижил тооны ажиглалт байхаар тохируулагдсан байдаг . Ажиглалт бүрийн жин нь алдагдал функцийн хоёрдугаар эрэмбийн уламжлал.

3.Sparsity Aware Split Finding

Хүснэгтийг хоёр хэсэгт хуваана. Нэг хүснэгтэд дутуу утгагүй бүх ажиглалт , нөгөө хүснэгтэнд дутуу утгатай бүх ажиглалт багтах болно.

Эхний хүснэгтийн, эхний хоёр утгын дунджийг модыг хуваах шалгуураар тавьж, хэрэв энэ нь том өгөгдлийн багц бол эхний квантилийг ашиглах болно. Residuals буюу үлдэгдлийг тооцож үүгээрээ модуудыг хуваана.

Дараагийн хүснэгтийн дутуу утгыг, модны эхний навч дээр , хоёрдох навч дээр тус бүр ашгийн утгыг тооцоолно гэх мэтээр дараа дараагийн утгыг авч модыг үүсгэнэ.

4.Cache-aware Access and Out-of-core

CPU нь компьютерийн бусад санах ойноос илүү хурдан ажиллах боломжтой.CPU нь их хэмжээний үндсэн санах ойд холбогдсон байдаг бол үндсэн санах ой нь кэшэс том бөгөөд үүнийг ашиглахад удаан хугацаа шаардагддаг.

Хатуу дискенд хамгийн их зүйлийг хадгалах боломжтой боловч санах ойн сонголтуудаас хамгийн удаан.

Тиймээс XGBoost нь градиентыг кэшэд оруулснаар ижил төстэй байдлын оноо болон гаралтын утгыг хурдан тооцоолох боломжтой болно.

Өгөгдлийн багц нь кешед хэт том байх үед ,XGBoost нь өгөгдлийг шахах замаар үйлдлийг багасгахыг оролддог.

Хатуу дискнээс ирж буй өгөгдлийг задлах хугацаа нь хатуу диск нь өгөгдлийг уншихаас илүү хурдан хийж чадна.

Хадгалахад нэгээс олон хатуу диск байгаа үед XGBoost нь дискний хандалтыг хурдасгахын тулд sharding хэмээх мэдээллийн баазын техникийг ашигладаг.

Leave a Reply