Неравномерные распределения

До сих пор мы предполагали, что если взять среднее или взвешенное среднее данных, то мы получим приемлемую оценку конечной цены. Часто так оно и есть, но бывают ситуации, когда на результат влияет какая-то неизмеренная переменная. Представьте себе, что покупатели вина делятся на две группы: покупающие в специализированных винных магазинах и в магазинах эконом-класса, где дают скидку 50%. К сожалению, эта информация никак не отражена в наборе данных. Функция createhiddendataset создает набор данных для моделирования описанных свойств. Переменные, введенные только с целью усложнения примера, опущены, мы возвращаемся к исходным. Добавьте эту функцию в файл numpredict.py: def wineset3( ): rows=wineset1( ) for row in rows: if random( )<0.5: # Вино куплено в магазине эконом-класса row[‘result’]*=0.6 return rows

Посмотрим, что произойдет, если запросить оценку цены нового образца с помощью алгоритма kNN или его взвешенной версии. Поскольку набор данных не содержит информации о том, где покупатель приобретает вино, то алгоритм не может принять ее во внимание, поэтому ищет ближайших соседей вне зависимости от места покупки. В результате усреднение производится по обеим группам и, скорее всего, мы получим цену с 25-процентной скидкой. Это можно проверить в интерактивном сеансе:

>>> reload(numpredict)

<module ‘numpredict’ from ‘numpredict.py’>

>>> data=numpredict.wineset3( ) >>> numpredict.wineprice(99.0,20.0)

106.07142857142857

>>> numpredict.weightedknn(data,[99.0,20.0])

83.475441632209339

>>> numpredict.crossvalidate(numpredict.weightedknn,data)

599.51654107008562

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

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100