Альтернативные способы детектирования "перекрытия" моделей

Метод исключения участников

Положим, Вася Пупкин является экспертом как по физике, так и по биржевым котировкам. Что случится, если в уже натренированной модели взять и случайно перемешать Васины ответы в тестовых данных?

Правильно. Точность предсказания упадёт. Причём упадёт она как для физики, так и для акций.

Если теперь начать случайно выкидывать всяких разных Вась, штучно и наборами, из данных и смотреть, как портится предсказание цен в зависимости от порчи предсказаний по физике, то получится примерно вот такая картинка:

Она показывает, что чем больше мы теряем знаний по физике, тем хуже предсказываем цену акций. То есть, что в физике имеется нечто, полезное для прикидки котировок.

Но что если, на самом деле, предсказание цен и решение задач по физике в не опираются на общее знание? Тогда выкидывание познаний Петь, Тань и Вань будет приводить обычно к падению точности либо по акциям, либо по физике, но не вместе, и картинка будет ожидаться скорее вот такая:

Казалось бы, бери и измеряй. Но остаётся невыясненным важный вопрос: а по сколько человек исключать из модели, чтобы измерить эффект?

Максимум, очевидно -- всех. Это даст сильнейшую линейную корреляцию,  но ноль нового знания, ибо и так очевидно, что "пустые" модели не могут предсказать ничего.

Минимум -- по одному. Это измерит индивидуальные познания каждого участника и, возможно, некоторые парные взаимодействия -- но, очевидно, вряд ли качественно оценит знания, нетривиально распределённые между многими людьми.

В методе не возникает никакого естественного критерия для выбора этого параметра, и это -- кардинальный недостаток. Ибо любой выбор "с потолка" вносит в систему предположения о том, как она работает, и влияет на ответ. Тем не менее, я решил всё-таки им посчитать, выбрасывая по одному -- просто потому, что этот "минимум" хотя бы в некоторой степени более обоснован, нежели совершенно произвольные 2 или 3.

Результаты оказались вот такими.

RandomForest зависимости не видит, а график для него визуально напоминает скорее "клюшку", нежели линию:

 

XG -- то же самое.

XG+ наблюдает отрицательную зависимость, хотя и сомнительной достоверности (p-Value = 0.25)

В целом это означает, что для большинства участников общего знания между котировками и физикой не существует.

 

Альтернативные разбивки

Та же идея, что и в первой постановке. Но, быть может, имеет смысл поделить участников на группы не совсем случайно? Тут возможен различный креатив.

а) Можно сразу разбить так, чтобы в группе A оказались люди с "более чем в среднем правильными" ответами на задачи по физике, а в другой (B) -- с "менее чем в среднем". То есть, задать выкрутить T(A) < T(B) до упора в максимум. И посмотреть, как на это отреагирует R(A) - R(B).

Он получается офигительно с тем же знаком:

По вертикали отложен выигрыш в предсказании цен на Майкрософт (R(A) - R(B)) как функция выигрыша в предсказании решений задач (T(A) - T(B)). Вероятность получить зависимость не худшего качества случайно, как написано в левом уголочке, составляет что-то вроде 1.5*10-11. Это регрессор XG.

Регрессоры XG+ и RF, однако, дают куда менее чёткие результаты:

Если потерю "выигрыша" в первом случае ещё можно объяснить "крокодилами", то как бы со вторым? Ведь RandomForest -- самый сильный регрессор и должен, по идее, "видеть" задачу по крайней мере не хуже XG?

Ответ, очевидно, в том, что XG склонен к оверфиттингу. Если в данных есть один более-менее угадывающий участник, XG "ухватится" за него и будет практически игнорировать вклады всех прочих. RF к такому не склонен и старается учитывать вклады ото всех. "Выигрыш", который видит XG, происходит, скорее всего, от присутствия одного участника, ответы которого в значительной степени случайно совпали с правильными метками. Он попал в одну из групп и "замыл" вклады всех остальных участников.

Поэтому данный метод разделения плох. Да, он разделяет данные на две группы, но одним-единственным способом, и если это разделение по каким-то причинам окажется статистически "нетипичным", то мы эту нетипичность скушаем и можем даже не заметить.

* Кластеринг. Можно разделить данные на две группы с помощью какого-нибудь кластеризующего алгоритма. Я это даже пробовал, но тут тоже полно недостатков. Во-первых, малые данные на две группы делятся, как правило, тоже почти всегда одним и тем же способом, с точностью до нумерации групп и небольших вариаций -- то есть, возникает та же проблема репрезентативности. Во-вторых, метод неявно предполагает, что "внутренняя" структура данных, которую "видит" кластеринг -- это правильное основание для разделения. А это, фактически, повторяет метод Объединения Моделей. И даёт, кстати, почти тот же результат. Но, к сожалению, опирается на неявное предположение, что кластеризация по "топологическому" признаку имеет какое-то отношение к истинной структуре задач. А это отнюдь не факт.

* Вместо кластеринга можно подключить и полноценный ML, примерно как я исходно расписывал во второй ветви дизайна D в "Цифровом вытрезвителе". С инженерной точки зрения это прекрасно работает, метод сходится за 1-2 итерации. С практической -- плохо, потому что на малых данных ML способен "изогнуться" почти любым образом, "вписавшись" в почти любую случайную начальную расстановку меток с самыми минимальными их изменениями. Так что этот метод годится лишь для куда более крупных данных.