Анализ и прогнозирование цен на рынке недвижимости Москвы

Применение методов машинного обучения с целью моделирования состояния рынка недвижимости Москвы. Изучение теории распознавания образов и теории вычислительного обучения в искусственном интеллекте. Проектирование и программирование явных алгоритмов.

Рубрика Программирование, компьютеры и кибернетика
Вид диссертация
Язык русский
Дата добавления 02.09.2018
Размер файла 5,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Правительство Российской Федерации

Федеральное государственное автономное образовательное учреждение

высшего образования

«Национальный исследовательский университет -

Высшая школа экономики»

Факультет бизнеса и менеджмента

МАГИСТЕРСКАЯ ДИССЕРТАЦИЯ

по направлению подготовки «Бизнес - информатика»

образовательная программа «Бизнес-информатика»

АНАЛИЗ И ПРОГНОЗИРОВАНИЕ ЦЕН НА РЫНКЕ НЕДВИЖИМОСТИ МОСКВЫ

Кузьминых Андрей Андреевич

Рецензент: Научный руководитель:

Профессор, д.т.н. Доцент, к.ф-м.н.

Кирсанов Александр Петрович Белоусов Федор Анатольевич

Москва 2018

Аннотация

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

Введение

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

Актуальность исследования вытекает из необходимости формализации существующих критериев оценки стоимости продаваемых объектов недвижимости, т.к. часто на практике нет четко обоснованных критериев и моделей для её определения. Преобладает способ оценивания цены предложения квартиры, имеющий основой субъективные критерии, которые могут не совпадать у разных оценщиков.

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

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

Целью работы является исследование зависимости стоимости объектов недвижимости Москвы их характеристик и внешних показателей.

Данные представлены компанией «Домклик», дочкой ПАО «Сбербанк России».

Объект исследования: новостройки и вторичное жилье в г. Москва.

В качестве предмета исследования выступает оценка стоимости недвижимости.

В первой главе описаны теоретические предпосылки к исследованию: общие понятия о машинном обучении, объекты и признаки в задачах машинного обучения и типы задач машинного обучения.

Во второй главе идет речь о выборе инструментов для работы с методами машинного обучения и выбор самих методов машинного обучения.

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

Глава 1. Теоретические предпосылки исследования

Москва - густонаселенная столица с населением более 12 миллионов человек. Город окружен четырьмя кольцами, простирающимися от Кремля до МКАД, который определяет предел города.

Внутри колец город делится на десять административных подразделений, называемых округами, которые, в свою очередь, подразделяются на 123 района.

Цены на недвижимость для покупки в Москве обычно коррелируют с ценой за квадратный метр в рублях. Cредние цены на покупку квартиры в Москве примерно 308 500 рублей за квадратный метр в центре города, и 147 000 рублей за пределами центра города.

При покупке недвижимости в Москве, как и в большинстве городов, местоположение, размер и тип собственности будут определять цену на объект.

Некоторые из современных новостроек имеют высокие стандарты качества и ориентированы на рынок роскоши и иностранных инвесторов.

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

Недавнее исследование региональных бумов и бюстов в сфере недвижимости в 1980-х и 1990-х годах показало, что банки в государствах, которые испытали значительное падение цен на жилье, также пострадали от высоких ставок по кредитам и, как следствие, низкой прибыли и высоких показателей отказов. Обычно, но не всегда, это снижение сопровождалось экономическим шоком, таким как падение цен на сырьевые товары или сокращение государственных расходов.

Снижение цен на жилье стало ускоряющим фактором финансового кризиса, который потряс мир осенью 2008 года. Регламент, принятый в Соединенных Штатах, оказал давление на банковский сектор, чтобы позволить большему числу клиентов стать домовладельцами.

Снижение цен на жилье, как правило, было одним из ведущих индикаторов падения цен на акции в США. Цены на жилье в США достигли максимума в первом квартале 2006 года, но американский фондовый рынок продолжал расти до четвертого квартала 2007 года. Два падения на двух основных рынках активов США вызвали кризис ликвидности, который заморозил рынки межбанковских кредитов Глобус.

В подобном сценарии банки обычно уменьшают свои инвестиции и кредитование. Потребителям может оказаться труднее получить кредиты на покупку собственного капитала.

Однако неясно, как потребители используют деньги, полученные от займов на собственный капитал. Некоторые исследования показывают, что до 60% извлеченного капитала используется для потребления, но другие исследования показывают, что деньги используются либо для инвестиций, либо для погашения долга.

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

При сделках с недвижимым имуществом надо понимать, что любое жилье имеет две стоимости: кадастровую и рыночную.

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

Рыночная стоимость квартиры немного отличается от кадастровой. Она оценивает также такие параметры, как состояние ремонта в квартире, подъезде и состояние всего дома. Немаловажное значение имеет район расположения жилого помещения, дворовая территория, инфраструктура. Именно на эту стоимость нужно ориентироваться при сделках с имуществом.

Результаты оценки стоимости квартиры могут потребовать:

1. Для оформления ипотечного кредита. Банк требует информацию о стоимости приобретаемой недвижимости. Это нужно для определения кредитного лимита, который клиент может использовать для приобретения жилья по ипотеке.

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

3. Для предоставления в страховую компанию также требуется определение оценочной стоимости квартиры. Это учитывается при страховании имущества.

4. Для предоставления в суд, если идет разбирательство по недвижимости клиента, в том числе наследство.

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

Целью создания прогноза является уменьшение того уровня неопределенности, в пределах которого менеджер должен принимать решения. Эта цель диктует два основных правила, которым должен следовать процесс прогнозирования:

1. Прогнозирование должно быть технически корректным и должно порождать прогнозы, достаточно точные для того, чтобы отвечать нуждам фирмы.

2. Процедура прогнозирования и ее результаты должны быть достаточно эффективно представлены менеджменту, что обеспечит использование прогнозов в процессе принятия решения во благо фирмы. Результаты прогнозирования также должны быть сбалансированы в отношении затрат/прибыли.

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

В работе Я.Р. Магнуса «Эконометрика» приводится результат работы прогнозирования цены на недвижимость с помощью модели множественной регрессии. Данные были собраны автором вручную из газеты «Из рук в руки» за период с декабря 1996 г. по сентябрь 1997 г. Всего было собраны данные по 200 объектам недвижимости с информацией об общей площади квартиры, количества жилых комнат, жилая площадь, площадь кухни, расстояние до центра и расстояние до станции метро, цена на квартиру является целевой функцией.

Недостаток данной работы в текущий момент является то, что, несмотря на неплохой результат прогноза, было собрано недостаточно данных для масштабирования модели, было собрано недостаточно факторов для более полного прогноза, а также неактуальность данных.

На текущее время, компанией «Домклик» с 2014 года, были собраны данные по более 100 000 проданным объектам недвижимости, а также 430 факторов, влияющие на цену объекта.

Также, в наше время существуют более точные методы работы с таким большим объемом данных, а также методы, позволяющие сделать модель более масштабируемой и устойчивой к новым данным.

К данным методам относятся методы машинного обучения.

Машинное обучение - это область компьютерных наук, которая часто использует статистические методы, чтобы дать компьютерным системам возможность «учиться» (например, постепенно улучшать производительность в конкретной задаче) с данными, не будучи явно запрограммированной.

Машинное обучение было придумано в 1959 году Артуром Самуэлем. Из изучения теории распознавания образов и теории вычислительного обучения в искусственном интеллекте машинное обучение исследует изучение и построение алгоритмов, которые могут учиться и делать прогнозы на основе данных, - такие алгоритмы преодолевают строгие статические программные инструкции, делая предсказания или решения, основанные на данных.

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

Машинное обучение тесно связано с вычислительной статистикой, которая также фокусируется на прогнозировании с использованием ЭВМ. Машинное обучение иногда сочетается с интеллектуальным анализом данных, которое больше фокусируется на анализе разведочных данных и известно, как неконтролируемое обучение. Машинное обучение также может быть неконтролируемым и использоваться для изучения и установления базовых поведенческих профилей для различных субъектов, а затем для использования для определения значимых аномалий.

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

Артур Самуэль, американский пионер в области компьютерных игр и искусственного интеллекта, в 1959 году придумал термин «машинное обучение», работая в IBM. Как область науки, машинное обучение росло из стремления к построению систем искусственного интеллекта. Уже в первое время формирования систем искусственного интеллекта, некоторые исследователи были заинтересованы в том, чтобы машины учились на данных. Они пытались подойти к проблеме с помощью различных символических методов, а также то, что тогда называлось «нейронными сетями»; это были главным образом персептроны и другие модели, которые позже были признаны реинтеграцией обобщенных линейных моделей статистики. Были также использованы вероятностные рассуждения, особенно в автоматизированной медицинской диагностике.

Однако большее внимание на алгебре логики, основанном на подходе познания, вызвало разрыв между искусственным интеллектом и машинным обучением. Вероятностные системы страдали от теоретических и практических проблем сбора и представления данных. К 1980 году экспертные системы стали доминировать над искусственным интеллектом, а теоретическая статистика перестала справляться с поставленными задачами. Работа над символическим (основанным на знаниях) обучением продолжалась в рамках работы над искусственным интеллектом, что приводило к индуктивному логическому программированию, но более статистическая линия исследований в настоящее время выходит за рамки искусственного интеллекта, в распознавании образов и поиске информации. Исследования нейронных сетей были брошены в начале 1980-х. В середине 1980-х годов с переосмыслением обратного распространения, работы над нейронными сетями восстановились.

