Another potential solution would be to separate the dataset into many datasets by the combinations of precursors used, to simply eliminate the precursor columns that are not used and ensure every value is nonzero. This can be useful for the analysis of recipes using a fixed set of precursors, assuming that the size of each separated dataset is large enough for meaningful analysis.