Xgboost Là Gì – Khoa Học Dữ Liệu Xgboost

Related Articles

Xin chào các bạn, sau 1 thời gian vắng bóng vì cạn ý tưởng viết bài và cũng cảm thấy bản thân chưa làm được điều gì nên hồn để chia sẻ, mình đã quay trở lại với obatambeienwasirherbal.com để viết về một chủ đề không mới, về một thuật toán không mới, tuy nhiên không phải ai cũng hoàn toàn hiểu được và vận dụng được nó : Gradient Boosting.Bạn đang xem : Xgboost là gì, khoa học dữ liệu xgboost

Ý tưởng để gợi lên mình viết bài viết này có lẽ rằng bắt nguồn từ bài viết Ensemble learning và những biến thể ( P1 ) của tác giả Phạm Minh Hoàng. Đây là một bài viết khá hay và phần lý giải dễ hiểu về những thuật toán ensemble, tuy nhiên có 1 điều khá đáng tiếc là sau hơn 1 năm chờ đón, tác giả đã viết rất nhiều bài viết chất lượng khác, nhưng tuyệt nhiên lại không có bài viết nào tương quan đến ” Ensemble learning và những biến thể ( P2 ) “, làm những fan comment chờ đón trong vô vọng .

*

Thế nên là “Tự túc là hạnh phúc”, hôm nay mình viết bài này, xin phép nối tiếp nội dung mà tác giả đang chia sẻ dở, một bài viết về thuật toán Ensemble tiếp theo, sau Bagging, chính là về Boosting. Các bạn có thể gọi bài viết này với một tiêu đề khác là “Ensemble learning và các biến thể (P2)” cũng được

*

1.1 Single weak learner

Nếu tiếp xúc đủ lâu với Machine Learning, những bạn chắc rằng đều đã biết đến những giải thuật, những quy mô tầm cỡ trong nghành này :Linear Discriminant AnalysisDecision TreesNeural NetworksNa ̈ıve Bayes Classifierk-Nearest NeighborSupport Vector Machines and Kernel MethodsLinear Discriminant AnalysisDecision TreesNeural NetworksNa ̈ ıve Bayes Classifierk-Nearest NeighborSupport Vector Machines and Kernel MethodsKhi gặp một bài toán bất kể, dù là phân lớp ( classification ) hay hồi quy ( regression ) thì việc chọn ra một quy mô đủ tốt luôn là một quyết định hành động quan trọng và khó khăn vất vả nhất. Khác với Deep Learning, việc tìm ra quy mô tốt là việc nỗ lực biến hóa số layer hay biến hóa cấu trúc mạng, ở Machine Learning, việc lựa chọn quy mô là việc tối ưu tham số, quan sát những đặc thù về số chiều của khoảng trống tài liệu, đặt ra những giả thiết về phân phối tài liệu, …Có thể diễn đạt một quy trình xử lý bài toán machine learning như sau :Phân tích dữ liệuThử các mô hình (thử có định hướng sau khi giả định về tính chất dữ liệu, hoặc thử tất cả các phương pháp có thể)Finetune lại mô hình để tìm ra các tham số tốt nhấtĐánh giá kết quảQuay lại bước 1 nếu kết quả đánh giá không tốt =))Phân tích dữ liệuThử những quy mô ( thử có khuynh hướng sau khi giả định về đặc thù tài liệu, hoặc thử tổng thể những chiêu thức hoàn toàn có thể ) Finetune lại quy mô để tìm ra những tham số tốt nhấtĐánh giá kết quảQuay lại bước 1 nếu tác dụng nhìn nhận không tốt =))*Tất cả những thao tác trên thực chất là xoay quanh để xử lý yếu tố giữa bias và variance ( bias-variance trade off ). Hiểu đơn thuần về bias-variance trade off tức là ” tất cả chúng ta mong ước quy mô khi fit vào tài liệu sẽ có bias thấp và variance thấp, tuy nhiên, bias và variance thường có khuynh hướng nghịch đảo với nhau. – bias thấp nhưng variance cao hoặc variance thấp nhưng bias cao, và tất cả chúng ta chỉ hoàn toàn có thể lựa chọn tăng cái này và đồng ý giảm cái kia ” .

