Что является более подходящим способом создания выносного набора: удалить некоторые предметы или удалить некоторые наблюдения от каждого предмета?


11

У меня есть набор данных с 26 функциями и 31000 строк. Это набор данных из 38 предметов. Это для биометрической системы. Поэтому я хочу иметь возможность определять предметы.

Чтобы иметь набор для тестирования, я знаю, что должен удалить некоторые значения.

Так что лучше делать и почему?

  1. (а) оставить 30 предметов в качестве учебного комплекта и удалить 8 предметов в качестве испытательного комплекта

  2. (б) оставить 38 предметов, но удалить несколько рядов каждого из них. Итак, в конце я получу набор для обучения: 24800 рядов по 38 предметов И набор для тестирования: 6200 рядов по 38 предметов


1
Если вы хотите идентифицировать предметы, как вы можете удалить «целые» предметы для тестового набора? Модель, обученная по 30 предметам, сможет определить только эти 30 предметов, а не 8 предметов, которые она никогда не видела. Ваше разъяснение о «биометрической системе» может сделать большинство существующих ответов неприменимыми.
говорит амеба: восстанови монику

1
Было бы полезно уточнить: (1) точную цель, какую переменную результата вы пытаетесь предсказать (2) какие данные у вас есть и, возможно, (3) какой подход вы используете.
Мэтью Ганн

Как только вы обучите систему, как она будет развернута? Является ли целью использовать его на людях, не входящих в тренировочный комплекс? Будут ли новые данные из тех же 38 предметов? Я пытаюсь понять, как предполагается использовать систему и отвечаете ли вы в случае (1) или случае (2) ответа @ AmiTavory.
Мэтью Ганн

@amoeba Я не очень опытный :( Я задал вопрос, потому что рекомендуется разделить данные (обучение, проверка и тестирование). Поэтому необходимо либо удалить некоторые предметы, либо некоторые наблюдения по каждому из них, либо использовать набор данных, доступный в Интернете. 1) Я хочу быть в состоянии идентифицировать предметы. Кому принадлежат черты. 2) Я использую ЭЭГ (поэтому временные ряды). 3) Я использую стратифицированную складку. Но это потому, что я получил более высокую точность, чем с kfold. Я знал только о k-кратном, многослойном и безразличном. Как я всегда думал, это должно было компенсировать дисбаланс в данных. Но я открыт для предложений.
Aizzaac

@ MatthewGunn Я думаю, что было бы невозможно использовать его с людьми, которых нет в наборе данных. Это было бы очень сложно, но очень интересно, если бы было достигнуто. Так что я бы сказал, случай 1.
Aizzaac

Ответы:


9

Я думаю, что ответ Мэтью Ганна верен, но мне кажется, что «рекордное» резюме может охватывать две разные концепции:

  1. Записи случайным образом разбиваются на складки, независимо от темы или времени.

  2. Записи делятся на временные сгибы, при этом для обучения не используется сгиб, содержащий данные после начала контрольного сгиба.

В первом случае любые временные ряды ваших данных подвергаются риску, поскольку ваш обучающий набор может включать данные как до, так и после вашего тестового набора. Принцип обучения / тестирования заключается в том, что данные обучения представляют собой данные, известные к настоящему времени, а данные теста представляют собой еще невидимые данные (возможно, буквально из будущего).

Возможно, автокорреляция временных рядов ставит под угрозу вариант № 2. Возможно, временной элемент модели не очень важен, и поэтому «прошлые» и «будущие» наблюдения, вероятно, будут одинаковыми. В этих случаях ни # 1, ни # 2 - это путь.

Если есть только сезонность, а не тренды, кажется, что можно включать «будущее» в обучение для некоторых предметов, чтобы предсказывать новые предметы (на которых будет влиять та же сезонность). Если есть тенденции, обучение будущему должно научиться чему-то новому, чего вы действительно не знали бы при использовании модели в производстве.

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


1
+1 Это очень важный момент: если есть структура временных рядов, вы не должны использовать будущее, чтобы предсказывать прошлое! Это распространенная и опасная ошибка в финансах, использующая информацию, недоступную в момент времени (потому что она неизвестна до будущего), для прогнозирования доходов, дефолтов и т. Д. В момент времени . Со сложными проектами и огромным количеством данных можно очень легко совершать ошибки и позволить вашему алгоритму обучения эффективно достигать пика в будущее, достигая результатов, невозможных в реальности. тtt
Мэтью Ганн

