Skip to content

[FEATURE] Missingness incorporated as attributes #392

Description

@dwachsmuth

I'm wondering if the package developers would be interested in building support for "missingness incorporated as attributes" (MIA) into the BART decision tree creation process. The idea is to avoid the need to either impute missing values or drop observations with missing values, and instead to let trees route missing data left or right as part of "normal" splitting rules, and also to split on the presence of missingness itself. This is a particularly useful approach when missingness actually encodes information that could be useful for predictions. (E.g. certain variables are suppressed in census tracts with low population, and that fact is correlated with the outcome variable.)

The technical details of MIA are described in this paper: https://arxiv.org/abs/1306.0618, and are currently implemented in the bartMachine R package. Here is the high-level summary of the splitting rules using MIA (copy-pasted from the paper):

1: If xij is present and xij ≤c, send this observation left (←−); otherwise, send this
observation right (−→). If xij is missing, send this observation left (←−).
2: If xij is present and xij ≤c, send this observation left (←−); otherwise, send this
observation right (−→). If xij is missing, send this observation right (−→).
3: If xij is missing, send this observation left (←−); if it is present, regardless of its value,
send this observation right (−→) .

This could be implemented via the existing API with an additional mia argument to the bart() and bcf() functions, which would presumably default to FALSE but when TRUE would implement MIA. bartMachine offers an additional use_missing_data_dummies_as_covars argument to control whether splitting can happen on missingness; this could also be exposed via the stochtree API.

I wish I had the technical skills to write up a PR, but hopefully this should serve as a decent overview of the idea.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions