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 и особенности размещения.

Как создать простое погодное приложение на Python с API OpenWeatherMap
Как создать простое погодное приложение на Python с API OpenWeatherMap
Этот учебник проведет вас через процесс создания простого погодного приложения с помощью Python и OpenWeatherMap API.
Почему Python - идеальный выбор для проекта AI и ML
Почему Python - идеальный выбор для проекта AI и ML
Блог, которым поделился Harikrishna Kundariya в нашем сообществе Developer Nation Community.
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
1
0
121
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

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

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

jackgerrits 28.05.2019 19:58

Другие вопросы по теме