Cross-Fitting and Sample Splitting

Summary

Cross-fitting is the second generic ingredient of DML. Nuisance functions are estimated on the complement of each fold and the orthogonal score is evaluated only on the held-out fold ; roles are rotated across folds and the results aggregated. Because is independent of the observations in , remainder terms such as have conditional mean zero and vanishing variance — a one-line Chebyshev argument that replaces Donsker/entropy conditions, which fail for high-dimensional ML function classes. Rotation restores full-sample efficiency. Two variants, DML1 (average the fold estimates) and DML2 (solve one pooled estimating equation; recommended), are asymptotically equivalent; – is recommended; and the residual dependence on the random partition is handled by repeating over splits and reporting the median with a split-adjusted variance.

Overview

Neyman Orthogonality neutralizes regularization bias. A different bias comes from overfitting: if observation helped fit , then the estimation error is correlated with that observation’s own structural errors , and the remainder in the PLR decomposition need not vanish. The paper’s contrived but instructive example (p. 6): let in-sample. This estimator converges uniformly at the nearly parametric rate — excellent by any predictive yardstick — yet without sample splitting

Figure 2 shows the resulting studentized shifted markedly left; 2-fold cross-fitting with the same overfit learner removes the bias entirely while keeping the same spread as the full-sample estimator.

Main Content

Why splitting works ^thm-split-chebyshev

Let be fit only on the auxiliary sample . Conditional on , and using independence across observations and , the term

has mean zero and variance of order , so it vanishes in probability by Chebyshev’s inequality. Only -consistency of is used — no complexity restriction on the learner.

The classical alternative bounds the same term by an empirical-process supremum and requires to be Donsker (bounded entropy integral). But even the linear class has log-covering number growing like , so Donsker conditions “rule out even the simplest linear parametric model with high-dimensional regressors.” Entropy-growth conditions can substitute, but at a price: in sparse IV, Belloni et al. (2012) need without splitting and only with it; in PLR/ATE the requirement improves from to .

DML1 (Definition 3.1) ^alg-dml1

  1. Take a -fold random partition of with ; let .
  2. For each , construct an ML estimator .
  3. For each , solve , where is the empirical mean over fold (or an -approximate solution, ).
  4. Aggregate: .

DML2 (Definition 3.2) ^alg-dml2

Steps 1–2 as in DML1. Then 3. Solve the single pooled equation .

Remark 3.1 — practical recommendations ^thm-dml-recommendations

  • The choice of has no asymptotic impact, but larger gives more data () to the hard problem of learning ; “moderate values of , such as 4 or 5, … work better than .”
  • DML2 is generally recommended: the pooled empirical Jacobian in (3.4) is more stable than fold-specific Jacobians in (3.1). For scores where the Jacobian is constant (ATE in the interactive model, ) the two coincide.

Under Assumptions 3.1–3.2 (see rate requirements), Theorem 3.1 gives the linear representation

for both DML1 and DML2 — the full sample size appears, so nothing is lost to splitting asymptotically (“the two estimators will be approximately independent, so simply averaging them offers an efficient procedure”).

Cross-fit variance estimator and confidence intervals (Thm 3.2, Cor. 3.1) ^thm-dml-variance

satisfies , and obeys .

Accounting for the random partition (Definition 3.3) ^alg-median-splits

Repeat the whole procedure for independent random partitions to obtain , then report

(or the mean analogues). The medians are recommended as “more robust to outliers.” For fixed they are first-order equivalent to a single-split (Corollary 3.3); the added term inflates the variance by the across-split dispersion.

Lineage. Sample splitting in semiparametrics goes back to Bickel (1982) and Schick (1986); the targeted-learning literature has cross-validated TMLE variants. The same idea reappears inside each tree of a causal forest as honesty (Honest Trees and Causal Forests) — splits are chosen on one half-sample, leaf effects estimated on the other — and the forest’s subsampling plays the role that fold rotation plays here: every observation is used for both purposes in some tree, so no data are wasted. GRF’s local centering uses leave-one-out (out-of-bag) forest predictions as a computationally cheap stand-in for -fold cross-fitting, while noting that “a practitioner wanting to use results that are precisely covered by theory may prefer to use cross-fitting.”

Cross-fitting is not cross-validation. Cross-validation uses held-out folds to choose a model by predictive loss; cross-fitting uses held-out folds to evaluate a score with nuisances fit elsewhere. They nest naturally: tune each nuisance learner by CV within , then predict on . Tuning on the full sample before cross-fitting reintroduces a (usually small) dependence between and fold .

Examples

Empirical sensitivity to and to the split (paper §6). All tables report DML2 with the median method over splits, with two standard errors: the median single-split s.e. [brackets] and the split-adjusted s.e. (parentheses).

ApplicationLearner2-fold5-fold
Penn. bonus, interactive ATELasso [0.036] (0.036) [0.036] (0.036)
Penn. bonus, interactive ATEForest [0.036] (0.036) [0.036] (0.036)
401(k), interactive ATELasso6830 [1282] (1530)7170 [1201] (1398)
401(k), interactive ATEForest7770 [1276] (1363)8105 [1242] (1299)
401(k), PLRLasso7717 [1346] (1749)8187 [1298] (1558)

In the randomized bonus experiment the split contributes nothing visible; in the observational 401(k) study the split-adjusted s.e. is up to 30% larger under 2-fold lasso and the gap shrinks with 5 folds — direct evidence for the ” or ” advice and for reporting across-split dispersion.

Pseudocode.

for s in 1..S:                        # repeated random partitions
    folds <- random K-fold partition of 1..N
    for k in 1..K:
        eta_hat[k] <- fit_ML(W[-folds[k]])        # tune by CV inside the training part
        psi_a[k], psi_b[k] <- score_parts(W[folds[k]], eta_hat[k])
    theta[s]  <- - sum_k mean(psi_b[k]) / sum_k mean(psi_a[k])          # DML2, linear score
    sigma2[s] <- mean_k mean((psi_a[k]*theta[s] + psi_b[k])^2) / mean_k(mean(psi_a[k]))^2
report median(theta), sqrt( median(sigma2 + (theta - median(theta))^2) / N )

Connections

See Also