I am apart of a group doing an a ML project for a company. The project we are working on is a churn prediction model for a service, now for what the company defines as churn there is only around 2% churn in the whole dataset which is approx. 2 million lines. These are the results from our best model yet: Classification Report We have tried all the conventional supervised learning algorithms and Pytorch neural network algorithms and we have been using SMOTE oversampling and SMOTEtomek, but we are not getting good enough results for churn cases. As of now with our best results using gradient boosting with the scores you see in the picture i uploaded. Any suggestions? Also we have a dataset with monthly customer entries for 4 years, should we be calculating the churn by each row or do a window based churn f.x. if we would calculate the number of terminated services on a 3 month basis and if they have dropped a certein percentage then it would be considered churn, or should we be grouping the unique customers and transform the dataset into one line for each customer instead of them appearing 48 different times? There are over 30 columns in the dataset is the model capturing too much noise? Any suggestions would be really helpful! We have tried all conventional supervised learning algorithms and pytorch neural networks. Continue reading...