2

В R, я пытаюсь обучить нейронную сеть на нескольких файлах. Я выполнил мультиномическую функцию на одном наборе данных, но я не могу найти, как обучать мою модель другим набором данных.В R, поезд/модель обновления с несколькими наборами данных

Поэтому я хочу применить модель от предыдущего вызова к новым данным без переоценки модели.

Итак, сначала вы строите модель, как в ответе Сэма Томаса.

#load libraries 
library(nnet) 
library(MASS) 

#Define data 
example(birthwt) 

# Define training and test data 
set.seed(321) 
index <- sample(seq_len(nrow(bwt)), 130) 
bwt_train <- bwt[index, ] 
bwt_test <- bwt[-index, ] 

# Build model 
bwt.mu <- multinom(low ~ ., data=bwt_train) 

Тогда у меня есть другой подобный набор данных. Я хочу обучить/обновить ранее созданную модель. Поэтому я хочу обновить модель новыми данными, чтобы улучшить мою модель.

# New data set (for example resampled bwt) 
bwt2=sapply(bwt, sample) 

head(bwt2,3) 
    low age lwt race smoke ptd ht ui ftv 
[1,] 1 31 115 3  1 1 0 0 2 
[2,] 1 20 95 1  0 1 0 0 3 
[3,] 2 25 95 2  0 1 0 1 1 

# Define training and test data with new dataset 
set.seed(321) 
index <- sample(seq_len(nrow(bwt2)), 130) 
bwt2_train <- bwt2[index, ] 
bwt2_test <- bwt2[-index, ] 

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

Спасибо заранее, Адам

ответ

1

Заимствованные из примера в ?nnet::multinom

library(nnet) 
library(MASS) 
example(birthwt) 

head(bwt, 2) 
    low age lwt race smoke ptd ht ui ftv 
1 0 19 182 black FALSE FALSE FALSE TRUE 0 
2 0 33 155 other FALSE FALSE FALSE FALSE 2+ 

set.seed(321) 
index <- sample(seq_len(nrow(bwt)), 130) 
bwt_train <- bwt[index, ] 
bwt_test <- bwt[-index, ] 

bwt.mu <- multinom(low ~ ., bwt_train) 
(pred <- predict(bwt.mu, newdata=bwt_test)) 
[1] 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 
[39] 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 
Levels: 0 1 

Или, если вы хотите вероятности

(pred <- predict(bwt.mu, newdata=bwt_test, type="probs")) 
     1   5   6   16   19   23   24 
0.43672841 0.65881933 0.21958026 0.39061949 0.51970665 0.01627479 0.17210620 
     26   27   28   29   30   37   40 
0.06133368 0.31568117 0.05665126 0.26507476 0.37419673 0.18475433 0.14946268 
     44   46   47   51   56   58   60 
0.09670367 0.72178459 0.06541529 0.37448908 0.31883809 0.09532218 0.27515734 
     61   64   67   69   72   74   76 
0.27515734 0.09456443 0.16829037 0.62285841 0.12026718 0.47417711 0.09603950 
     78   87   94   99  100  106  114 
0.34588019 0.30327432 0.87688323 0.21177276 0.06576210 0.19741587 0.22418653 
     115  117  118  120  125  126  130 
0.14592195 0.19340994 0.14874536 0.30176632 0.09513698 0.08334515 0.03886775 
     133  134  139  140  145  147  148 
0.41216817 0.85046516 0.46344537 0.34219775 0.33673304 0.26894886 0.43778705 
     152  163  164  165  168  174  180 
0.19044485 0.27800125 0.17865143 0.86783149 0.25969355 0.60623964 0.34931986 
     182  183  185 
0.22944657 0.08066599 0.22863967 
+0

Привет Сэм спасибо за ваш ответ. Вы объяснили, как мультином работает над обычным набором данных с одним учебным набором данных. Мой вопрос - еще один шаг. Итак, теперь у меня есть другой набор учебных материалов для оптимизации моего классификатора. Итак, как мне улучшить мою более раннюю модель сборки. – AdamA3

+0

@ AdamA3. Спасибо за комментарий. Это может помочь уточнить, что вы подразумеваете под улучшением модели; также полезно воспроизводимый пример. Если у вас есть определенное представление о том, что вы хотите сделать, это подходит для stackoverflow. Если у вас есть вопросы более статистического характера, то перекрестный контроль будет более уместным. – Whitebeard

Смежные вопросы