Представьте себе такой сценарий: вы опаздываете на вечеринку. Вы быстро бежите в магазин за бутылкой вина, где натыкаетесь на это:

Вы начинаете паниковать. Вы не узнаете ни один из ярлыков. Вы понятия не имеете, что получить. Вы видите цены, но реалистичны ли эти цены? Откуда ты вообще знаешь? Наступает паралич анализа, и вы, наконец, берете первую вещь с полки.

Знакомая ситуация для вас? Это для меня! Для второго проекта моего учебного курса по науке о данных нам сказали найти данные в Интернете и построить модель линейной регрессии, чтобы попытаться что-то предсказать. Как человек, который любит часто ездить в винные страны, я решил, что прогнозирование цены вина на основе характеристик вина было бы идеальной темой.

Я нашел отличный веб-сайт по продаже вин, где каждое вино, которое они должны продать, имеет свою собственную страницу, которая была настроена идентично любой другой странице, поэтому я могла легко получить цену, алкоголь по объему (ABV), сорт, происхождение и год выпуска. 10 000 вин! (Это много страниц, чтобы получить данные.) У них также были другие характеристики вина, включая символы, указывающие, было ли вино зеленым (выращенным с использованием органических, устойчивых или биодинамических методов), коллекционным (состарится и вырастет в цене), имеет ли завинчивающейся крышкой или из бутика винодельни. Я собрал все это в надежде, что это будет полезно для моей модели линейной регрессии. Данные не были идеальными, и, к сожалению, половина точек данных отсутствовала ABV, поэтому мне пришлось бы их не использовать! Кроме того, были некоторые регионы с очень небольшим количеством вин, поэтому мне пришлось бросить каждый регион, в котором количество вин составляет менее 1% от общих данных, в регион, который я удобно обозначил как «другое».

Очевидно, что «умная» (простая) вещь — это модель «кухонной раковины», когда вы просто бросаете свои данные в модель и смотрите, что происходит. И, к моему большому удивлению, мне удалось получить скорректированное значение R-квадрата 0,52. (Знаете ли вы о R-квадрате? Это мера того, насколько хорошо ваши прогнозы относительно ваших данных соответствуют реальным ответам из ваших данных. Это сравнимо с определением того, какой процент дисперсии ваших прогнозов может быть объяснен вашей моделью, поэтому в в этом случае около 52%. Идеальный предсказатель будет иметь R-квадрат 1, когда все предсказывается идеально, но это обычно несбыточная мечта в мире линейной регрессии.)

Одна интересная вещь, которую я обнаружил из этого первого метода, заключается в том, что некоторые регионы, похоже, не вносят большого вклада в модель. Однако, если бы я попытался объединить их в категорию «другое», мои прогнозы ухудшились бы! Это нехорошо, поэтому я определенно чувствовал, что должен оставить это в покое. Тем не менее, категория «Зеленый» также не влияла, и когда я ее исключил, это не повлияло на модель. Поэтому, если вы являетесь поклонником этого органического, устойчивого или биодинамического вина, вы можете чувствовать себя хорошо, зная, что это вряд ли будет фактором, влияющим на стоимость вина.

Конечно, я чувствовал, что могу добиться большего, чем 0,52! Вернуться к доске для рисования. После тщательного обдумывания я подумал, что, возможно, если избавиться от регионов плохо для модели, возможно, добавление некоторых из них может улучшить ее! Регион «Калифорния» составлял около 2/5 моих данных, поэтому я решил разделить его на более мелкие категории. Я смог включить в свою модель регионы «Долина Напа», «Округ Сонома» и «Центральное побережье», а все остальные регионы Калифорнии просто попали в «Калифорнию». Повторный запуск моей модели дал мне R-квадрат 0,55. Немного лучше, но могу ли я сделать больше?

Вы, возможно, помните, что я сказал, что у меня отсутствует ABV более чем в половине моих точек данных. Это около 5000 пропущенных значений. Было бы неплохо, если бы я мог как-то использовать эти данные в своей модели? Но как я мог это сделать? После долгих размышлений я понял, что у меня есть крепость некоторых сортов, которые я использовал. Я мог бы создать распределение Гаусса вокруг среднего значения крепости каждого сорта и взять из этого распределения случайные значения крепости, чтобы заполнить мои пустые значения. Это позволило бы мне использовать в своей модели более 10 000 вин, которые я кропотливо собрал с веб-сайта.

Один финальный заезд. Мой результат: 0,64. Это практически на 0,10 единицы больше, чем раньше. Учитывая, что сейчас я использую практически все (кроме бесполезного «зеленого» ввода), это может быть лучшее, что я могу сделать с моделью, которая у меня есть. Возможно, модели линейной регрессии (по крайней мере, обычные методы наименьших квадратов) — не лучшие модели для использования с моими данными. Возможно, мне придется изучить лучшие модели, чтобы увидеть, смогу ли я предсказывать лучше.

Тем не менее, я все еще думаю, что это разумное место для начала. В следующий раз, когда я опоздаю в магазин, я могу потратить кучу времени на сбор данных о бутылках, которые меня интересуют, прогнать их по моей модели и попытаться определить, стоит ли бутылка своей цены. К сожалению, это ничего не скажет мне о вкусе, потому что это слишком субъективно, но, по крайней мере, я буду знать, не переплачиваю ли я за эту бутылку вина. Потому что, когда я опаздываю, я не собираюсь просто бежать, брать что-то в соответствующем ценовом диапазоне и платить за это. Нет, не я!