Машинное обучение, реорганизованное как отдельная отрасль начало процветать в 1990-х годах. Отрасль изменила свою цель - создание искусственного интеллекта для решения разрешимых проблем практического характера. Сместился фокус от символических подходов, которые были унаследованы от искусственного интеллекта, и методов, и моделей, заимствованных из статистики и теории вероятностей. Это также способствовало увеличению доступности оцифрованной информации и возможности ее распространения через Интернет.

Машинное обучение и интеллектуальный анализ данных часто используют одни и те же методы, и значительно пересекаются, но в то время как машинное обучение фокусируется на предсказании, основанное на известных свойствах и событиях, полученных из данных обучения, интеллектуальный анализ данных же фокусируется на обнаружении ранее неизвестных свойств в данных. Для интеллектуального анализа данных используются многие методы машинного обучения, но с разными целями; с другой стороны, машинное обучение также использует методы интеллектуального анализа данных как «обучение без учителя» или как шаг предварительной обработки для повышения точности обучения. Большая часть путаницы между этими двумя исследовательскими сообществами исходит из основных предположений, с которыми они работают: в компьютерном обучении эффективность обычно оценивается в отношении способности воспроизводить известные знания, а при открытии знаний и интеллектуальном анализе данных ключевой задачей является обнаружение ранее неизвестных знаний. Оцененный в отношении известных знаний, метод без учителя будет легко превосходить другие контролируемые методы, в то время как в типичной задаче интеллектуального анализа данных контролируемые методы не могут использоваться из-за недоступности данных для обучения.

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

Том М. Митчелл представил широко цитированное, более формальное определение алгоритмов, изучаемых в области машинного обучения: «Говорят, что компьютерная программа учится на опыте E по отношению к некоторому классу задач T и показателю производительности P, если его производительность при выполнении задач в T, как измерено P, улучшается с опытом E». Это определение задач, в которых рассматривается машинное обучение, предлагает принципиально оперативное определение, а не определение поля в когнитивных терминах. Это следует за предложением Алана Тьюринга в его статье «Вычислительная техника и разведка», в которой вопрос «Могут ли машины думать?» заменяется вопросом: «Могут ли машины делать то, что мы (как мыслящие сущности) можем делать?». В предложении Тьюринга раскрываются различные характеристики, которыми может обладать мыслящая машина, и различные последствия для ее построения.

Задачи машинного обучения обычно подразделяются на две широкие категории, в зависимости от наличия обучающего «сигнала» или «обратной связи», доступного для системы обучения:

1) Обучение с учителем: компьютер представлен примерными входными данными и их желаемыми результатами, заданными «учителем», и цель состоит в том, чтобы изучить общее правило, которое отображает входные данные для выходов. В качестве особых случаев входной сигнал может быть только частично доступен или ограничен специальной обратной связью.

2) Обучение без учителя: целевые функции не даются алгоритму обучения, чтобы он сам нашел необходимую структуру для построения модели. Обучение без учителя может быть использовано для обнаружения скрытых шаблонов в данных.

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

Выделяются две парадигмы статистического моделирования: модель данных и алгоритмическую модель, где «алгоритмическая модель» использует алгоритмы машинного обучения, такие как Random Forest и градиентный бустинг.

Некоторые математики применяют методы машинного обучения, что приводит к объединению областей статистики и машинного обучения, которая называется статистическим обучением.

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

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

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

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

1) Положительные результаты показывают, что определенный класс функций может быть изучен за полиномиальное время.

2) Отрицательные результаты показывают, что некоторые классы не могут быть изучены за полиномиальное время.

Расстояние между гиперплоскостью и ближайшими точками данных называется границей. Лучшая или оптимальная гиперплоскость - та, которая может разделять два класса, - это линия с наибольшим запасом. Только эти точки имеют значение при определении гиперплоскости и в конструкции классификатора. Эти точки называются опорными векторами. Они поддерживают или определяют гиперплоскость.

Главной целью данной работы является определение наиболее оптимального и точного алгоритма машинного обучения для прикладной задачи прогнозирования цены на недвижимость в Москве.

Глава 2. Характеристика предлагаемого подхода к решению задач

2.1 Жизненный цикл проекта науки о данных

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

Рисунок 1 - Жизненный цикл проекта науки о данных

1. Понимание бизнес-цели

Учеными о данных являются люди, которые задают вопросы и пытаются найти закономерности. Это люди, которые хотят обеспечить, чтобы каждое принятое в компании решение подтверждалось конкретными данными и гарантировало (с большой вероятностью) достижение результатов. Прежде чем начать проект разработки модели машинного обучения, необходимо выяснить цель исследования.

Согласно блогу Microsoft Azure, наука о данных используется для ответа на пять типов вопросов:

1) Сколько? (Регрессия)

2) Какая категория? (Классификация)

3) Какая группа? (Кластеризация)

4) Это странно? (обнаружение аномалий)

5) Какой вариант следует предпринять? (рекомендация)

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

В данной работе целью работы является исследование зависимости стоимости квартир города Москвы от характеристик этих квартир и внешних показателей.

2. Сбор данных

Теперь, когда определена цель проекта, необходимо начать сбор данных. Сбор данных - это создание процесса сбора данных из разных источников. На этом этапе некоторые из вопросов, которые стоит рассмотреть, - “Какие данные нужны для конкретного проекта? Где они находятся? Каким способом их можно получить? Каков наиболее эффективный способ хранения и доступа к этим данным?”

Если все данные, необходимые для проекта, упакованы и переданы заказчику - это большая удача. Чаще всего поиск правильных данных требует большого количества времени и усилий. Если данные хранятся в базах данных, работа относительно проста - необходимо запросить соответствующие данные с помощью SQL-запросов. Однако, если данные фактически не существуют в наборе данных, необходимо воспользоваться инструментами для парсинга и майнинга данных.

В случае данной работы, была создана база данных PostgreSQL, данные были получены из официального источника компании «Домклик». Был настроен автоматический ETL-процесс сбор данных из этого источника.

ETL - Extract, Transform и Load (извлечение, преобразование и загрузка). С помощью трех концептуальных шагов ETL-инструмент может позволить создать конвейер проектируемых и структурированных данных. Парадигма ETL служит в качестве плана того, как необработанные данные преобразуются в готовые к анализу данные.

На рисунке 2 можно ознакомиться с процессом обработки данных более подробно.

Рисунок 2 - стандартный ETL-процесс

Извлечение: это шаг, на котором сенсоры ожидают выхода источников актуальной версии источника данных (например, исходный источник может быть машинным или пользовательским журналом, копией реляционной базы данных, внешним набором данных и т.д.). По имеющимся данным инструмент переносит данные из их исходных мест в дальнейшие преобразования.

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

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

3. Очистка данных

Теперь, когда получены необходимые данные, следует этап очистки и подготовки данных. Согласно опросам ученых-исследователей, этот процесс (также называемый «Data Engineering») часто занимает от 50 до 80 процентов времени.

Причина, по которой это такой длительный процесс, - это существование множества возможных сценариев, которые могут потребовать очистки. Например, данные могут также иметь несоответствия в одном столбце, что означает, что некоторые строки могут быть помечены как 0 или 1, а другие могут быть помечены как «нет» или «да». Типы данных также могут быть непоследовательными - некоторые из 0 могут быть целыми, тогда как некоторые из них могут быть строками. Если мы имеем дело с категориальным типом данных с несколькими категориями, некоторые из категорий могут содержать ошибочные значения.

Одним из шагов, которые часто забываются на этом этапе, в результате чего возникает много проблем, является наличие недостающих данных. Отсутствующие данные могут вызывать множество ошибок при создании и обучении модели. Один из вариантов - либо игнорировать экземпляры, у которых есть любые отсутствующие значения. Другим распространенным подходом является заполнение отсутствующих значений средними значениями по полученной выборке. Это не всегда рекомендуется, поскольку это может уменьшить изменчивость данных, но в некоторых случаях это имеет смысл.

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

4. Исследование данных

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

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

5. Инженерия признаков

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

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

Обычно этот процесс делится на две задачи:

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

2) Создание факторов - создание новых параметров для модели из тех, которые у вас уже есть. Пример этого - наличие непрерывной переменной, но знания предметной области информируют о том, что из нее необходимо знать лишь ее бинарную часть, основываясь на некотором пороговом значении.

В данной работе были отобраны только те факторы, которые не создают шума, а также из 78 собранных переменных были созданы 430 уникальных факторов.

6. Предиктивное моделирование

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

На рисунке 3 представлена диаграмма выбора необходимого типа модели от корпорации Microsoft с учетом разнородных данных.

Рисунок 3 - Диаграмма выбора необходимой модели, Microsoft

Как только модель построена, важно оценить ее адекватность. Для оценки точности модели обычно используется процесс под названием k-fold cross validation. Он включает разделение набора данных на k одинаковых по размеру групп экземпляров, обучение по всем группам, кроме одной, и повторение процесса с остальными группами. Это позволяет моделировать обучение, основываясь на всех данных.

Для моделей классификации точность считается с использованием PCC (процентная правильная классификация), а также матрицы замешательства, которая разбивает ошибки на ложно-негативные, ложно-позитивные, истинно-негативные и истинно-позитивные значения. Для модели регрессии общие метрики включают коэффициент детерминации (который дает информацию о качестве аппроксимации функции), среднюю квадратичную ошибку (MSE), среднюю абсолютную ошибку и квадрат средних квадратичных ошибок (RMSE), которая является наиболее строгой оценкой качества полученной модели, и ее вариация RMSLE (среднеквадратическое отклонение логарифмов и предоставленных данных) использована в данной работе. RMSLE рассчитывается по формуле:

7. Визуализация данных

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

8. Понимание бизнес-цели

Жизненный цикл проекта, связанный с наукой о данных - итеративный процесс. Возвращаясь к первому этапу, нужно оценить, как успех вашей модели связан с вашим первоначальным пониманием бизнеса. Решает ли эти проблемы выявленные проблемы? Получает ли бизнес какие-либо ощутимые решения? Если исследователь столкнулся с каким-либо новым пониманием во время первой итерации жизненного цикла, это может найти отражение в последующих итерациях, чтобы сгенерировать еще более мощные идеи для бизнеса.

Подбор метода машинного обучения

В машинном обучении невозможно однозначно подобрать нужный метод.

Например, нельзя сказать, что нейронные сети всегда лучше деревьев решений или наоборот. Это зависит от многих факторов, таких как размер и структура набора данных.

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

Однако существует общий принцип, лежащий в основе всех алгоритмов машинного обучения с учителем для интеллектуального моделирования

Алгоритмы машинного обучения описываются как изучение целевой функции (f), которая наилучшим образом сопоставляет входные переменные (X) с выходной переменной (Y): Y = f (X)

Это общая задача обучения, в которой необходимо сделать прогнозы в будущем (Y) с помощью входных переменных (X). У исследователя нет понимания как выглядит функция (f) или ее форма. Если бы это было известно, можно было бы использовать ее напрямую без изучения данных, используя алгоритмы машинного обучения.

Наиболее распространенным типом машинного обучения является изучение функции Y = f (X) для прогнозирования Y с помощью новых X. Это называется предсказательным моделированием или предсказательной аналитикой, и цель исследователя - сделать максимально точные прогнозы.

1. Линейная регрессия

Линейная регрессия - это, пожалуй, один из самых известных и хорошо понятых алгоритмов в статистике и машинном обучении.

Прогностическое моделирование, в первую очередь, касается минимизации ошибки модели или принятия наиболее точных прогнозов за счет объяснимости.

Представление линейной регрессии представляет собой уравнение, которое описывает линию, которая наилучшим образом соответствует взаимосвязи между входными переменными (x) и выходными переменными (y), путем нахождения определенных весовых коэффициентов для входных переменных, называемых коэффициентами (B). Например: y = B0 + B1 * x

Пример графика линейной регрессии приведен на рисунке 4.

Рисунок 4 - линейная регрессия

Задача стоит в предсказании y, учитывая вход x, и цель алгоритма линейного регрессионного обучения состоит в том, чтобы найти значения для коэффициентов B0 и B1.

Различные методы могут быть использованы для изучения линейной регрессионной модели из данных, таких как стандартные методы линейной алгебры, метод наименьших квадратов и градиентный спуск.

Линейная регрессия существует уже более 200 лет и широко изучается. Некоторые правила при использовании этого метода состоят в том, чтобы удалить переменные, которые очень похожи (коррелированы) и удалить шум из данных, если это возможно. Это быстрый и простой алгоритм.

2 - Логистическая регрессия

Логистическая регрессия - это еще один метод, заимствованный машинным обучением из области статистики. Это метод двоичной классификации.

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

Логистическая функция выглядит как большой S и преобразует любое значение в диапазон от 0 до 1. Это полезно, потому что исследователь может применить правило к выходу логистической функции для привязки значений к 0 и 1 (например, IF менее 0,5, тогда выход 1) и предсказать значение класса.

Пример графика логистической регрессии приведен на рисунке 5.

Рисунок 5 - логистическая регрессия

Из-за того, как модель изучается, прогнозы, сделанные логистической регрессией, также могут использоваться как вероятность того, что данный экземпляр данных принадлежит классу 0 или классу 1. Это может быть полезно для проблем, когда вам нужно дать больше обоснований для прогнозирования.

