What is Linear Discriminant Analysis (LDA), and how is it used in machine learning for classification tasks? How does LDA differ from other dimensionality reduction techniques like PCA? What are the key assumptions behind LDA? How does LDA maximize class separability in a dataset? What are the common applications and limitations of LDA in real-world scenarios?