Một điều đặc biệt là, khi chúng ta chỉ sử dụng single model hay single learner (tức là chỉ dùng đúng duy nhất một model để fit vào dữ liệu), bias-variance trade off là điều không thể tránh khỏi – Single weak learner .

*

1.2 Combine weak learners

Để giải quyết được vấn đề bias-variance trade off, một hướng giải quyết được đề xuất là : “Nếu 1 model không thể tự giải quyết được, hãy để nhiều model cùng nhau giải quyết“. Tất nhiên, nhiều model ở đây có thể là cùng một loại nhưng áp dụng trên những phần dữ liệu khác nhau (kì vọng là độc lập với nhau) hoặc những model hoàn toàn khác loại được kết hợp lại.

Mỗi kiểu tích hợp Mã Sản Phẩm lại được vận dụng tùy theo mục tiêu nhất định, chứ không phải là tích hợp tùy tiện. Dựa vào đặc thù này, tất cả chúng ta chia những thuật toán ensemble thành những nhóm chính sau ( phần này mình xin trích lại từ Part1 nha ) :Bagging (Mục tiêu là giảm variance – áp dụng cho các model đã có sẵn bias thấp và đang bị variance cao): Xây dựng một lượng lớn các model (thường là cùng loại) trên những subsamples khác nhau từ tập training dataset (random sample trong 1 dataset để tạo 1 dataset mới). Những model này sẽ được train độc lập và song song với nhau nhưng đầu ra của chúng sẽ được trung bình cộng để cho ra kết quả cuối cùng.Boosting (Mục tiêu là giảm bias – áp dụng cho các model có variance thấp và bị bias cao): Xây dựng một lượng lớn các model (thường là cùng loại). Mỗi model sau sẽ học cách sửa những errors của model trước (dữ liệu mà model trước dự đoán sai) -> tạo thành một chuỗi các model mà model sau sẽ tốt hơn model trước bởi trọng số được update qua mỗi model (cụ thể ở đây là trọng số của những dữ liệu dự đoán đúng sẽ không đổi, còn trọng số của những dữ liệu dự đoán sai sẽ được tăng thêm). Chúng ta sẽ lấy kết quả của model cuối cùng trong chuỗi model này làm kết quả trả về.Stacking (Mục tiêu là giảm bias – áp dụng cho các model có variance thấp và bị bias cao): Xây dựng một số model (thường là khác loại) và một meta model (supervisor model), train những model này độc lập, sau đó meta model sẽ học cách kết hợp kết quả dự báo của một số mô hình một cách tốt nhất.Bagging ( ) : Xây dựng một lượng lớn những Mã Sản Phẩm ( thường là cùng loại ) trên những subsamples khác nhau từ tập training dataset ( random sample trong 1 dataset để tạo 1 dataset mới ). Những Mã Sản Phẩm này sẽ được train độc lập và song song với nhau nhưng đầu ra của chúng sẽ được trung bình cộng để cho ra tác dụng ở đầu cuối. Boosting ( ) : Xây dựng một lượng lớn những Mã Sản Phẩm ( thường là cùng loại ). Mỗi Mã Sản Phẩm sau sẽ học cách sửa những errors của Model trước ( tài liệu mà Model trước Dự kiến sai ) -> tạo thành một chuỗi những Model mà Model sau sẽ tốt hơn Mã Sản Phẩm trước bởi trọng số được update qua mỗi Mã Sản Phẩm ( đơn cử ở đây là trọng số của những tài liệu Dự kiến đúng sẽ không đổi, còn trọng số của những tài liệu Dự kiến sai sẽ được tăng thêm ). Chúng ta sẽ lấy hiệu quả của Mã Sản Phẩm ở đầu cuối trong chuỗi Mã Sản Phẩm này làm hiệu quả trả về. Stacking ( ) : Xây dựng 1 số ít Model ( thường là khác loại ) và một meta Model ( supervisor Model ), train những Mã Sản Phẩm này độc lập, sau đó meta Model sẽ học cách tích hợp hiệu quả dự báo của 1 số ít quy mô một cách tốt nhất .*

