Which models can handle null values? Unfortunately trying to google or research null values in machine learning always brings up pages trying to teach you how to impute the values instead, but I'm trying to find models that can handle null values as input. The only one I've found currently is XGBoost, which is a gradient descent algorithm. I believe tree based algorithms should in theory handle null values as well, but I'm not sure if that generalizes to all tree based algorithms or if some work better than others.

Some background, I have created multiple datasets, including ones where the NaNs ARE replaced. Those can be used to train models that can't handle null values, like neural networks.

Due to the sparseness and nature of the data, imputing with mean or median is going to introduce a LOT of bias and doesn't make sense. Just want to get that out there since that's the first thing everyone suggests. Also, the missing data actually represents a situation where a patient didn't get a specific lab test done, which is useful information of its own.

So back to the original question, besides XGBoost, are there other models that handle null values as inputs? Does that generalize to ALL gradient descent algorithms or tree algorithms or just specific ones? Is there a preferred model for a situation where you want to keep null values?
LightGBM and XGBoost Libraries can handle missing values


LightGBM: will ignore missing values during a split, then allocate
them to whichever side reduces the loss the most 
XGBoost:   the  instance  is classified into a default    direction (the optimal default directions  are learnt from the data    somehow)


Finally, it is NOT a general property of gradient descent algorithms or tree algorithms. Only specific implementations of these algorithms have this property.

Personally, I believe that LightGBM and XGBoost can handle missing values effectively, in case one wants to keep them