Один из способов убедиться в этом - убедиться, что вы закодировали все, что вы делаете, чтобы соответствовать модели, даже «переделывая». Таким образом, когда вы запускаете процесс несколько раз, скажем, через перекрестную проверку, вы сохраняете согласованность между запусками. Это гарантирует, что все потенциальные источники вариации будут охвачены процессом перекрестной проверки.
Другая жизненно важная вещь - обеспечить репрезентативную выборку в обоих наборах данных. Если ваш набор данных не является представителем того типа данных, который вы ожидаете использовать для прогнозирования, то вы мало что можете сделать. Все моделирование основывается на предположении, что «индукция» работает - вещи, которые мы не наблюдали, ведут себя как вещи, которые мы наблюдали.
Как правило, избегайте сложных процедур подбора моделей, если (i) вы не знаете, что делаете, и (ii) вы не попробовали более простые методы и обнаружили, что они не работают, и как комплексный метод исправляет проблемы с простым методом. «Простой» и «сложный» означают «простой» или «сложный» для человека, выполняющего примерку. Причина, по которой это так важно, заключается в том, что это позволяет вам применить то, что я люблю называть «тестом нюха», к результатам. Результат выглядит правильно? Вы не можете «нюхать» результаты процедуры, которую вы не понимаете.
ПРИМЕЧАНИЕ: следующая, довольно длинная часть моего ответа основана на моем опыте, который находится в области , где возможно большое. Я почти уверен, что нижеследующее не относится к случаям илиN>>p p N≈p N<p
Когда у вас большая выборка, разница между использованием и отказом от данного наблюдения очень мала, если ваше моделирование не слишком «локально». Это связано с тем, что влияние данной точки данных обычно имеет порядок . Таким образом, в больших наборах данных остатки, которые вы получаете от «удержания» набора тестовых данных, в основном такие же, как и остатки, которые вы получаете от его использования в наборе обучающих данных. Вы можете показать это, используя обычные наименьшие квадраты. Остаток, который вы получите от исключения го наблюдения (т. Е. Какой будет ошибка набора тестов, если мы поместим наблюдение в набор тестов), составляет , где - это остаток тренировки, а1Nietesti=(1−hii)−1etrainietrainihiiявляется рычагом й точки данных. Теперь у нас есть то, что , где - количество переменных в регрессии. Теперь, если , то для любого чрезвычайно трудно быть достаточно большим, чтобы сделать заметную разницу между ошибками тестового набора и обучающего набора. Мы можем взять упрощенный пример, предположим, что (перехват и переменная), матрица проектирования - (как обучающий, так и проверочный наборы), а рычаг -i∑ihii=ppN>>phiip=21N×pX
hii=xTi(XTX)−1xi=1Ns2x(1xi)(x2¯¯¯¯¯−x¯¯¯−x¯¯¯1)(1xi)=1+x~2iN
Где , и . Наконец, является стандартизированной переменной-предиктором и измеряет, сколько стандартных отклонений от среднего. Итак, мы знаем с самого начала, что ошибка тестового набора будет намного больше, чем ошибка обучающего набора для наблюдений «на краю» обучающего набора. Но это опять-таки в основном тот репрезентативный вопрос - наблюдения «на краю» менее репрезентативны, чем наблюдения «в середине». Кроме того, это для порядка . Так что если у вас есть наблюдений, даже еслиx¯¯¯=N−1∑ixix2¯¯¯¯¯=N−1∑ix2is2x=x2¯¯¯¯¯−x¯¯¯2x~i=xi−x¯¯¯sxxi1N100x~i=5 (выброс в x-пространстве по большинству определений), это означает , и ошибка теста занижена с коэффициентом всего . Если у вас большой набор данных, скажем, , он еще меньше, , что меньше . Фактически, для наблюдений вам потребуется наблюдение для того, чтобы сделать оценку ошибки тестового набора, используя ошибку обучающего набора.hii=261001−26100=74100100001−26100001%10000x~=5025%
Таким образом, для больших наборов данных использование тестового набора не только неэффективно, но и не нужно, пока . Это относится к OLS, а также приблизительно применимо к GLM (подробности для GLM различны, но общий вывод тот же). В более чем измерениях «выбросы» определяются наблюдениями с большими показателями «основного компонента». Это можно показать, написав где - (ортогональная) матрица собственных векторов для с матрицей собственных значений . Мы получаем гдеN>>p2hii=xTiEET(XTX)−1EETxiEXTXΛhii=zTiΛ−1zi=∑pj=1z2jiΛjjzi=ETxiявляется основным компонентом оценки для .xi
Если ваш тестовый набор имеет наблюдений, вы получите матричную версию , где и - строки матрицы проекта в тестовом наборе. Итак, что касается регрессии OLS, вы уже знаете, какие ошибки были бы в «наборе тестов» для всех возможных разбиений данных на обучающие и тестовые наборы. В этом случае ( ) нет необходимости разбивать данные вообще. Вы можете сообщать об ошибках набора тестов «лучший случай» и «наихудший случай» практически любого размера, фактически не разбивая данные. Это может сэкономить много времени и ресурсов ПК.ketest{k}=(Ik−H{k})−1etrain{k}H{k}=X{k}(XTX)−1XT{k}X{k}N>>p
По сути, все это сводится к использованию штрафного термина для учета разницы между ошибками обучения и тестирования, такими как BIC или AIC. Это эффективно дает тот же результат, что и при использовании тестового набора, однако вы не обязаны выбрасывать потенциально полезную информацию. С помощью BIC вы аппроксимируете данные для модели, которая математически выглядит следующим образом:
p(D|MiI)=p(y1y2…yN|MiI)
Обратите внимание, что в этой процедуре мы не можем оценить какие-либо внутренние параметры - каждая модель должна быть полностью указана или ее внутренние параметры интегрированы. Однако мы можем сделать это похожим на перекрестную проверку (используя определенную функцию потерь), многократно используя правило продукта, а затем ведя журнал результатов:Mi
p(D|MiI)=p(y1|MiI)p(y2…yN|y1MiI)
=p(y1|MiI)p(y2|y1MiI)p(y3…yN|y1y2MiI)
=⋯=∏i=1Np(yi|y1…yi−1MiI)
⟹log[p(D|MiI)]=∑i=1Nlog[p(yi|y1…yi−1MiI)]
Это предполагает форму перекрестной проверки, но там, где обучающий набор постоянно обновляется, по одному наблюдению за раз из набора тестов - аналогично фильтру Калмана. Мы прогнозируем следующее наблюдение из тестового набора, используя текущий обучающий набор, измеряем отклонение от наблюдаемого значения, используя условную логарифмическую вероятность, а затем обновляем обучающий набор, чтобы включить новое наблюдение. Но обратите внимание, что эта процедура полностью переваривает все доступные данные, и в то же время гарантирует, что каждое наблюдение проверяется как случай «вне выборки». Он также инвариантен, поскольку не имеет значения, что вы называете «наблюдением 1» или «наблюдением 10»; результат один и тот же (вычисления могут быть проще для некоторых перестановок, чем для других). Функция потерь также является «адаптивной» в том смысле, что если мы определим L i iLi=log[p(yi|y1…yi−1MiI)] , тогда резкость зависит от , потому что функция потерь постоянно обновляется новыми данными.Lii
Я бы предположил, что оценка прогностических моделей таким способом будет работать достаточно хорошо.