2.1 Ý tưởng của Boosting

2. Bỏ qua Bagging, tất cả chúng ta đến với BoostingQua Part 1, tất cả chúng ta đã biết được Bagging được phối hợp từ những Model được fit trên những tập dữ liệu con ( được lấy theo boostrap sample để những tập con được kì vọng là độc lập ), từ đó phối hợp những tác dụng từ những Model này để đưa ra hiệu quả ở đầu cuối. Tuy nhiên, có 1 số điều tất cả chúng ta hoàn toàn có thể chú ý ở đâyCác model trong Bagging đều là học một cách riêng rẽ, không liên quan hay ảnh hưởng gì đến nhau, điều này trong một số trường hợp có thể dẫn đến kết quả tệ khi các model có thể học cùng ra 1 kết quả. Chúng ta không thể kiểm soát được hướng phát triển của các model con thêm vào baggingChúng ta mong đợi các model yếu của thể hỗ trợ lẫn nhau, học được từ nhau để tránh đi vào các sai lầm của model trước đó. Đây là điều Bagging không làm đượcCác Mã Sản Phẩm trong Bagging đều là học một cách riêng rẽ, không tương quan hay ảnh hưởng tác động gì đến nhau, điều này trong một số ít trường hợp hoàn toàn có thể dẫn đến hiệu quả tệ khi những Mã Sản Phẩm hoàn toàn có thể học cùng ra 1 hiệu quả. Chúng ta mong đợi những Model yếu của thể tương hỗ lẫn nhau, học được từ nhau để tránh đi vào những sai lầm đáng tiếc của Mã Sản Phẩm trước đó .Boosting sinh ra dựa trên việc mong ước cải tổ những hạn chế trên. Ý tưởng cơ bản là Boosting sẽ tạo ra một loạt những Mã Sản Phẩm yếu, học bổ trợ lẫn nhau. Nói cách khác, trong Boosting, những Mã Sản Phẩm sau sẽ cố gắng nỗ lực học để hạn chế lỗi lầm của những Mã Sản Phẩm trước .Vậy làm thể nào để hạn chế được sai lầm đáng tiếc từ những Mã Sản Phẩm trước ? Boosting thực thi đánh trọng số cho những quy mô mới được thêm vào dựa trên những cách tối ưu khác nhau. Tùy theo cách đánh trọng số ( cách để những Model được fit một cách tuần tự ) và cách tổng hợp lại những Model, từ đó hình thành nên 2 loại Boosting :Adaptive Boosting (AdaBoost)Gradient BoostingAdaptive Boosting ( AdaBoost ) Gradient BoostingChúng ta sẽ nghiên cứu và phân tích sâu hơn về 2 dạng Boosting này ở phần sau. Để kết thúc phần này, có một vài nhận xét về Boosting như sau :Boosting là một quá trình tuần tự, không thể xử lí song song, do đó, thời gian train mô hình có thể tương đối lâu.Sau mỗi vòng lặp, Boosting có khả năng làm giảm error theo cấp số nhân.Boosting sẽ hoạt động tốt nếu base learner của nó không quá phức tạp cũng như error không thay đổi quá nhanh.Boosting giúp làm giảm giá trị bias cho các model base learner.

2.2 AdaBoost – Gradient Boosting

