What is boosting in machine learning and how does it improve model performance? How does boosting combine multiple weak learners to create a strong model? What are the common boosting algorithms used in practice? How does boosting differ from other ensemble methods like bagging? What are the advantages and limitations of boosting in real-world applications?