Zhao et al.'s reformulation is that maximizing the value
\((d) = E[Y 1{A = d(X)} / pi(A | X)]\) is the same problem as
MINIMIZING the weighted misclassification risk
\([(Y / pi(A | X)) 1{A != d(X)}]\), a classification problem in
which the outcome is the weight and the observed treatment is the
label. The surrogate is theirs – the weighted HINGE loss with a
ridge penalty, a linear-kernel weighted SVM,
\(in_b (1/n) sum w_i max(0, 1 - A_i x_i primeb) + lam ||b_slope||^2\),
minimized by full-batch subgradient descent on the Pegasos step
schedule eta_t = 1 / (lam t): a fixed iteration count, no
sampling and no tolerance test. The intercept is not penalized.
Value
List with beta, estimate, value,
value_all_treated, value_all_control, rule,
n_treated_by_rule, hinge, shift, n,
p.
Details
The cheaper surrogate – weighted least squares of the label on the covariates – has the right population minimiser but is not robust to leverage. On a design where the high-weight units sit near the decision boundary and the low-weight ones sit far from it, the squared loss lets the far units outvote the informative ones and returns the exactly INVERTED rule. That happened on this module primes own anchor fixture, which is why the hinge is used.
The rule is d(x) = 1{x primeb > 0}. NEGATIVE outcomes break the
equivalence, because a negative weight rewards misclassification;
the standard fix is to shift Y by its minimum. That shift is
NOT innocuous – it changes the relative weights and so can change
the learned rule, which is exactly the objection that motivated
residual weighted learning – so the amount shifted is RETURNED in
shift rather than applied silently.
References
Zhao, Y., Zeng, D., Rush, A. J. & Kosorok, M. R. (2012). Estimating individualized treatment rules using outcome weighted learning. Journal of the American Statistical Association, 107(499), 1106-1118. doi:10.1080/01621459.2012.695674 Shalev-Shwartz, S., Singer, Y., Srebro, N. & Cotter, A. (2011). Pegasos: primal estimated sub-gradient solver for SVM. Mathematical Programming, 127(1), 3-30.
Examples
y <- c(2.9, 5.1, 6.8, 9.4, 11.2, 13.1, 15.0, 17.6)
g <- c(0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L)
x <- c(1.2, 2.4, 3.1, 4.8, 5.3, 6.7, 7.1, 8.9)
res <- Owltrn(y = y, D = g, W = x)
res
#> $beta
#> [1] 3.0794800 -0.4277682
#>
#> $estimate
#> [1] 11.66
#>
#> $value
#> [1] 11.66
#>
#> $value_all_treated
#> [1] 10.175
#>
#> $value_all_control
#> [1] 10.1
#>
#> $rule
#> [1] 1 1 1 1 1 1 1 0
#>
#> $n_treated_by_rule
#> [1] 7
#>
#> $hinge
#> [1] 0.8183704
#>
#> $shift
#> [1] 0
#>
#> $n
#> [1] 8
#>
#> $p
#> [1] 2
#>
#> $method
#> [1] "Outcome-weighted learning, weighted hinge (Zhao et al. 2012)"
#>
#> attr(,"class")
#> [1] "morie_rich_result" "list"