Как и линейная регрессия, логистическая регрессия работает лучше, когда исследователь отбрасывает атрибуты, не связанные с выходной переменной, а также атрибуты, которые очень похожи (коррелированы) друг с другом. Это быстрая модель для обучения, которая эффективно решает проблемы двоичной классификации.

3 - Линейный дискриминантный анализ

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

Представление LDA довольно прямолинейно. Он состоит из статистических свойств ваших данных, рассчитанных для каждого класса. Для одной входной переменной это включает в себя:

1. Среднее значение для каждого класса.

2. Дисперсия, вычисляемая по всем классам.

Пример графика линейного дискриминантного анализа продемонстрирован на рисунке 6.

Рисунок 6 - Линейный дискриминантный анализ

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

4 - Деревья классификации и регрессии

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

Представление модели дерева решений - это двоичное дерево из алгоритмов и структур данных, ничего. Каждый узел представляет собой единую входную переменную (x) и точку разделения для этой переменной (при условии, что переменная является числовой). Пример дерева решений продемонстрирован на рисунке 7.

Рисунок 7 - Дерево решений

Листовые узлы дерева содержат выходную переменную (y), которая используется для предсказания. Предсказания производятся путем прохода разделов дерева до прибытия к листовому узлу и вывода значения класса на этом листовом узле.

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

5 - Наивный Байес

Наивный Байес - простой, но мощный алгоритм прогнозирования.

Модель состоит из двух типов вероятностей, которые могут быть рассчитаны непосредственно из данных для обучения:

1) вероятность каждого класса

2) условная вероятность для каждого класса при каждом значении x

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

Пример работы алгоритма наивного Байеса продемонстрирован на рисунке 8.

Рисунок 8 - алгоритм наивного Байеса

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

6 - K-Ближайшие соседи (KNN)

Алгоритм KNN очень прост и эффективен. Модельным представлением для KNN является весь набор учебных материалов.

Предсказания сделаны для новой точки данных путем поиска через весь тренировочный набор для K наиболее похожих экземпляров (соседей) и суммирования выходной переменной для этих экземпляров K. Для проблем с регрессией это может быть средняя выходная переменная, для задач классификации это может быть наиболее распространенное значение.

Цель заключается в том, как определить сходство между экземплярами данных. Самый простой метод, если ваши атрибуты имеют один и тот же масштаб (например, в дюймах), используется эвклидово расстояние, число, которое вы можете вычислить напрямую, исходя из различий между каждой входной переменной.

Пример графика алгоритма K-ближайших соседей продемонстрирован на рисунке 9.

KNN может потребовать много памяти или пространства для хранения всех данных, но только выполняет расчет (или обучение), когда требуется предсказание.

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

Рисунок 9 - метод K-ближайших соседей

7 - Квантование векторных данных (LVQ)

Недостатком метода ближайших соседей является то, что исследователю нужен весь набор тренировочной выборки. Алгоритм квантования вектора обучения является алгоритмом искусственной нейронной сети, который позволяет выбрать, сколько данных для обучения необходимо модели. Пример построения LVQ-сети продемонстрирован на рисунке 10.

Рисунок 10 - стандартная LVQ-сеть

Представление для LVQ представляет собой набор векторов кодовой книги. Они выбираются случайным образом в начале и адаптируются для наилучшего суммирования набора данных для обучения по ряду итераций алгоритма обучения. После обучения векторы кодовой книги можно использовать для составления прогнозов точно так же, как KNN. Самый похожий сосед (наилучший совпадающий вектор кодовой книги) найден путем вычисления расстояния между каждым вектором кодовой книги и новым экземпляром данных. Значение класса или (реальное значение в случае регрессии) для наилучшего совпадающего элемента возвращается как предсказанное значение. Лучшие результаты достигаются, если данные распределены с одинаковым диапазоном, например, от 0 до 1.

8 - Метод опорных векторов (SVM)

Метод опорных векторов - один из самых популярных и обсуждаемых алгоритмов машинного обучения. Гиперплоскость - это линия, которая разбивает входное переменное пространство. В SVM выбирается гиперплоскость, чтобы наилучшим образом отделить точки во входном пространстве переменных от их класса, класса 0 или класса 1. В двух измерениях можно визуализировать это как строку и предположить, что все входные точки могут полностью разделены этой линией. Алгоритм обучения SVM находит коэффициенты, которые приводят к лучшему разделению классов гиперплоскостью. Пример метода опорных векторов продемонстрирован на рисунке 11.

Расстояние между гиперплоскостью и ближайшими точками данных называется границей. Лучшая или оптимальная гиперплоскость - та, которая может разделять два класса, - это линия с наибольшим запасом. Только эти точки имеют значение при определении гиперплоскости и в конструкции классификатора. Эти точки называются опорными векторами. Они поддерживают или определяют гиперплоскость. На практике алгоритм оптимизации используется для определения значений коэффициентов, которые максимизируют функцию.

Рисунок 11 - метод опорных векторов

9 - Ансамбль деревьев решений и случайный лес

Random Forest - один из самых популярных и мощных алгоритмов машинного обучения. Это тип ансамблевого алгоритма машинного обучения под названием Bootstrap Aggregation или ансамбль деревьев решений

Bootstrap является мощным статистическим методом для оценки количества из выборки данных. Алгоритм берет множество образцов данных, вычисляет среднее значение, затем усредняет все средние значения, чтобы дать лучшую оценку истинного среднего значения.

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

Иллюстрация ансамбля изображена на рисунке 12.

Рисунок 12 - Ансамбль деревьев решений

Случайный лес - это настройка этого подхода, когда деревья решений создаются так, что вместо выбора оптимальных точек разделения субоптимальные расщепления производятся путем введения случайности.

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

10 - Boosting и AdaBoost

Boosting - это ансамблевая техника, которая пытается создать сильный классификатор из ряда слабых классификаторов. Это делается путем создания модели из данных для обучения, а затем создания второй модели, которая пытается исправить ошибки из первой модели. Модели добавляются до тех пор, пока тренировочный набор не будет хорошо предсказуем или не будет добавлено максимальное количество моделей.

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

Пример алгоритма AdaBoost изображен на рисунке 13.

Рисунок 13 - работа алгоритма AdaBoost

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

Выбоp инcтpумента

На cегодняшний день cущеcтвуют множеcтво инcтpументов для анализа больших потоков инфоpмации. Cpеди них Rstudiо (язык пpогpаммиpования R), дистрибутив Аnаcоndа (язык пpогpаммиpования Pythоn), MS Excel, Wekа, RаpidMiner, Knime.

Для выбоpа оптимального инcтpумента напиcания данной pаботы, было pешено иcпользовать CППP, опpеделить коэффициенты и веcа кpитеpиев.

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

Таблица 1 - pейтинг обpаботки данных

Обработка данных

Pythоn

R

Wekа

Knime / RаpidMiner

Пpактичеcкие навыки

4

3

1

1

Возможноcть cложных обpаботок

3

3

1

1

Пpоcтые пpеобpазование

4

4

4

4

Cумма

11

10

6

6

В таблице 2 были расставлены веса для таких критериев как: количество методов (библиотек) для работы с анализом данных, гибкость настройки параметров библиотек.

Таблица 2 - pейтинг в машинном обучении

Машинное обучение

Pythоn

R

Wekа

Knime / RаpidMiner

Количеcтво методов

4

4

3

3

Наcтpойка

4

3

2

2

Cумма

8

7

6

5

В таблице 3 представлены веса для таких критериев как: представление результатов работы (визуализация), временные затраты на выполнение кода.

Таблица 3 - представление результатов работы

Пpедcтавление pезультатов pаботы

Pythоn

R

Wekа

Knime / RаpidMiner

Гибкоcть

4

4

1

2

Затpаты вpемя

2

2

2

3

Cумма

6

6

4

5

В таблице 4 отображены веса для таких критериев как: затраты временных ресурсов на написание кода, скорость вывода результата визуализаций.

Таблица 4 - скорость получения результатов

Cкоpоcть получения pезультатов

Pythоn

R

Wekа

Knime / RаpidMiner

Затpата вpемени на напиcание кода

1

2

4

4

Быcтpый вывод pезультатов

2

3

1

2

Cумма

3

5

5

6

Веcа кpитеpиев были pаccтавлены таким обpазом, что CППP выявила наиболее пpедпочтительные ваpианты.

По pезультатам анализа очевидно, что Pythоn, R являютcя наиболее пpедпочтительными инcтpументами для анализа данных, обладают неcpавненно большей гибкоcтью. C помощью Wekа можно быcтpее оcущеcтвлять анализ данных. Knime, RM, Wekа не пpедоcтавляют доcтаточной cвободы дейcтвий.

Для решения задачи прогнозирования цены на недвижимость было принято решения использовать дистрибутив Аnаcоndа (язык программирования Pythоn), а для визуализации для бизнес-целей язык программирования R, дистрибутив R-studiо.

Глава 3. Практическая реализация предложенного подхода с использованием ЭММ и ИТ на примере прогнозирования цены на недвижимость в Москве

В качестве исходных данных были получены следующие группы показателей:

1) Внутренние характеристики недвижимости

2) Состояние квартиры и материал постройки

3) Демографические характеристики района

4) Учебные характеристики района (наличие школ, ВУЗов)

5) Культурные характеристики района

6) Инфраструктурные характеристики района

Всего было собрано 430 параметров.

Всего было собрано данных по 100 тыс объектам недвижимости.

Словарь данных представлен в приложении 1.

Очевидно, не весь набор параметров понадобится нам для построения модели. Для того, чтобы понять какие переменные нужны в анализе, нам необходимо провести анализ данных.

Анализировать данные будем при помощи библиотек:

numpy - это расширение языка Pythоn, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами,

pаndаs - предоставляет специальные структуры данных и операции для манипулирования числовыми таблицами и временными рядами, датафреймами (специальными таблицами в среде Аnаcоndа),

mаtplоtlib и seаbоrn - для построения графиков и визуализации результатов.

Для этого импортируем библиотеки в среду Аnаcоndа.

После чего, нам необходимо загрузить датасет (набор данных) в среду Jupyter.

Далее, проведем исследование пропущенных значений:

В результате получим график, изображенный на рисунке 14, иллюстрирующий количество пропущенных значений каждого фактора:

Рисунок 14 - Количество пропущенных значений каждого фактора

По графику можем наблюдать, что топ-5 «плохих значений», по которым у нас мало информации это: Количество больничных коек для района, год постройки, средний минимальный счет в кафе и ресторане в 500 метрах, средний максимальный счет в кафе и ресторане в 500 метрах, средний счет в кафе в 500 метрах.

Так как в дальнейшем мы будем использовать алгоритм градиентного бустинга, то можем не заполнять пропущенные значения, алгоритм способен самостоятельно обходить их.

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

Контроль качества данных.

В задаче контроля качества данных существует словарь данных, в которых, например, возраст постройки здания не может быть равен 2189, или год рождения человека не может быть 2100. Пороговые значения в контроле качества данных строго не регламентированы, устанавливаются только из инициативы аналитика.

В нашем конкретном случае была выявлена закономерность: фактор «Состояние квартиры» принимает значение от 1 до 4. В датасете присутствуют иные значения. «Год постройки» также принимает неадекватно высокие значения. Для этого заменим эти значения на медиальные:

Анализ внутренних характеристик недвижимости.

Обозначим необходимые нам внутренние характеристики в датафрейм:


Подобные документы

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

    курсовая работа [462,2 K], добавлен 15.01.2014

  • Теоретические основы распознавания образов. Функциональная схема системы распознавания. Применение байесовских методов при решении задачи распознавания образов. Байесовская сегментация изображений. Модель TAN при решении задачи классификации образов.

    дипломная работа [1019,9 K], добавлен 13.10.2017

  • Понятие и особенности построения алгоритмов распознавания образов. Различные подходы к типологии методов распознавания. Изучение основных способов представления знаний. Характеристика интенсиональных и экстенсиональных методов, оценка их качества.

    презентация [31,6 K], добавлен 06.01.2014

  • Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.

    дипломная работа [1,8 M], добавлен 08.02.2017

  • Обзор рекурсивных алгоритмов с позиции теории алгоритмов, теории сложности, с точки зрения практического программирования. Имитация работы цикла с помощью рекурсии. Способы изображения древовидных структур. Синтаксический анализ арифметических выражений.

    курсовая работа [432,2 K], добавлен 16.01.2013

  • Популярность алгоритмов машинного обучения для компьютерных игр. Основные техники обучения с подкреплением в динамической среде (компьютерная игра "Snake") с экспериментальным сравнением алгоритмов. Обучение с подкреплением как тип обучения без учителя.

    курсовая работа [1020,6 K], добавлен 30.11.2016

  • Методы распознавания образов (классификаторы): байесовский, линейный, метод потенциальных функций. Разработка программы распознавания человека по его фотографиям. Примеры работы классификаторов, экспериментальные результаты о точности работы методов.

    курсовая работа [2,7 M], добавлен 15.08.2011

  • Первое систематическое изучение искусственных нейронных сетей. Описание элементарного перцептрона. Программная реализация модели распознавания графических образов на основе перцептрона. Интерфейс программы, основные окна. Составление алгоритма приложения.

    реферат [100,5 K], добавлен 18.01.2014

  • Оптико-электронная система идентификации объектов подвижного состава железнодорожного транспорта. Автоматический комплекс распознавания автомобильных номеров. Принципы и этапы работы систем оптического распознавания. Особенности реализации алгоритмов.

    дипломная работа [887,3 K], добавлен 26.11.2013

  • Описание структурной схемы искусственного нейрона. Характеристика искусственной нейронной сети как математической модели и устройств параллельных вычислений на основе микропроцессоров. Применение нейронной сети для распознавания образов и сжатия данных.

    презентация [387,5 K], добавлен 11.12.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.