What is LightGBM and how is it used in machine learning tasks? How does LightGBM differ from other gradient boosting algorithms? What are the key features and advantages of using LightGBM? In which types of problems is LightGBM most effective? What are the limitations or challenges when working with LightGBM?