Boosting là một quy trình tuần tự, không hề xử lí song song, do đó, thời hạn train quy mô hoàn toàn có thể tương đối lâu. Sau mỗi vòng lặp, Boosting có năng lực làm giảm error theo cấp số nhân. Boosting sẽ hoạt động giải trí tốt nếu base learner của nó không quá phức tạp cũng như error không biến hóa quá nhanh. Boosting giúp làm giảm giá trị bias cho những Mã Sản Phẩm base learner .Cả AdaBoost và Gradient Boosting đều kiến thiết xây dựng thuật toán nhằm mục đích xử lý bài toán tối ưu sau :mincn = 1 : N, wn = 1 : NL ( y, ∑ n = 1N cnwn ) ) text { min } _ { c_n = 1 : N, w_n = 1 : N } L ( y, sum ^ N_ { n = 1 } c_n w_n ) ) mincn ​ = 1 : N, wn ​ = 1 : N ​ L ( y, n = 1 ∑ N ​ cn ​ wn ​ ) )Trong đó :LLL : giá trị loss functionyyy : labelcnc_ncn​ : confidence score của weak learner thứ n (hay còn gọi là trọng số)wnw_nwn​ : weak learner thứ nLLL : giá trị loss functionyyy : labelcnc_ncn ​ : confidence score của weak learner thứ n ( hay còn gọi là trọng số ) wnw_nwn ​ : weak learner thứ nThoạt nhìn, công thức trên có vẻ như khá giống với Bagging, thế nhưng cách tính ra những giá trị confidence score kia lại làm ra sự độc lạ về hướng xử lý của Boosting. Thay vì cố gằng quét tìm tổng thể những giá trị cn, wnc_n, w_ncn ​, wn ​ để tìm nghiệm tối ưu toàn cục – một việc làm tốn nhiều thời hạn và tài nguyên, tất cả chúng ta sẽ nỗ lực tìm những giá trị nghiệm cục bộ sau khi thêm mỗi một quy mô mới vào chuỗi quy mô với mong ước dần đi đến nghiệm toàn cục .mincn, wnL ( y, Wn − 1 + cnwn ) ) text { min } _ { c_n, w_n } L ( y, W_ { n-1 } + c_n w_n ) ) mincn ​, wn ​ ​ L ( y, Wn − 1 ​ + cn ​ wn ​ ) )với Wn − 1 = ∑ n = 1N − 1 cnwnW_ { n-1 } = sum ^ { N-1 } _ { n = 1 } c_n w_nWn − 1 ​ = ∑ n = 1N − 1 ​ cn ​ wn ​Adaptive BoostingAdaptive BoostingAdaBoost triển khai train những quy mô mới dựa trên việc đánh lại trọng số cho những điểm tài liệu hiện tại, nhằm mục đích giúp những quy mô mới hoàn toàn có thể tập trung chuyên sâu hơn vào những mẫu tài liệu đang bị học sai, từ đó làm giảm giá trị loss của quy mô. Cụ thể, những bước tiến hành thuật toán như sau :Khởi tạo weight ban đầu là bằng nhau (bằng 1/N1/N1/N) cho mỗi điểm dữ liệuTại vòng lặp thứ itrain model wiw_iwi​ (weak learner) mới được thêm vàotính toán giá trị loss (error), từ đó tính toán ra giá trị confidence score cic_ici​ của model vừa trainCập nhật model chính W=W+ci∗wiW = W + c_i * w_iW=W+ci​∗wi​Cuối cùng, đánh lại trọng số cho các điểm dữ liệu (Các điểm dữ liệu bị đoán sai –> tăng trọng số, các điểm dữ liệu đoán đúng –> giảm trọng số).Sau đó lặp lại với vòng lặp thêm model tiếp theo i + 1.Khởi tạo weight bắt đầu là bằng nhau ( bằng 1 / N1 / N1 / N ) cho mỗi điểm dữ liệuTại vòng lặp thứ itrain Mã Sản Phẩm wiw_iwi ​ ( weak learner ) mới được thêm vàotính toán giá trị loss ( error ), từ đó thống kê giám sát ra giá trị confidence score cic_ici ​ của Model vừa trainCập nhật Mã Sản Phẩm chính W = W + ci ∗ wiW = W + c_i * w_iW = W + ci ​ ∗ wi ​ Cuối cùng, đánh lại trọng số cho những điểm tài liệu ( Các điểm tài liệu bị đoán sai — > tăng trọng số, những điểm tài liệu đoán đúng — > giảm trọng số ). Sau đó lặp lại với vòng lặp thêm Model tiếp theo i + 1 .