1
Я бы сказал, что приложение решает, что такое подходящее разбиение. Например, даже с временными рядами, может быть задача предсказать зависимую переменную для последующих измерений неизвестных объектов, что будет означать, что расщепление должно быть сделано как в зависимости от времени, так и во времени.
cbeleites недоволен SX

3
@cbeleites: Согласен. Это то, что я делал в недавнем проекте: разбить данные на обучаемых и испытуемых и использовать только данные за определенный период времени для обучения и данные за определенный период для тестирования, поэтому мы тестировали предметы, которые мы никогда не будем видел, в течение периода времени мы еще не видели. Вы хотите сложить колоду против себя - не выходя за борт - если вы действительно хотите знать, насколько хорошо ваша модель будет работать на практике.
Уэйн

16

Критическое различие , хотите ли вы:

  1. [Наиболее распространенный случай]: Постройте оценку эффективности по новым предметам (взятым из той же совокупности, что и ваши данные).
  2. Составьте оценку эффективности по новым наблюдениям из тех же предметов, что и в вашей выборке.

Гораздо более распространенный случай - это номер дела (1). Например, насколько хорошо вы предсказываете сердечные приступы для человека, который входит в отделение неотложной помощи? И если вы в случае (1), вы почти наверняка должны сделать (а) перекрестную проверку по предметам, а не (б) перекрестную проверку по записям. Проведение валидации по записям в случае (1) может привести к необоснованно высоким, поддельным оценкам эффективности по новым предметам.

Я не совсем понимаю, что вы пытаетесь сделать (и, возможно, это самообучение, поэтому вопрос не совсем реалистичен). Я не знаю, в каком случае вы находитесь. Если вы находитесь в гораздо менее распространенном случае (2), проверка с точки зрения записи может быть в порядке.

Общая тема в статистике - тщательно продумать, что является независимым и что взаимосвязано. Вообще говоря, независимое наблюдение имеет тенденцию быть другим предметом. Если вы хотите предсказать результаты по новым предметам, вы должны проверить предметы, на которых вы не тренировались!

Почему предметная перекрестная проверка, а не запись?

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

Например, эта недавняя статья называет перекрестную проверку по записям «Машинное обучение вуду».

Что делать с таким небольшим количеством предметов, хотя ...

Возможно, некоторые комментаторы, более опытные в перекрестной проверке, чем я, могли бы принять участие, но для меня это выглядит как возможный кандидат для (иначе пропустить одну перекрестную проверку)?k=n

Чтобы максимизировать данные для обучения, вы можете оставить один предмет для перекрестной проверки. Каждую итерацию тестируйте на разных предметах и ​​тренируйтесь на всех остальных.

Если все предметы очень разные, у вас может быть близко к и вы можете захотеть включить в тренировочный набор как можно больше независимых предметов.n=38


Я знаю, что набор данных должен быть разделен на 3: обучение, проверка и тестирование. В перекрестной валидации используются «обучение и валидация». Задержка - это «тестирование». Итак, вы предлагаете: для обучения и проверки использовать 37 предметов и тестирование по 1 предмету? И что я могу сделать любой тип перекрестной проверки: k-кратный, стратифицированный и т. Д.?
Aizzaac

1
ОП сделал правку, сказав, что «Это для биометрической системы. Поэтому я хочу иметь возможность идентифицировать предметы». Если я правильно понимаю, что это значит, это означает, что имеет смысл только резюме с учетом записи, поскольку цель состоит в том, чтобы предсказать идентификатор субъекта на основе выборки.
говорит амеба: восстанови монику

@amoeba Только если новые данные поступят от тех же 38 субъектов. Например. если система должна сообщать, совпадают ли отпечатки пальцев или нет, и она будет развернута у входной двери моего дома (то есть должны идентифицировать незнакомцев как незнакомцев), обучение и тестирование на тех же предметах будет проблематичным (вам хотелось бы знать, как часто он дает доступ людям, которых он никогда не видел, никогда не тренировался). Я согласен, хотя, что «Это для биометрической системы» вызывает вопросы ...
Мэтью Ганн

