What is AdaBoost and how is it used in machine learning tasks? How does AdaBoost combine weak learners to create a strong model? What role do weights play in improving model performance in AdaBoost? In which types of problems is AdaBoost most effective? What are the advantages and limitations of using AdaBoost in machine learning?