Chi tiết về cách thuật toán hoạt động, bạn có thể đọc thêm example tại A Step by Step Adaboost Example

*FYI : AdaBoost hoàn toàn có thể được vận dụng mà không cần dựa vào việc đánh trọng số lại những điểm tài liệu, thay vào đó, tất cả chúng ta hoàn toàn có thể re-sample để lấy tài liệu train cho những Mã Sản Phẩm tiếp theo dựa vào Xác Suất được xác lập bới những trọng số .Xem thêm : Những Sự Thật Về Liên Minh Huyền Thoại Có Thể Bạn Chưa Biết, Những Sự Thật Thú Vị Mà Chưa Một Ai Biết Về LmhtGradient BoostingGradient BoostingGradient Boosting là một dạng tổng quát hóa của AdaBoost. Cụ thể như sau, vẫn yếu tố tối ưu khởi đầumincn, wnL ( y, Wn − 1 + cnwn ) ) text { min } _ { c_n, w_n } L ( y, W_ { n-1 } + c_n w_n ) ) mincn ​, wn ​ ​ L ( y, Wn − 1 ​ + cn ​ wn ​ ) )

Trước tiên mình xin nhắc lại một chút lí thuyết mà các bạn đã khá quen trong neural network: Gradient Descent

θn = θn − 1 − η ∂ ∂ θL ( θn − 1 ) theta_n = theta_ { n-1 } – eta frac { partial } { partial theta } L ( theta_ { n-1 } ) θn ​ = θn − 1 ​ − η ∂ θ ∂ ​ L ( θn − 1 ​ )Phía trên là công thức update tham số quy mô theo hướng giảm của đạo hàm ( Gradient Descent ). Công thức này được sử dụng khoảng trống tham số, tuy nhiên, để liên hệ với bài toán tất cả chúng ta đang xét, mình chuyển công thức sang góc nhìn của khoảng trống hàm số .Khá đơn thuần thôi, nếu tất cả chúng ta coi chuỗi những Model boosting là một hàm số WWW, thì mỗi hàm learner hoàn toàn có thể coi là một tham số www. Đến đây, để cực tiểu hóa hàm loss L ( y, W ) L ( y, W ) L ( y, W ), tất cả chúng ta vận dụng Gradient DescentWn = Wn − 1 − η ∂ ∂ wL ( Wn − 1 ) W_n = W_ { n-1 } – eta frac { partial } { partial w } L ( W_ { n-1 } ) Wn ​ = Wn − 1 ​ − η ∂ w ∂ ​ L ( Wn − 1 ​ )Đến đây, ta hoàn toàn có thể thấy mối quan hệ tương quan saucnwn ≈ − η ∂ ∂ wL ( Wn − 1 ) c_n w_n approx – eta frac { partial } { partial w } L ( W_ { n-1 } ) cn ​ wn ​ ≈ − η ∂ w ∂ ​ L ( Wn − 1 ​ )

với wnw_nwn​ là model được thêm vào tiếp theo. Khi đó, model mới cần học để fit để vào giá trị −η∂∂wL(Wn−1)- eta frac{partial}{partial w}L(W_{n-1})−η∂w∂​L(Wn−1​). (Giá trị −η∂∂wL(Wn−1)- eta frac{partial}{partial w}L(W_{n-1})−η∂w∂​L(Wn−1​) còn có 1 tên gọi khác là pseudo-residuals)

