2017-01-15 11 views
0

В контексте бинарной классификации я использую нейронную сеть с 1 скрытым слоем, используя функцию активации tanh. Вход поступает из модели word2vect и нормализуется.TensorFlow: точность двоичной классификации

Точность классификатора составляет от 49% до 54%.

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

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

Любое предложение, почему эта проблема происходит? И какие другие моменты (кроме размера ввода и скрытого размера слоя) могут повлиять на точность классификации?

Благодаря

+0

Это не лучше, чем монета. Вы должны отложить нервную сеть и лучше понять свои данные, прежде чем делать что-либо еще. Я также рекомендую попробовать логистическую регрессию. – duffymo

ответ

0

Это немного трудно догадаться, учитывая информацию, которую вы предоставляете. Являются ли этикетки сбалансированными (50% положительные, отрицательные 50%)? Таким образом, это будет означать, что ваша сеть не тренируется вообще, так как ваша производительность соответствует случайной производительности, грубо говоря. Может быть, ошибка в предварительной обработке? Или задача слишком сложная? Каков размер набора тренировок?

Я не считаю, что число нейронов является проблемой, если это разумно, то есть сотни или несколько тысяч.

В качестве альтернативы, вы можете попробовать другую функцию потерь, а именно перекрестное энтропию, которая является стандартом для нескольких классов классификации, а также может быть использована для бинарной классификации: https://www.tensorflow.org/api_docs/python/nn/classification#softmax_cross_entropy_with_logits

Надеется, что это помогает.

+0

Набор данных хорошо сбалансирован, 50% положительный и отрицательный. Обучения комплекта форма (411426, X) Обучения комплекта форма (68572, X) X есть число функции наступающей из word2vec и я стараюсь со значениями между [100,300] У меня есть 1 скрытый слой, а количество тестируемых нейронов варьировалось между [100,300] Я также тестирую с меньшими размерами/размерами нейронов: 20-20 функций и 10 нейронов на скрытом слое. Я использую также кросс-энтропию как стоимость. – fhe

+0

Я твердо верю, что есть некоторая ошибка в ярлыках или где-то еще. Учитывая, что вы используете word2vec в качестве входных данных, у вас уже есть хорошее представление. Таким образом, я предлагаю попробовать линейную модель (SVM), которая, безусловно, даст лучшую, чем случайную производительность, если задача выполнима. Для этого это поможет узнать, что это за задача? Действительно ли надеяться, что глубокая сеть может решить эту проблему? –

+0

Чтобы узнать, исходит ли проблема из моей реализации нейронной сети или входных данных, я использовал представление tf-idf с функцией to_dense(). Результат с TF-IDF и небольшим изменением параметров составляет 78% точности. – fhe

-2

Набор данных хорошо сбалансирован, на 50% положительный и отрицательный.

Обучения комплекта форма (411426, X)

Обучения комплекта форма (68572, X)

X есть число функции наступающей из word2vec и я стараюсь со значениями между [ 100300]

меня есть 1 скрытого слой, и число нейронов, которые я проверить колебались от [100,300]

я также тест с кашицей меньшими функциями/нейронов размер: 2-20 особенности и 10 нейронов на скрытом слой. Я использую также кросс-энтропию как стоимость.

+0

Не добавляйте ответы; это не должно быть диалогом. Измените исходный вопрос. – duffymo

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