Ответ 1
Возможно, этот ответ может быть полезен, вы можете также взглянуть на это, где вы можете прочитать:
Вероятно, проблема связана с диапазоном данных оценки. Там верхний предел для диапазона оценки, потому что обучение становится дорогим, если диапазон между наименьшим и самым большим рейтингом слишком велик.
[...]
Одним из вариантов было бы масштабирование рейтингов до более узкого диапазона.
В соответствии с этим MSDN, обратите внимание, что вы не можете иметь промежуток между знаками min и max выше 100
.
Поэтому вы должны сделать предварительную обработку данных столбцов файла csv (userid, action, datetime и т.д.), Чтобы сохранить все данные столбцов в диапазоне [0-99]
.
См. Ниже реализацию Python (чтобы разделить логику):
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
big_gap_arr = [-250,-2350,850,-120,-1235,3212,1,5,65,48,265,1204,65,23,45,895,5000,3,325,3244,5482] #data with big gap
abs_min = abs(min(big_gap_arr)) #get the absolute minimal value
max_diff= ( max(big_gap_arr) + abs_min ) #get the maximal diff
specific_range_arr=[]
for each_value in big_gap_arr:
new_value = ( 99/1. * float( abs_min + each_value) / max_diff ) #get a corresponding value in the [0,99] range
specific_range_arr.append(new_value)
print specific_range_arr #post computed data => all in range [0,99]
Что дает вам:
[26.54494382022472, 0.0, 40.449438202247194, 28.18820224719101, 14.094101123595506, 70.3061797752809, 29.71769662921348, 29.76825842696629, 30.526685393258425, 30.31179775280899, 33.05477528089887, 44.924157303370784, 30.526685393258425, 29.995786516853933, 30.27387640449438, 41.01825842696629, 92.90730337078652, 29.742977528089888, 33.813202247191015, 70.71067415730337, 99.0]
Обратите внимание, что все данные теперь находятся в диапазоне [0,99]
После этого процесса:
-
Идентификатор пользователя мог бы быть float вместо целого
-
Действие - целое число (если вы получили менее 100 действий) или float (если более 100 действий)
-
Datetime будет разделяться на два целых числа (или одно целое и одно поплавок), см. Ниже:
Что касается:
(A) способ использования даты/времени в обучении
Вы можете разделить ваше время на два столбца, например:
-
один столбец для буднего дня:
- 0: воскресенье
- 1: понедельник
- 2: вторник
- [...]
- 6: суббота
-
один столбец за время дня:
- 0: Между 00:00 и 00:15
- 1: Между 00:15 и 00:30
- 2: Между 00:30 и 00:40
- [...]
- 95: Между 23:45 и 00:00
Если вам нужна улучшенная гранулярность (здесь это 15-минутное окно), вы также можете использовать число с плавающей точкой для столбца времени.