Stop 13 · Business Communication & StorytellingTopics · 1/7

Translating Business Problems Into ML Problems

Part of the Data Science Roadmap

In short

Your manager will never say 'build me a binary classifier'. They'll say 'customers are leaving, fix it'. Turning that worry into a precise question a model can answer is half the job.

The core skill of the job — turning a vague ask ('reduce customer churn') into a specific, well-framed prediction problem (predict churn probability per customer in the next 30 days).

The mascot, dressed as a tailor, measures a dress form with a tape and notes it on a small pad.

Think of it like this

The tailor's measuring tape

A customer says, 'Make me look smart for my cousin's wedding.' A good tailor turns that into numbers: chest 40, sleeve 24, ready by the 14th, budget fixed. Only then does the cutting start. You do the same with a fuzzy business request.

Watch it happen

From vague ask to ML problem

Vague ask
Decision
Target
Data
Metric
Baseline

1/6The ask arrives: 'reduce customer churn'. Nice goal, but no model can predict 'reduce'.

The big ideas

What you need to know

Start from the decision

Ask who will do what differently with the prediction. If nobody acts on it, don't build it.

Write the label exactly

Name the unit (customer, order, day), the outcome and the time window. 'Churn' alone means five things to five people.

Pick a metric that maps to cost

A missed fraud and a false alarm cost different amounts. Your metric should reflect that.

Maybe ML isn't needed

Sometimes a rule, a SQL query or a dashboard solves it. Say so; it saves weeks.

See it in code

Walk through the code

python
1import pandas as pd2 3orders = pd.read_csv("orders.csv", parse_dates=["order_date"])4cutoff = pd.Timestamp("2026-06-30")5 6past = orders[orders["order_date"] <= cutoff]7future = orders[(orders["order_date"] > cutoff) &8                (orders["order_date"] <= cutoff + pd.Timedelta(days=30))]9 10customers = past.groupby("customer_id").size().rename("past_orders").to_frame()11customers["churned"] = ~customers.index.isin(future["customer_id"])12 13print(customers["churned"].mean())   # share of customers who churned

1/4The cutoff is the day you pretend to make the prediction.

'Churn' turned into code: a customer with no order in the 30 days after the cutoff. Once the label is written down, nobody argues about it later.

Save yourself the pain

Common mistakes

Oops

Jumping straight into modelling because the data is already in a CSV.

Do this instead

First agree on the decision, the label and the metric with the person who asked. Write it in one paragraph.

Oops

Defining churn loosely as 'inactive users'.

Do this instead

Write an exact rule, like 'no order in the 30 days after the prediction date', and get the business team to sign off.

Your mission

Frame three fuzzy asks

~25 min

Quick check

A manager says 'help us reduce delivery delays'. Which is the best-framed ML problem?

Go deeper

  1. 1Practice rewriting 5 vague business goals into specific, well-framed ML problem statements.
  2. 2Learn to ask what decision the model's output would actually change before building it.
  3. 3Notice how often the honest answer is 'this doesn't need ML, just better data'.

More topics at this stop

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge