сколько классов принимает алгоритм глубокого обучения? - PullRequest
0 голосов
/ 08 декабря 2018

Я хочу предсказать переменную ответа, и она имеет 700 классов.

Параметры модели глубокого обучения

from h2o.estimators import deeplearning

dl_model = deeplearning.H2ODeepLearningEstimator(
                                    hidden=[200,200],
                                    epochs  = 10,
                                missing_values_handling='MeanImputation',
                                max_categorical_features=4,
                                distribution='multinomial'
                            )

# Train the model
dl_model.train(x = Content_vecs.names,
                y='tags',
               training_frame   = data_split[0],
               validation_frame = data_split[1]
               )

Orginal Response Variable -Tags: 
apps, email, mail
finance,freelancers,contractors,zen99
genomes
gogovan
brazil,china,cloudflare
hauling,service,moving
ferguson,crowdfunding,beacon
cms,naytev
y,combinator
in,store,
conversion,logic,ad,attribution

Response variable tags: 
[74]
[156, 89]
[153, 13, 133, 40]
[150]
[474, 277, 113]
[181, 117]
[15, 87, 8, 11]

Ошибка:

OSError: Работа с ключом $ 03017Сбой f00000132d4ffffffff $ _8355bcac0e9e98a86257f45c180e4898 с исключением: java.lang.UnsupportedOperationException: ошибка не может быть вычислена: слишком много классов

stacktrace: java.lang.UnsupportedOperationException: ошибка преобразования не может быть получена: ошибка не может быть вычислена(ConfusionMatrix.java:92)

Но в h2o-core / src / main / java / hex / ConfusionMatrix.javaConfusionMatrix.java написано, что он может вычислять 1000 классов.

1 Ответ

0 голосов
/ 08 декабря 2018

Когда вы говорите, что у вас есть 700 классов, вы имеете в виду, что ваша переменная ответа состоит из массивов из этих 700 уникальных чисел?Поскольку вы привели этот пример:

Response variable tags: 
[74]
[156, 89]
[153, 13, 133, 40]
[150]
[474, 277, 113]
[181, 117]
[15, 87, 8, 11]

H2O не может предсказать массивы.Каждая уникальная комбинация чисел будет считаться одним классом.Поэтому, вероятно, у вас более 700 классов, с точки зрения H2O.

Если вы посмотрите на данные о потоке (http://127.0.0.1:54321/), он скажет вам, сколько существует уникальных уровней.в тегах.(Вы также можете получить его из Python API, используя describe() в кадре или categories() в соответствующем столбце, в котором перечислены все уровни.)

Ваш следующий вопрос будет о том, чтоделать с этимЯ предлагаю задать новый вопрос, где вы объясните, что представляют собой 700 значений и массивы;это почти наверняка будет включать некоторую предварительную обработку для конкретного домена.Однако вы можете попробовать сыграть с categorical_encoding http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/categorical_encoding.html

...