C.W.K.
Stream
Lesson 01 of 08 · published

When Deep Learning Beats Classical ML

~16 min · choice, tradeoffs, classical-ml

Level 0Curious
0 XP0/73 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

The decision in one paragraph

Deep learning earns its cost when: the input is high-dimensional and raw (pixels, waveforms, text), the predictive signal is buried in patterns no human would design by hand, and you have either a lot of labeled data OR a strong pretrained backbone for the domain. If even one of those is missing, classical ML (gradient boosting, linear models, SVMs) is usually the better engineering choice.

The five questions to ask

  1. Is the data tabular with strong features? → Gradient boosting wins.
  2. Is the input raw and high-dimensional? → Deep learning escalation is justified.
  3. Do I have a relevant pretrained backbone? → Transfer learning + a small head, almost always.
  4. Are interpretability or strict latency requirements binding? → Linear/tree models, or distilled small networks.
  5. What does the simplest baseline score? → Establish the floor before reaching for capacity.
Tip: Junior engineers escalate to deep learning by default. Senior engineers escalate to deep learning when classical methods plateau and the gap to the requirement is meaningful. The seniority is in the patience.

The honest hierarchy in 2026

  • Tabular — XGBoost / LightGBM / CatBoost. Often beat neural networks; always your first try.
  • Vision — Pretrained CNN/ViT + frozen backbone or LoRA. Train from scratch only with very large datasets or special domains.
  • Text — Pretrained transformer + LoRA / full fine-tune. For high-volume retrieval, sentence-transformer + classifier.
  • Time series — Gradient boosting on engineered features, or transformer-based forecasters (TimesFM, Chronos) for many series at once.
  • RL — Domain-specific; PPO + small networks for control, transformer policies for general agents.
Principle: Picking the right model class is more important than picking the right hyperparameters within that class. Get this decision right and the rest of the project runs at half cost.

Code

A decision tree, in one screen·python
def pick_model_class(task):
    # Step 1: data shape
    if task.data == "tabular" and task.feature_count < 1000:
        return "gradient_boosting"  # XGBoost / LightGBM / CatBoost

    # Step 2: pretrained options
    if task.modality in {"vision", "text", "audio"}:
        if task.label_count < 10_000:
            return "frozen_pretrained_backbone + small_head"
        if task.label_count < 1_000_000:
            return "lora_or_partial_finetune"
        return "full_finetune_or_pretrain"

    # Step 3: latency / interpretability
    if task.latency_p99_ms < 10 or task.interpretability_required:
        return "linear_or_tree_model"

    return "deep_learning_with_baseline_check"  # always with a baseline

External links

Exercise

For each of three problems you've worked on, write down which class of model you'd reach for now (after this quest) and why. Compare to what you'd have picked a year ago. Note any cases where deep learning was the wrong escalation in retrospect.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.