Tech Tips
Why your 99%-accurate model might be useless: three pitfalls to avoid
A model can score 99% in testing and still fail in the real world. Learn the three pitfalls behind most disappointments (the accuracy trap, data leakage and overfitting) and the questions that expose them before you trust the numbers.


What is the accuracy trap in machine learning?
Flagged as fraud | Not flagged | |
Actually fraud (100) | 99 caught | 1 missed |
Actually genuine (99,900) | 999 false alarms | 98,901 cleared |
Why does a 99% accurate model raise so many false alarms?
Precision and recall explained
- Precision: when the model raises an alert, how often is it right? Here, 9%.
- Recall: of all the real cases, how many did it catch? Here, 99%.
What is data leakage and how do you spot it?
Which warehouse columns leak?
Warehouse column | Safe to use? | Reason |
tenure_months | Yes | Fixed before the outcome happens, so it cannot give the answer away |
support_tickets_90d | Yes, if counted only up to the prediction date | Counted up to today, it would include tickets raised while cancelling, such as "how do I cancel?" |
last_login_date | Check first | Usually overwritten with the latest login. For a customer who left, that is roughly the day they left |
refund_issued_flag | Check first | Depends on when it is set. If refunds are issued as part of cancelling, it gives the answer away |
account_status | No | A status of "Closed" means the customer has left, so it is the outcome itself |
cancellation_reason | No | Only filled in after a customer leaves, so it is never available in time |
How to prevent data leakage
What is overfitting and how do you prevent it?

How to spot and prevent overfitting
- Split by time for anything recorded over time. Train on the past and test on the most recent period, or the model learns from the future and flatters itself.
- Use cross-validation when data is limited, so a single lucky split does not decide which model wins.
- Keep a final test set untouched until the very end, and report it once.
- Prefer the simpler model when two perform about the same. Less flexibility leaves less room to memorise.
Tracking overfitting with MLflow in Fabric
Six questions to ask before you trust any model
- What was it scored on? Training scores say almost nothing. Ask for performance on unseen data.
- How common is the outcome? For rare events, ask for precision and recall, not accuracy.
- Would we know every input at prediction time? If not, the model is cheating.
- How was the data split? For time-based data, the test period should come after the training period.
- How big is the gap between training and test scores? A large gap means overfitting.
- Does it beat a simple rule? You would not use a satnav to find the end of your own street. If a SQL condition does nearly as well, use the rule.
How PTR helps you build machine learning you can trust
- Consultancy: our Data Science & Machine Learning and AI Readiness & Data Foundations services help you build predictive models on solid foundations in Microsoft Fabric, backed by Data Engineering & Data Integration.
- Training: our Data Science courses and Microsoft Fabric courses give BI and data teams the skills behind sound model design, with options from public courses to bespoke one-to-one and tailored training.
Related reading
Stephanie Butchart
Senior Business Intelligence Consultant
An MCSA-certified BI Consultant with 12 years’ experience, Stephanie is proficient and knowledgeable across Microsoft technologies, spanning traditional on-premise data warehousing through to Azure BI solutions, Power BI and Microsoft Fabric. With a strong focus on data warehousing and data engineering, she also brings growing expertise in data science, machine learning and the use of AI to support coding and solution development. She also holds the Microsoft Certified: Azure Administrator Associate certification.
Frequently Asked Questions
Couldn’t find the answer you were looking for? Feel free to reach out to us! Our team of experts is here to help.
Contact Us


