Как выделить и классифицировать признаки только в значимых областях?
Имеется такие вводные: есть данные, пусть для простоты будут в двухмерном пространстве. Пример на картинке, здесь f1 и f2 - это features (вход), цвет (Y) это - выход. Количество значений выхода известно - здесь количество равно двум (Зеленый и Красный). Количество красных и зеленых точек почти одинаково.
Эти данные в общем и целом рандомны. Но среди большого пространства, на самом деле, существуют некие скопления точек одного вида. Например, на картинке выше это:
То есть мы можем с большой долей вероятности предсказать, что новая точка будет красная, если попала в красный прямоугольник, а зеленая - если попала в зеленый. Если же точка не попала ни в один из этих кластеров - то предсказать результат невозможно.
Собственно вопрос: существует ли алгоритм, который на таком, можно сказать, зашумленном поле сможет найти кластера, где количество одних точек больше других, при этом игнорируя остальное поле, где точек +- одинаково.
Какую это должно решить задачу: здесь я пытаюсь предсказать цвет новой точки по ее координатам (предсказать Y по f1, f2) - но большая часть поля состоит из рандомных значений, поэтому я пытаюсь найти регион, где вероятность выпадения определенного цвета больше, и таким образом я, зная, что точка попадает в такой регион, сказать с бОльшей вероятностью, какого она цвета. Простым подходом у меня не получилось - из-за того, что подавляющая часть данных - рандомна, то нейросеть имеет точность в 0.5 (что логично для рандомных значений) - то есть просто угадывает. Классификация так же не может работать адекватно - из-за тех же причин. Кластеризация не очень подходит - количество исходов мне известно заранее. DBSCAN похож на мою задачу, он опять же выделяет регионы по плотности, а у меня плотность данных +- равномерна на всем поле, отличается только цвет.