Split Dataset in two Explainable Subsets is there a general approach for splitting a dataset into two or more subsets so that a classification problem can be solved with higher accuracy for the resulting separate subsets? 

I have a very inconsistent dataset which I can only classify with a 50% accuracy. I spit the set in two subsets based on an assumption of what predictor should correlate with a output variable. In my first subset, I only included samples from the dataset were the predictor correlates with the output variable. The remaining samples go in the second subset. Afterwards, both subsets (1k samples/2k samples) performed better, from 50% accuracy to 95%/65%. 
In this specific example, I have a strong suspicion that the class labels used for tagging were interpreted differently by different persons which led to conflicting tags. Manually "enforcing" one interpretation helped separating this. This is supported by the fact that correlations between this output variable and other output variables drastically swap signs between one and the other subset.

I was wondering if there is a general approach on how this could be achieved for my other output variables. I.e., find a separation of my dataset so that both sets separately can be classified accurately with some machine learning algorithm.
Most classical machine learning algorithms assume targets are labeled completely correctly. If you think your labels are noisy, it would make sense to apply techniques to handle that issue.
As far as splitting a dataset into subgroups to improve performance, you are describing any tree-based machine learning algorithm. The goal of any tree-based learning algorithm is learn to split the data into more homogenous groups in the feature space based on target labels.