{"id":4831,"date":"2026-10-14T11:57:39","date_gmt":"2026-10-14T11:57:39","guid":{"rendered":"https:\/\/prwatech.in\/blog\/?p=4831"},"modified":"2026-10-15T15:27:40","modified_gmt":"2026-10-15T15:27:40","slug":"boosting-techniques-in-machine-learning","status":"publish","type":"post","link":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/","title":{"rendered":"Boosting Techniques in Machine Learning"},"content":{"rendered":"<h1><strong><b>Boosting Techniques in Machine Learning<\/b><\/strong><\/h1>\n<p>If you ask experienced data scientists which algorithm family wins most competitions on tables of data, many of them give the same answer: boosting. Methods such as XGBoost, LightGBM and CatBoost sit behind a large share of fraud detection, credit scoring, click prediction and sales forecasting systems. They are rarely the most glamorous models, but they are often the most accurate ones on structured data.<\/p>\n<p>The idea behind boosting is simple and rather human. A single weak model, one that is only a little better than guessing, is not much use alone. But if you train a second model that concentrates on the mistakes of the first, and a third that concentrates on the mistakes that remain, and then combine them all, the group can become very accurate. Boosting is a way of turning many weak learners into one strong learner.<\/p>\n<p>This guide explains how boosting works, how it differs from bagging, and then covers the five best known techniques: AdaBoost, Gradient Boosting, XGBoost, LightGBM and CatBoost. You will see a small worked example you can follow by hand, and a complete Python program that compares all five on the same data. We finish with tuning advice, applications, common mistakes and a short FAQ.<\/p>\n<h2><strong><b>What is Boosting?<\/b><\/strong><\/h2>\n<p>Boosting is an <strong><b>ensemble<\/b><\/strong>\u00a0method, which means it combines several models into one. What makes it special is that the models are built <strong><b>in sequence<\/b><\/strong>. Each new model is trained to fix the errors left by the models before it. When it is time to predict, the models vote or add up their outputs, usually giving stronger models more say.<\/p>\n<p>The base models are usually very small decision trees, sometimes only a single split, called a stump. A stump alone is a poor predictor, which is exactly the point. Boosting steadily reduces <strong><b>bias<\/b><\/strong>, the error that comes from a model being too simple to capture the pattern.<\/p>\n<h2><strong><b>Bagging Versus Boosting<\/b><\/strong><\/h2>\n<div style=\"border: 1px solid #d9e0ea; border-radius: 8px; overflow-x: auto; margin: 20px 0; -webkit-overflow-scrolling: touch;\">\n<table style=\"width: 100%; min-width: 700px; border-collapse: collapse; font-family: Arial,Helvetica,sans-serif; font-size: 16px; line-height: 1.6; color: #1f2937;\">\n<caption style=\"caption-side: top; text-align: left; padding: 14px 16px; font-weight: bold; font-size: 17px; color: #0f2a4a;\">Bagging vs boosting<\/caption>\n<thead>\n<tr>\n<th style=\"background: #0f2a4a; color: #ffffff; text-align: left; padding: 12px 16px; border-bottom: 2px solid #0b1f38; width: 190px;\" scope=\"col\">Point<\/th>\n<th style=\"background: #0f2a4a; color: #ffffff; text-align: left; padding: 12px 16px; border-bottom: 2px solid #0b1f38;\" scope=\"col\">Bagging<\/th>\n<th style=\"background: #0f2a4a; color: #ffffff; text-align: left; padding: 12px 16px; border-bottom: 2px solid #0b1f38;\" scope=\"col\">Boosting<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background: #ffffff;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">Main goal<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Reduce variance<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Reduce bias, step by step<\/td>\n<\/tr>\n<tr style=\"background: #f5f8fc;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">How models are built<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Independently, in parallel<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">One after another, each fixing the last<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">Best base models<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Strong, complex ones such as full trees<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Weak, simple ones such as shallow trees<\/td>\n<\/tr>\n<tr style=\"background: #f5f8fc;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">Data for each model<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Random samples of the data<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">The same data, re weighted or fitted to the errors<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">Famous example<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Random forest<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">AdaBoost, XGBoost<\/td>\n<\/tr>\n<tr style=\"background: #f5f8fc;\">\n<th style=\"text-align: left; padding: 12px 16px; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">Risk<\/th>\n<td style=\"padding: 12px 16px;\">Little<\/td>\n<td style=\"padding: 12px 16px;\">Can overfit if run too long on noisy data<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>&nbsp;<\/p>\n<h2><strong><b>The Five Boosting Techniques at a Glance<\/b><\/strong><\/h2>\n<div style=\"border: 1px solid #d9e0ea; border-radius: 8px; overflow-x: auto; margin: 20px 0; -webkit-overflow-scrolling: touch;\">\n<table style=\"width: 100%; min-width: 760px; border-collapse: collapse; font-family: Arial,Helvetica,sans-serif; font-size: 16px; line-height: 1.6; color: #1f2937;\">\n<caption style=\"caption-side: top; text-align: left; padding: 14px 16px; font-weight: bold; font-size: 17px; color: #0f2a4a;\">Boosting techniques compared<\/caption>\n<thead>\n<tr>\n<th style=\"background: #0f2a4a; color: #ffffff; text-align: left; padding: 12px 16px; border-bottom: 2px solid #0b1f38; width: 170px;\" scope=\"col\">Technique<\/th>\n<th style=\"background: #0f2a4a; color: #ffffff; text-align: left; padding: 12px 16px; border-bottom: 2px solid #0b1f38;\" scope=\"col\">Core idea<\/th>\n<th style=\"background: #0f2a4a; color: #ffffff; text-align: left; padding: 12px 16px; border-bottom: 2px solid #0b1f38;\" scope=\"col\">Notable strength<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background: #ffffff;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">AdaBoost<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Re weights the training examples so later models focus on the ones that were wrong<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Simple, the original boosting method<\/td>\n<\/tr>\n<tr style=\"background: #f5f8fc;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">Gradient Boosting<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Each new tree is fitted to the errors, called residuals, of the current model<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Flexible, works with many loss functions<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">XGBoost<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">An optimised gradient boosting with built in regularisation<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Strong accuracy, handles missing values<\/td>\n<\/tr>\n<tr style=\"background: #f5f8fc;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">LightGBM<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Gradient boosting that grows trees leaf by leaf and bins the data into histograms<\/td>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">Very fast on large data<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<th style=\"text-align: left; padding: 12px 16px; color: #0f2a4a; white-space: nowrap;\" scope=\"row\">CatBoost<\/th>\n<td style=\"padding: 12px 16px;\">Gradient boosting designed to handle categorical columns directly<\/td>\n<td style=\"padding: 12px 16px;\">Needs little preprocessing for categories<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><strong><b>1. AdaBoost<\/b><\/strong><\/h3>\n<p>AdaBoost, short for adaptive boosting, was introduced in 1995 by Freund and Schapire. It starts by giving every training example the same weight. After each weak model is trained, the examples it got wrong are given more weight, and the ones it got right are given less. The next model is therefore pushed to concentrate on the hard cases.<\/p>\n<p>Here is the process in steps:<\/p>\n<ol>\n<li>Give every example an equal weight.<\/li>\n<li>Train a weak model, usually a stump, using the weights.<\/li>\n<li>Measure its weighted error, the share of weight on examples it got wrong.<\/li>\n<li>Give the model a say, called alpha, that grows as its error shrinks.<\/li>\n<li>Increase the weights of the examples it got wrong, decrease the weights of the others, and rescale so the weights add up to one.<\/li>\n<li>Repeat for the chosen number of rounds, then combine all the models using their say.<\/li>\n<\/ol>\n<p>The say of each model and the final prediction for a two class problem are:<\/p>\n<p>alpha_m = 0.5 * ln( (1 &#8211; error_m) \/ error_m )<\/p>\n<p>F(x) = sign( alpha_1 * f_1(x) + alpha_2 * f_2(x) + &#8230; + alpha_M * f_M(x) )<\/p>\n<p>Here f_m is the m th weak model and the output of each is plus one or minus one. The sign of the weighted sum is the final class.<\/p>\n<p>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4832\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png\" alt=\"Boosting Techniques in Machine Learning\" width=\"850\" height=\"279\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png 320w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1-300x98.png 300w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/p>\n<p>To see the effect, here is a short experiment on the breast cancer dataset. A single stump is compared with AdaBoost made of stumps.<\/p>\n<p>from sklearn.datasets import load_breast_cancer<\/p>\n<p>from sklearn.model_selection import train_test_split<\/p>\n<p>from sklearn.tree import DecisionTreeClassifier<\/p>\n<p>from sklearn.ensemble import AdaBoostClassifier<\/p>\n<p>&nbsp;<\/p>\n<p>X, y = load_breast_cancer(return_X_y=True)<\/p>\n<p>X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)<\/p>\n<p>&nbsp;<\/p>\n<p>stump = DecisionTreeClassifier(max_depth=1).fit(X_train, y_train)<\/p>\n<p>print(&#8220;One stump:&#8221;, round(stump.score(X_test, y_test), 3))<\/p>\n<p>for n in [10, 50, 100]:<\/p>\n<p>ada = AdaBoostClassifier(n_estimators=n, random_state=0).fit(X_train, y_train)<\/p>\n<p>print(n, &#8220;rounds:&#8221;, round(ada.score(X_test, y_test), 3))<\/p>\n<p>A single stump scored 0.888 on the test set. AdaBoost with only 10 rounds reached 0.944. Notice that 100 rounds did not do better here, scoring 0.930. More rounds do not always help, which is why you should check performance on data the model has not seen.<\/p>\n<p>One stump: 0.888<\/p>\n<p>10 rounds: 0.944<\/p>\n<p>50 rounds: 0.944<\/p>\n<p>100 rounds: 0.93<\/p>\n<h3><strong><b>2. Gradient Boosting<\/b><\/strong><\/h3>\n<p>Gradient boosting takes a different route to the same destination. Instead of re weighting examples, each new tree is trained to predict the <strong><b>residuals<\/b><\/strong>, the gap between the current prediction and the true value. Adding that correction moves the model closer to the truth. A small multiplier called the learning rate controls how big each correction is.<\/p>\n<p>A tiny example makes this concrete. Suppose we want to predict weight in kilograms for five people, ordered by height, and the true values are 50, 60, 70, 80 and 90.<\/p>\n<ul>\n<li><b><\/b><strong><b>Start with the average.<\/b><\/strong>Predict 70 for everyone. The residuals are minus 20, minus 10, 0, 10 and 20.<\/li>\n<li><b><\/b><strong><b>Fit a small tree to the residuals.<\/b><\/strong>A single split on height puts the two shortest people in one group, with an average residual of minus 15, and the three taller people in the other, with an average residual of plus 10.<\/li>\n<li><b><\/b><strong><b>Add a fraction of the correction.<\/b><\/strong>With a learning rate of 0.5, the first two people are now predicted at 62.5 and the other three at 75.<\/li>\n<li><b><\/b><strong><b>Check the improvement.<\/b><\/strong>The total squared error falls from 1,000 to 437.5.<\/li>\n<\/ul>\n<p>The next tree is then fitted to the new residuals, and the process repeats. After enough rounds the predictions are close to the truth.<\/p>\n<p>For large datasets, scikit learn recommends HistGradientBoostingClassifier, which is far faster than the classic GradientBoostingClassifier and handles missing values. For small datasets, the classic version is fine.<\/p>\n<h3><strong><b>3. XGBoost<\/b><\/strong><\/h3>\n<p>XGBoost, short for extreme gradient boosting, is a carefully engineered version of gradient boosting. Its key additions are regularisation, which penalises overly complex trees so they overfit less, built in handling of missing values, and an efficient implementation that uses all your processor cores. It is often much faster than older gradient boosting code, though how much depends on your data.<\/p>\n<h3><strong><b>4. LightGBM<\/b><\/strong><\/h3>\n<p>LightGBM, from Microsoft, makes boosting fast on big data. It groups feature values into histogram bins, and it grows each tree <strong><b>leaf wise<\/b><\/strong>, always splitting the leaf that reduces the error the most, instead of growing level by level. That gets accuracy quickly, but it can overfit on small datasets. If your data is small, limit the tree size with the num_leaves, max_depth and min_child_samples settings.<\/p>\n<h3><strong><b>5. CatBoost<\/b><\/strong><\/h3>\n<p>CatBoost, from Yandex, is built for data that has many categorical columns, such as city, product type or customer segment. It can take those columns directly, with no need to turn them into numbers by hand, and it uses a technique called ordered boosting to reduce a problem known as target leakage. It often gives good results with little tuning.<\/p>\n<h2><strong><b>Comparing All Five on the Same Data<\/b><\/strong><\/h2>\n<p>The page this guide replaces compared methods using different datasets, which makes the scores meaningless. Here is a fair comparison. Every model sees the same training and test split of the breast cancer dataset, and all use 100 trees and a learning rate of 0.1 where the setting applies. First install the libraries:<\/p>\n<p>pip install scikit-learn xgboost lightgbm catboost<\/p>\n<p>from sklearn.datasets import load_breast_cancer<\/p>\n<p>from sklearn.model_selection import train_test_split<\/p>\n<p>from sklearn.metrics import accuracy_score<\/p>\n<p>from sklearn.ensemble import AdaBoostClassifier, GradientBoostingClassifier<\/p>\n<p>from xgboost import XGBClassifier<\/p>\n<p>from lightgbm import LGBMClassifier<\/p>\n<p>from catboost import CatBoostClassifier<\/p>\n<p>&nbsp;<\/p>\n<p>X, y = load_breast_cancer(return_X_y=True)<\/p>\n<p>X_train, X_test, y_train, y_test = train_test_split(<\/p>\n<p>X, y, test_size=0.25, random_state=0, stratify=y<\/p>\n<p>)<\/p>\n<p>&nbsp;<\/p>\n<p>models = {<\/p>\n<p>&#8220;AdaBoost&#8221;: AdaBoostClassifier(n_estimators=100, random_state=0),<\/p>\n<p>&#8220;Gradient Boosting&#8221;: GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=0),<\/p>\n<p>&#8220;XGBoost&#8221;: XGBClassifier(n_estimators=100, learning_rate=0.1, random_state=0),<\/p>\n<p>&#8220;LightGBM&#8221;: LGBMClassifier(n_estimators=100, learning_rate=0.1, random_state=0, verbose=-1),<\/p>\n<p>&#8220;CatBoost&#8221;: CatBoostClassifier(iterations=100, learning_rate=0.1, random_seed=0, verbose=0),<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>for name, model in models.items():<\/p>\n<p>model.fit(X_train, y_train)<\/p>\n<p>accuracy = accuracy_score(y_test, model.predict(X_test))<\/p>\n<p>print(f&#8221;{name}: {accuracy:.3f}&#8221;)<\/p>\n<p>When I ran it, the output was:<\/p>\n<p>AdaBoost: 0.930<\/p>\n<p>Gradient Boosting: 0.958<\/p>\n<p>XGBoost: 0.951<\/p>\n<p>LightGBM: 0.944<\/p>\n<p>CatBoost: 0.944<\/p>\n<p>All five land within about three percentage points of each other. On a test set of 143 patients, a single patient changes the score by 0.7 points, so you should not declare a winner from this table. On real projects, use cross validation and compare on your own data. The practical lesson is that boosting methods are all strong, and the best one depends on your data.<\/p>\n<h2><strong><b>Which Boosting Method Should You Use?<\/b><\/strong><\/h2>\n<div style=\"border: 1px solid #d9e0ea; border-radius: 8px; overflow-x: auto; margin: 20px 0; -webkit-overflow-scrolling: touch;\">\n<table style=\"width: 100%; min-width: 640px; border-collapse: collapse; font-family: Arial,Helvetica,sans-serif; font-size: 16px; line-height: 1.6; color: #1f2937;\">\n<caption style=\"caption-side: top; text-align: left; padding: 14px 16px; font-weight: bold; font-size: 17px; color: #0f2a4a;\">Which boosting method to try first<\/caption>\n<thead>\n<tr>\n<th style=\"background: #0f2a4a; color: #ffffff; text-align: left; padding: 12px 16px; border-bottom: 2px solid #0b1f38; width: 320px;\" scope=\"col\">Your situation<\/th>\n<th style=\"background: #0f2a4a; color: #ffffff; text-align: left; padding: 12px 16px; border-bottom: 2px solid #0b1f38;\" scope=\"col\">Try first<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background: #ffffff;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a;\" scope=\"row\">Learning the idea, small data<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">AdaBoost or classic Gradient Boosting<\/td>\n<\/tr>\n<tr style=\"background: #f5f8fc;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a;\" scope=\"row\">Tabular data with up to a few hundred thousand rows<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">XGBoost or HistGradientBoosting<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a;\" scope=\"row\">Millions of rows, speed matters<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">LightGBM<\/td>\n<\/tr>\n<tr style=\"background: #f5f8fc;\">\n<th style=\"text-align: left; padding: 12px 16px; border-bottom: 1px solid #e5e9f0; color: #0f2a4a;\" scope=\"row\">Many categorical columns<\/th>\n<td style=\"padding: 12px 16px; border-bottom: 1px solid #e5e9f0;\">CatBoost<\/td>\n<\/tr>\n<tr style=\"background: #ffffff;\">\n<th style=\"text-align: left; padding: 12px 16px; color: #0f2a4a;\" scope=\"row\">You want a strong default with little tuning<\/th>\n<td style=\"padding: 12px 16px;\">CatBoost or HistGradientBoosting<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2><strong><b>Tuning Boosting Models<\/b><\/strong><\/h2>\n<ul>\n<li><b><\/b><strong><b>Learning rate and number of trees go together. <\/b><\/strong>Smaller learning rates need more trees to reach the same fit, and usually generalise better. Scikit learn suggests a learning rate of 0.1 or lower, with enough trees that early stopping decides when to halt.<\/li>\n<li><b><\/b><strong><b>Use early stopping. <\/b><\/strong>Hold back some data and stop adding trees when the score on it stops improving.<\/li>\n<li><b><\/b><strong><b>Keep trees small. <\/b><\/strong>Shallow trees are the point of boosting. Deep trees overfit faster.<\/li>\n<li><b><\/b><strong><b>Subsample the rows. <\/b><\/strong>Training each tree on a fraction of the data, such as half, often improves accuracy when combined with a small learning rate.<\/li>\n<li><b><\/b><b><\/b>Use the penalty settings in XGBoost, LightGBM and CatBoost to keep trees simple.<\/li>\n<\/ul>\n<h2><strong><b>Applications of Boosting<\/b><\/strong><\/h2>\n<ul>\n<li><b><\/b><strong><b>Credit scoring and fraud detection. <\/b><\/strong>Boosted trees are common in banking.<\/li>\n<li><b><\/b><strong><b>Click and conversion prediction. <\/b><\/strong>Ranking ads and recommendations.<\/li>\n<li><b><\/b><strong><b>Demand and sales forecasting. <\/b><\/strong>Predicting numbers from tables of past data.<\/li>\n<li><b><\/b><strong><b>Customer churn and employee attrition. <\/b><\/strong>Finding who is likely to leave.<\/li>\n<li><b><\/b><strong><b>Search ranking. <\/b><\/strong>Many ranking systems use boosted trees.<\/li>\n<li><b><\/b><strong><b>Healthcare risk models. <\/b><\/strong>Predicting outcomes from patient measurements.<\/li>\n<\/ul>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/EGbyBqFlTcQ\" width=\"850\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h2><strong><b>Common Mistakes<\/b><\/strong><\/h2>\n<ul>\n<li><b><\/b><strong><b>Comparing scores from different datasets. <\/b><\/strong>A fair comparison needs the same data and split.<\/li>\n<li><b><\/b><strong><b>Running too many rounds. <\/b><\/strong>Boosting can overfit, especially on noisy data. Use early stopping.<\/li>\n<li><b><\/b><strong><b>Ignoring the learning rate. <\/b><\/strong>It must be tuned together with the number of trees.<\/li>\n<li><b><\/b><strong><b>Using LightGBM defaults on a tiny dataset. <\/b><\/strong>Leaf wise growth can overfit, so limit the tree size.<\/li>\n<li><b><\/b><strong><b>Marking numeric columns as categorical. <\/b><\/strong>In CatBoost, only list true category columns.<\/li>\n<li><b><\/b><strong><b>Trusting one lucky test split. <\/b><\/strong>Use cross validation.<\/li>\n<\/ul>\n<p>Boosting turns many modest models into one very accurate one by letting each learn from the mistakes of the last. Start with the comparison program on your own data, use cross validation to pick between the methods, and keep the learning rate small and early stopping on.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Boosting Techniques in Machine Learning If you ask experienced data scientists which algorithm family wins most competitions on tables of data, many of them give the same answer: boosting. Methods such as XGBoost, LightGBM and CatBoost sit behind a large share of fraud detection, credit scoring, click prediction and sales forecasting systems. They are rarely [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32,1696],"tags":[448,447,445,452,446,449,450,451],"class_list":["post-4831","post","type-post","status-publish","format-standard","hentry","category-machine-learning","category-machine-learning-modules","tag-adaboost-algorithm-in-machine-learning","tag-boosting-algorithm-introduction","tag-boosting-techniques-in-machine-learning","tag-catboost-in-machine-learning","tag-different-types-of-boosting-algorithm","tag-gradient-boosting-in-machine-learning","tag-lightgbm-machine-learning","tag-xgboost-in-machine-learning"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Boosting Techniques in Machine Learning: Explained | PrwaTech<\/title>\n<meta name=\"description\" content=\"Learn how boosting works and compare AdaBoost, Gradient Boosting, XGBoost, LightGBM and CatBoost, with tested Python code and tips on when to use each.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Boosting Techniques in Machine Learning: Explained | PrwaTech\" \/>\n<meta property=\"og:description\" content=\"Learn how boosting works and compare AdaBoost, Gradient Boosting, XGBoost, LightGBM and CatBoost, with tested Python code and tips on when to use each.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/\" \/>\n<meta property=\"og:site_name\" content=\"Prwatech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prwatech.in\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-14T11:57:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-15T15:27:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"320\" \/>\n\t<meta property=\"og:image:height\" content=\"105\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Prwatech\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Eduprwatech\" \/>\n<meta name=\"twitter:site\" content=\"@Eduprwatech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prwatech\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/\",\"url\":\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/\",\"name\":\"Boosting Techniques in Machine Learning: Explained | PrwaTech\",\"isPartOf\":{\"@id\":\"https:\/\/prwatech.in\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png\",\"datePublished\":\"2026-10-14T11:57:39+00:00\",\"dateModified\":\"2026-10-15T15:27:40+00:00\",\"author\":{\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3\"},\"description\":\"Learn how boosting works and compare AdaBoost, Gradient Boosting, XGBoost, LightGBM and CatBoost, with tested Python code and tips on when to use each.\",\"breadcrumb\":{\"@id\":\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#primaryimage\",\"url\":\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png\",\"contentUrl\":\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png\",\"width\":320,\"height\":105},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/prwatech.in\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Boosting Techniques in Machine Learning\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/prwatech.in\/blog\/#website\",\"url\":\"https:\/\/prwatech.in\/blog\/\",\"name\":\"Prwatech\",\"description\":\"Share Ideas, Start Something Good.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/prwatech.in\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3\",\"name\":\"Prwatech\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g\",\"caption\":\"Prwatech\"},\"url\":\"https:\/\/prwatech.in\/blog\/author\/prwatech123\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Boosting Techniques in Machine Learning: Explained | PrwaTech","description":"Learn how boosting works and compare AdaBoost, Gradient Boosting, XGBoost, LightGBM and CatBoost, with tested Python code and tips on when to use each.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/","og_locale":"en_US","og_type":"article","og_title":"Boosting Techniques in Machine Learning: Explained | PrwaTech","og_description":"Learn how boosting works and compare AdaBoost, Gradient Boosting, XGBoost, LightGBM and CatBoost, with tested Python code and tips on when to use each.","og_url":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/","og_site_name":"Prwatech","article_publisher":"https:\/\/www.facebook.com\/prwatech.in\/","article_published_time":"2026-10-14T11:57:39+00:00","article_modified_time":"2026-10-15T15:27:40+00:00","og_image":[{"width":320,"height":105,"url":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png","type":"image\/png"}],"author":"Prwatech","twitter_card":"summary_large_image","twitter_creator":"@Eduprwatech","twitter_site":"@Eduprwatech","twitter_misc":{"Written by":"Prwatech","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/","url":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/","name":"Boosting Techniques in Machine Learning: Explained | PrwaTech","isPartOf":{"@id":"https:\/\/prwatech.in\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#primaryimage"},"image":{"@id":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#primaryimage"},"thumbnailUrl":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png","datePublished":"2026-10-14T11:57:39+00:00","dateModified":"2026-10-15T15:27:40+00:00","author":{"@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3"},"description":"Learn how boosting works and compare AdaBoost, Gradient Boosting, XGBoost, LightGBM and CatBoost, with tested Python code and tips on when to use each.","breadcrumb":{"@id":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#primaryimage","url":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png","contentUrl":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2020\/02\/boosting1.png","width":320,"height":105},{"@type":"BreadcrumbList","@id":"https:\/\/prwatech.in\/blog\/machine-learning\/machine-learning-modules\/boosting-techniques-in-machine-learning\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/prwatech.in\/blog\/"},{"@type":"ListItem","position":2,"name":"Boosting Techniques in Machine Learning"}]},{"@type":"WebSite","@id":"https:\/\/prwatech.in\/blog\/#website","url":"https:\/\/prwatech.in\/blog\/","name":"Prwatech","description":"Share Ideas, Start Something Good.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/prwatech.in\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3","name":"Prwatech","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g","caption":"Prwatech"},"url":"https:\/\/prwatech.in\/blog\/author\/prwatech123\/"}]}},"_links":{"self":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/4831","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/comments?post=4831"}],"version-history":[{"count":14,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/4831\/revisions"}],"predecessor-version":[{"id":12002,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/4831\/revisions\/12002"}],"wp:attachment":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/media?parent=4831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/categories?post=4831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/tags?post=4831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}