This project reproduces the paper "Recursive Partitioning for Personalization using Observational Data".
Kallus, N. (2017, July). Recursive partitioning for personalization using observational data. In International Conference on Machine Learning (pp. 1789-1798). PMLR.
The paper can be found at [https://arxiv.org/pdf/1608.08925.pdf]
The repository consists of two files: util.py includes two classes: it implements the personalization trees (see Algorithm 1 in the paper) and personalization forest (see Algorithm 2).
personlizationTree takes 5 inputs.
- Train (datatype = numpy array, object): training set in the form of [X,YObs,T] where X are the covariates, YObs is the observed outcome and T is the assigned treatment.
- Test (datatype = numpy array, object): set set in the form of [X,Y,T] where X are the covariates, Y collects the potential outcome.
- max_depth (datatype = int): the maximum depth of the personalization tree.
- min_leaf_number (datatype = int): the minimum number of data points in each leaf node.
- doMatching (datatype = Boolean): a flag that, when set to True, signals the personalization tree to use the greedy-submatching (see Section 3 in the paper) to estimate the potential outcomes. Else, the user should provide the potential outcomes in Test.
personlizationForest takes treeNum (datatype = int) which is the number of trees in addition to the above inputs.