I work at a startup which is using ML to predict churn [1] for our SaaS customers (B2B especially, but also B2C and B2G). We use the signal in product analytics data and other sources of data to flag at-risk accounts before they cancel, so proactive engagement can occur. I can tell you that the reasons for churn are numerous, and even more so unique to each of our customers. There is definitely no golden bullet solution out there (shocking, I know).
Our customers that have had the most success reducing churn take a flexible, adaptable approach which brings in stakeholders from multiple areas. A marketer probably can't heavily reduce churn on their own. A customer success team probably can't heavily reduce churn on their own. Same for Sales teams, Product teams, etc - you shouldn't point to one team and say "this is your problem, fix it". Churn is a complex interplay between a number of factors. At least in my experience, no one team or division working in isolation will have as much success as raising churn as a company focus that is shared between multiple domain experts working together with the shared objective of improving customer retention.