Прежде всего, добро пожаловать в SO.
Трудно понять, что именно вас интересует, ваш вопрос очень широк.
Если вам нужны данные по статистике, я бы посоветовал вам задать более четкие вопросы в разделе Cross Validated. Вопросы и ответы для тех, кто интересуется статистикой, машинным обучением, анализом данных, интеллектуальным анализом данных и визуализацией данных.
Проблема, которую я обнаружил, заключается в том, что в разных итерациях стратифицированного набора данных я получаю значительно разные результаты (отчасти это может быть связано с относительно небольшой выборкой данных M = 1000).
Я предполагаю, что вы имеете в виду разные итерации вашей модели. Это зависит от того, насколько велики ваши различные группы. Например. если вы пытаетесь разделить набор данных, состоящий из 1000 образцов, на группы по 10 образцов, ваша модель, скорее всего, может быть нестабильной и, следовательно, давать разные результаты на каждой итерации. Это также может быть связано с тем, что ваша модель зависит от некоторой случайности, и чем меньше ваши данные (и чем больше групп), тем больше будет большая вариация. см. здесь или здесь для получения дополнительной информации о перекрестная проверка, стабильность и агрегация начальной загрузки.
- Создайте выборку стратифицированных данных
Как сгенерировать: пакет dplyr
отлично группирует данные в зависимости от разных переменных. Вы также можете использовать функцию split
из пакета base
. Дополнительную информацию см. здесь. Вы также можете использовать встроенные методы из пакета caret
, здесь.
Как узнать, как его разделить: это очень сильно зависит от вашего вопроса, на который вы хотите ответить, скорее всего, вы хотели бы выровнять некоторые переменные, например. пол и возраст для создания модели прогнозирования заболевания. Подробнее см. здесь информация.
В случае наличия, например. дублированные наблюдения, и вы хотите создать уникальные подмножества с различными комбинациями повторов с его уникальными измерениями, которые вам пришлось бы использовать другими методами. Если реплики имеют общий идентификатор, здесь sample_names
. Вы можете сделать что-то подобное, чтобы выбрать все образцы, но с разными комбинациями повторов:
tg <- data.frame(sample_names = rep(1:5,each=2))
set.seed(10)
tg$values<-rnorm(10)
partition <- lapply(1:100, function(z) {
set.seed(z)
sapply(unique(tg$sample_names), function(x) {
which(x == tg$sample_names)[sample(1:2, 1)]
})
})
#the first partition of your data to train a model.
tg[partition[[1]],]
- Создайте модель машинного обучения
Если вы хотите использовать caret
, вы можете перейти на веб-страницу каретки. И посмотреть все доступные модели. В зависимости от вашего исследовательского вопроса и/или данных вы хотели бы использовать разные типы моделей. Поэтому я бы порекомендовал вам пройти несколько онлайн-курсов по машинному обучению, например курс Стэнфордского университета, проводимый Эндрю Нг (я взял его сам), чтобы лучше познакомиться с различными основными алгоритмами. Если вы знакомы с алгоритмами, просто найдите доступные модели.
- Повторите 1000 раз и возьмите средний результат модели.
Вы можете повторить свою модель 1000 раз с разными исходными значениями (см. set.seed
) и разными методами обучения, например. перекрестная проверка или начальная агрегация. В пакете caret
очень много разных параметров тренировки:
Функция trainControl
генерирует параметры, которые дополнительно управляют созданием моделей, с возможными значениями:
метод: метод повторной выборки: "boot", "cv", "LOOCV", "LGOCV", "repeatedcv", "timeslice", "none" и "oob"
Дополнительную информацию о методах см. здесь.
person
nadizan
schedule
20.02.2018
The problem I am finding is that in different iterations of the stratified data set I get significantly different results
? - person nadizan   schedule 20.02.2018