VowpalWabbit неверные прогнозы. Как правильно подготовить данные для обучения?

Я пытаюсь научить VW прогнозировать цены на дома в зависимости от количества спален, ванных комнат, площади и других характеристик. Пример строки моих тренировочных данных:

68000 '51-OMAHA-CT| city=SACRAMENTO zip=95823 state=CA beds:3 baths:1 sq__ft:1167 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.478902 longitude=-121.431028
56333 '3526-HIGH-ST| city=SACRAMENTO zip=95838 state=CA beds:2 baths:1 sq__ft:836 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.631913 longitude=-121.434879
68790 '2796-BRANCH-ST| city=SACRAMENTO zip=95815 state=CA beds:2 baths:1 sq__ft:796 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.618305 longitude=-121.443839

ПРАЙС-СТРИТ | ... Всего около 500 записей. Мои тестовые данные (также около 500 записей):

'51-OMAHA-CT| city=SACRAMENTO zip=95823 state=CA beds:3 baths:1 sq__ft:1167 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.478902 longitude=-121.431028
'3526-HIGH-ST| city=SACRAMENTO zip=95838 state=CA beds:2 baths:1 sq__ft:836 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.631913 longitude=-121.434879
'2796-BRANCH-ST| city=SACRAMENTO zip=95815 state=CA beds:2 baths:1 sq__ft:796 type=Residential sale_date=Wed-May-21-00-00-00-EDT-2008 latitude=38.618305 longitude=-121.443839

Прогнозирование дает следующие значения:

4819.900391 51-OMAHA-CT
4609.826172 3526-HIGH-ST
4537.140137 2796-BRANCH-ST

Это не правильные прогнозы. Я не уверен, есть ли проблема с моими тренировочными данными? Я все еще не понимаю | char и особенности размещения.


person ArcheR    schedule 27.05.2019    source источник


Ответы (1)


Когда вы создаете функцию как city=SACRAMENTO, VW интерпретирует ее как строковую функцию с именем city=SACRAMENTO и присваивает ей неявное значение 1.0. city=SACRAMENTO хэшируется, и это формирует индекс для функции.

Когда вы создаете функцию как beds:2, VW интерпретирует ее как функцию с именем beds и значением функции 2.0. beds хэшируется и формирует индекс.

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

Использование формата __=__ кажется подходящим для названий городов, но когда вы используете тот же формат для широты и долготы, очень маловероятно, что другой пример будет использовать ту же самую точную строку широты/долготы, чтобы использовать эту функцию в прогнозе. Мне кажется, что широта/долгота должна быть функцией с плавающей запятой.

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

person jackgerrits    schedule 28.05.2019
comment
Можете ли вы использовать параметр --audit, чтобы получить представление о том, как vw видит функции? - person jackgerrits; 28.05.2019