Прогноз должен возвращать ноль, если в одном столбце чисел c отсутствуют данные о поездах - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь предсказать, продан товар или нет.

У меня есть классификатор DNNLinearCombined с описанием, категорией, размером, ценой и т. Д. c. И метка 0 для не проданных и 1 для проданных.

    sold    description category_id size_id gender  price   host_id lat long    year    month
0   1   [dünne, jacke, gepunktet, , , , , , ]   9   25  f   3.5 1   48.21534    11.29949    2019    3
1   1   [kleid, pudel, dunkelblau, gepunktet, , , , , ] 9   25  f   4.0 1   48.21534    11.29949    2019    3
2   0   [kleid, rosa, hum, hund, katze, , , , ] 9   24  f   4.0 1   48.21534    11.29949    2019    3
3   1   [kleid, hum, blau, elsa, und, anna, , , ]   9   24  f   4.0 1   48.21534    11.29949    2019    3
4   0   [kleid, blue, seven, lachsfarben, , , , , ] 9   23  f   4.5 1   48.21534    11.29949    2019    3
text_column = tf.feature_column.categorical_column_with_vocabulary_list(key='description',                                                     vocabulary_list=list(word_index))
text_embedding = tf.feature_column.embedding_column(text_column, dimension=50, combiner='sqrtn')

CATEGORICAL_COLUMNS = ['category_id', 'size_id', 'host_id']
NUMERIC_COLUMNS = ['price','lat', 'long', 'year', 'month']
feature_columns = []

for feature_name in CATEGORICAL_COLUMNS:
  vocabulary = dftrain[feature_name].unique()
  feature_columns.append(feature_column.categorical_column_with_vocabulary_list(feature_name, vocabulary))

for feature_name in NUMERIC_COLUMNS:
  feature_columns.append(feature_column.numeric_column(feature_name, dtype=tf.float32))

est = tf.estimator.DNNLinearCombinedClassifier(linear_feature_columns=feature_columns, dnn_hidden_units=[100],dnn_feature_columns=[text_embedding],
    n_classes=2,
    dnn_optimizer=tf.keras.optimizers.Adagrad(lr=0.003))

Проблема в том, что цена в столбце цифр c оказывает очень меньшее влияние на прогноз, поскольку некоторые товары с одинаковой ценой продаются а некоторые нет. Но в целом цена должна быть в том же регионе, что и проданные товары той же категории, размера и аналогичного описания. Например, если цена товара составляет 2 евро, прогноз составляет 39,6%, но если я устанавливаю цену для того же товара в 100 евро, прогноз составляет 39,4%. Но это не правильно, оно должно быть ниже 1%. Ни одна другая статья в данных обучения не имела такой высокой цены.

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

Спасибо

1 Ответ

0 голосов
/ 03 мая 2020

Некоторые идеи здесь:

  1. Вы должны рассматривать "год" и "месяц" как категориальные признаки, а не цифры c. Это категорические порядковые признаки, а не скаляры.

  2. Почему бы вам не попробовать использовать DNNLinearCombined Regressor? Он будет прогнозировать значение от 0 до 1, и вы должны найти правильный предел, чтобы решить, является ли прогноз 0 или 1.

  3. Если номер месяца имеет значение, вы можете попробуйте использовать временной ряд , а не регрессию. Я предлагаю вам объединить функции «год» и «месяц» в одну функцию типа date или integer (установите уникальное целочисленное значение для каждой даты).

  4. Если вы все еще хотите использовать классификатор, будьте осторожны, чтобы уравновесить данные тренировок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...