3

Это действительно зависит от того, как вы представляете настройку, которую хотите эмулировать с разделением поезд / тест. Чтобы конкретизировать, скажем, в каждом ряду описывается качество сна субъекта за одну ночь.

  1. Вполне возможно, что в будущем каждый субъект сначала придет в лабораторию сна и обеспечит вас качеством сна на несколько ночей. После этого вам нужно будет предсказать качество сна будущих ночей для этих субъектов . В этом случае вы бы использовали ваш вариант б). В sklearn, вы могли бы использоватьsklearn.model_selection.StratifiedShuffleSplit

  2. Вполне возможно, что в будущем несколько испытуемых сначала придут в лабораторию сна и обеспечат вас качеством сна на несколько ночей. После этого вы должны будете предсказать качество сна будущих ночей для других субъектов . В этом случае вы бы использовали ваш вариант а). В sklearn, вы могли бы использоватьsklearn.cross_validation.LeavePLabelOut


1
Реалистично, однако, вопрос почти наверняка ваш случай (2), и вариант (а), то есть перекрестная проверка предмета, является то, что уместно.
Мэтью Ганн

1
@ MatthewGunn Ты прав. Случай 2 гораздо более распространен. Я должен сказать, что столкнулся с реальными случаями, когда 1 был правильным выбором.
Ами Тавори

1
Интересный. Я мог видеть (1) подходящим для предсказания новых наблюдений для некоторой большой, установленной клиентской базы. Дело принято. Возможно, я реагирую так сильно, потому что недавно я прочитал эту статью о широко распространенном злоупотреблении перекрестной проверкой на основе записей в медицинской области.
Мэтью Ганн

Что вы думаете об этом: я использую 38 предметов с любым типом перекрестной проверки; и чтобы проверить, может ли моя модель использоваться с другим предметом; Я использую онлайн набор данных? Я думаю, что идея ограниченного набора состоит в том, чтобы иметь «новый» набор данных для тестирования модели.
Aizzaac

3

Чтобы принять участие, я предполагаю, что приложение должно предсказывать неизвестные предметы. Это означает (независимо от того, есть ли у вас временные ряды или по сути неупорядоченные повторные измерения), что необходимо выполнить разделение, чтобы проверить неизвестные объекты => разделение a)

Учитывая, что у вас есть только 38 предметов, вы должны подумать о проверке повторной выборки. Из моего опыта работы с такими же небольшими размерами выборки (хотя и с большим количеством функций), вот несколько рекомендаций в двух словах:

  • Пойдите для предметной-вне-начальной загрузки или повторной перекрестной проверки. Они позволяют оценить стабильность ваших моделей, что имеет решающее значение при небольших размерах выборки. Результаты могут даже использоваться для агрегированной модели в случае, если нестабильность является проблемой.

  • Вы не делать несмываемый одну тему-аут. Это не позволяет ни измерить стабильность модели, ни уменьшить ее. Кроме того, существуют ситуации, когда он подвержен большому пессимистическому смещению из-за небольшого размера выборки (в отличие от ожидаемого минимального пессимистического смещения).

  • Если вы используете типичные показатели качества, такие как точность, чувствительность, специфичность и т. Д., И задача состоит в том, чтобы правильно классифицировать объекты: имейте в виду, что ключевой проблемой является измерение производительности, поскольку неопределенность результатов теста зависит от абсолютного числа. тестовых случаев. Например, наблюдение 17 правильных прогнозов из 17 действительно положительных субъектов соответствует 95% доверительному интервалу для чувствительности в диапазоне от около 80% до 100%.
    Другими словами, вы не сможете выполнять оптимизацию моделей на основе данных на этой основе.

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

  • Тот же самый расчет для биномиального доверительного интервала для предложенных 5 (3) испытуемых / оптимизирующих / проверяющих субъектов дает 95% Ки для всех правильных диапазонов вплоть до 50% (30%), поэтому на основе идеальных результатов теста ваш доверительный интервал все равно будет включать 50 / 50 гаданий!

Некоторые статьи, которые мы написали на эту тему:

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.