Tóm lại, tất cả chúng ta hoàn toàn có thể tóm tắt quy trình tiến hành thuật toán như sau :Khởi tạo giá trị pseudo-residuals là bằng nhau cho từng điểm dữ liệuTại vòng lặp thứ iTrain model mới được thêm vào để fit vào giá trị của pseudo-residuals đã cóTính toán giá trị confidence score cic_ici​ của model vừa trainCập nhật model chính W=W+ci∗wiW = W + c_i * w_iW=W+ci​∗wi​Cuối cùng, tính toán giá trị pseudo-residuals −η∂∂wL(Wn−1)- eta frac{partial}{partial w}L(W_{n-1})−η∂w∂​L(Wn−1​) để làm label cho model tiếp theoSau đó lặp lại với vòng lặp i + 1.Khởi tạo giá trị pseudo-residuals là bằng nhau cho từng điểm dữ liệuTại vòng lặp thứ iTrain Mã Sản Phẩm mới được thêm vào để fit vào giá trị của pseudo-residuals đã cóTính toán giá trị confidence score cic_ici ​ của Model vừa trainCập nhật Model chính W = W + ci ∗ wiW = W + c_i * w_iW = W + ci ​ ∗ wi ​ Cuối cùng, đo lường và thống kê giá trị pseudo-residuals − η ∂ ∂ wL ( Wn − 1 ) – eta frac { partial } { partial w } L ( W_ { n-1 } ) − η ∂ w ∂ ​ L ( Wn − 1 ​ ) để làm label cho Model tiếp theoSau đó lặp lại với vòng lặp i + 1 .Nếu bạn chú ý thì chiêu thức update lại trọng số của điểm tài liệu của AdaBoost cũng là 1 trong những case của Gradient Boosting. Do đó, Gradient Boosting bao quát được nhiều trường hợp hơn .*3. LightGBM và XGBOOSTCác phần trên là lí thuyết tổng quát về Ensemble Learning, Boosting và Gradient Boosting cho tổng thể những loại Mã Sản Phẩm. Tuy nhiên, dù Bagging hay Boosting thì base Mã Sản Phẩm mà tất cả chúng ta biết đển nhiều nhất là dựa trên Decision Tree. Lí do là việc ensemble với những thuật toán Tree base cho tác dụng cải tổ rõ ràng nhất, cũng là những thuật toán tốt nhất lúc bấy giờ so với dạng tài liệu có cấu trúc .Với Gradient Boosting có base Model là Decision Tree, ta biết đến 2 framework phổ cập nhất là XGBoost và LightGBM

3.1 XGBOOST

XGBoost ( Extreme Gradient Boosting ) là một giải thuật được base trên gradient boosting, tuy nhiên kèm theo đó là những nâng cấp cải tiến to lớn về mặt tối ưu thuật toán, về sự tích hợp hoàn hảo nhất giữa sức mạnh ứng dụng và phần cứng, giúp đạt được những hiệu quả tiêu biểu vượt trội cả về thời hạn training cũng như bộ nhớ sử dụng .Mã nguồn mở với ~ 350 contributors và ~ 3,600 commits trên Gihub, XGBoost cho thấy những năng lực ứng dụng đáng kinh ngạc của mình như :XGBoost có thể được sử dụng để giải quyết được tất cả các vấn đề từ hồi quy (regression), phân loại (classification), ranking và giải quyết các vấn đề do người dùng tự định nghĩa.XGBoost hỗ trợ trên Windows, Linux và OS X.Hỗ trợ tất cả các ngôn ngữ lập trình chính bao gồm C ++, Python, R, Java, Scala và Julia.Hỗ trợ các cụm AWS, Azure và Yarn và hoạt động tốt với Flink, Spark và các hệ sinh thái khác….XGBoost hoàn toàn có thể được sử dụng để xử lý được tổng thể những yếu tố từ hồi quy ( regression ), phân loại ( classification ), ranking và xử lý những yếu tố do người dùng tự định nghĩa. XGBoost tương hỗ trên Windows, Linux và OS X.Hỗ trợ tổng thể những ngôn từ lập trình chính gồm có C + +, Python, R, Java, Scala và Julia. Hỗ trợ những cụm AWS, Azure và Yarn và hoạt động giải trí tốt với Flink, Spark và những hệ sinh thái khác ….*

