Классификация или регрессия для прогнозирования - PullRequest
0 голосов
/ 04 марта 2020

Я хочу обучить нейронную сеть прогнозировать классы / числа из ввода, которое также является числом; таким образом, отображение - число-> число (вход-> выход).

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

в качестве примера первые строки данных выглядят так:

, поскольку моя цель варьируется от 0 до 14, мой первый подход состоял в том, чтобы рассматривать эту проблему как проблему классификации, где я выбираю размер выходного слоя для быть размером = 15.

вот моя модель NN

from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten, Activation, Dropout, LSTM, Conv1D



model.add(Flatten())
model.add(Dense(8, activation='relu'))
model.add(Dense(15, activation='softmax'))
model.add(Activation('softmax'))



model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

model.summary()

history = model.fit(X_train, y_train, epochs=100, batch_size=128)

, которая всегда предсказывает одни и те же значения классификации:

точность сходится через несколько эпох и не изменяется больше примерно на 20%.

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

спасибо

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Как правило, числа (или любые цифры) используются для регрессии, а метки (любые не числа) используются для классификации.

Помогает ли это уточнить?

https://medium.com/quick-code/regression-versus-classification-machine-learning-whats-the-difference-345c56dd15f7

Данные регрессии:

enter image description here

Данные классификации:

enter image description here

Посмотрите на типы данных как в примере регрессии, так и в примере классификации. Отправьте ответ, если у вас есть дополнительные вопросы.

1 голос
/ 04 марта 2020

Поскольку вы уже применили 'softmax' в model.add(Dense(15, activation='softmax')), поэтому нет необходимости применять его снова model.add(Activation('softmax')).

Удалите его и попробуйте.

...