Kể từ lần đầu ra mắt năm 2014, XGBoost nhanh chóng được đón nhận và là giải thuật được sử dụng chính, tạo ra nhiều kết quả vượt trội, giành giải cao trong các cuộc thi trên kaggle do tính đơn giản và hiểu quả của nó.

3.2 LightGBM

Mặc dù đạt được những kết quả vượt trội, XGBoost gặp một vấn đề là thời gian training khá lâu, đặc biệt với những bộ dữ liệu lớn. Đến tháng 1 năm 2016, Microsoft lần đầu realease phiên bản thử nghiệm LightGBM, và LightGBM nhanh chóng thay thế vị trí của XGBoost, trở thành thuật toán ensemble được ưa chuộng nhất.

*LightGBM có những nâng cấp cải tiến gì ? Chúng ta sẽ điểm qua một vài điểm chính sau đây :LightGBM phát triển tree dựa trên leaf-wise, trong khi hầu hết các boosting tool khác (kể cả xgboost) dựa trên level (depth)-wise. Leaf-wise lựa chọn nút để phát triển cây dựa trên tối ưu toàn bộ tree, trong khi level-wise tối ưu trên nhánh đang xét, do đó, với số node nhỏ, các tree xây dựng từ leaf-wise thường out-perform level-wise.LightGBM tăng trưởng tree dựa trên, trong khi hầu hết những boosting tool khác ( kể cả xgboost ) dựa trên level ( depth ) – wise. Leaf-wise lựa chọn nút để tăng trưởng cây dựa trên tối ưu hàng loạt tree, trong khi level-wise tối ưu trên nhánh đang xét, do đó, với số node nhỏ ,

Note: Leaf-wise tuy tốt, nhưng với những bộ dữ liệu nhỏ, các tree xây dựng dựa trên leaf-wise thường dẫn đến overfit khá sớm. Do đó, lightgbm sử dụng thêm 1 hyperparameter là maxdepth nhằm cố gắng hạn chế điều này. Dù vậy, LightGBM vẫn được khuyến khích sử dụng khi bộ dữ liệu là đủ to.

Chi tiết hơn về những nâng cấp cải tiến của LightGBM, những bạn hoàn toàn có thể đọc thêm tại : https://github.com/Microsoft/LightGBM/blob/master/docs/Features.rst

*Kết luận

Bài cũng đã dài, mình định thêm 1 phần code minh họa nữa nhưng chắc sẽ các bạn cũng có thể tìm thấy rất nhiều đoạn code sử dụng LightGBM trên Kaggle nên mình không nếu thêm ra nữa. Hi vọng qua bài viết này, các bạn hiểu thêm về lí thuyết, tư tưởng của thuật toán Gradient Boosting, cũng như vận dụng tốt hơn 2 framework mạnh mẽ XGBoost và LightGBM để giải quyết các bài toán của bản thân.

Nếu những bạn cần tìm hiểu thêm thêm về tham số của 2 thư viện này, những bạn hoàn toàn có thể đọc thêm tại https://towardsdatascience.com/lightgbm-vs-xgboost-which-algorithm-win-the-race-1ff7dd4917d hoặc tại chính docs của 2 framework này để nắm vững hơn .

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Advertismentspot_img

Popular stories