Top Banner
Data mining, проект R Ионин Константин, МГКН-2.
32

Data mining, проект R (Константин Ионин)

Jul 21, 2015

Download

Science

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Data mining, проект R (Константин Ионин)

Data mining, проект R

Ионин Константин, МГКН-2.

Page 2: Data mining, проект R (Константин Ионин)

Data Mining - это процесс обнаружения в сырых данных знаний, которые

• ранее были неизвестны

• нетривиальны

• практически полезны

• доступны для понимания

Page 3: Data mining, проект R (Константин Ионин)

Классификация задач Data mining

• классификация

• регрессия

• поиск ассоциативных правил

• кластеризация

Page 4: Data mining, проект R (Константин Ионин)

Методы решения задач• классификация - нейронные сети, метод ближайшего соседа, байесовские сети

• регрессия - метод наименьших квадратов

• поиск ассоциативных правил - последовательное применение кластеризации и классификации

• кластеризация - методы обучения без учителя

Page 5: Data mining, проект R (Константин Ионин)

Этапы анализа

Page 6: Data mining, проект R (Константин Ионин)

Проект R

Page 7: Data mining, проект R (Константин Ионин)

Для чего нужен R?

• Манипулирование данными и их визуализация

• Статистический анализ

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

Page 8: Data mining, проект R (Константин Ионин)

Пример с habrahabr.ru

Page 9: Data mining, проект R (Константин Ионин)

«Как я покупал квартиру»

Page 10: Data mining, проект R (Константин Ионин)

Сбор данных

Page 11: Data mining, проект R (Константин Ионин)

Парсим объявления и выделяем следующие параметры:

• цена (далее — переменная price)

• возраст (age)

• расстояние до метро (dist_to_subway)

• этаж (storey) и этажность дома (storey_no)

Page 12: Data mining, проект R (Константин Ионин)

• наличие балкона или лоджии (balcony)

• общая (total_space) и жилая площадь (living_space), а также площадь кухни (kitchen_space)

• количество раздельных комнат (room_no)

• тип санузла (restroom_com для общего, restroom_sep для раздельного)

Page 13: Data mining, проект R (Константин Ионин)

Анализ данных

Page 14: Data mining, проект R (Константин Ионин)

Загрузка данныхПарсер объявлений сохранял все данные в виде CSV файла на диске.

Загрузка этих данных в R:

> dat <- read.csv(«/path/to/dataset.csv")

или

> read.csv("/path/to/dataset.csv") -> dat

Page 15: Data mining, проект R (Константин Ионин)

Фрейм данных

dat <- read.csv(«/path/to/dataset.csv»)

dat имеет тип data.frame - фрейм данных:

• напоминает таблицу в реляционных БД

• доступ по индексу: > dat[6]

• доступ по имени колонки:

> dat[«price»] или dat$price

Page 16: Data mining, проект R (Константин Ионин)

Фрейм данных> dat[3, 6] # 3 запись из 6 колонки

> dat[1:10, 1:6] # подфрейм, образованный из первых 10 строк и первых 6 колонок

> dat[1:10, c(3, 5)] # первые 10 строк и колонки 3 и 5

> dat[, 6] # все строки 6-й колонки (аналогично dat[6])

> dat[, -6] # все строки всех колонок, кроме 6

> dat[,] # все строки всех колонок (аналогично dat)

Page 17: Data mining, проект R (Константин Ионин)

Функция plot()

• полиморфна и может быть использована для объектов разных типов

• в простейшем случае она принимает просто 2 вектора одинаковой длины и отображает их точечную диаграму (scatter plot)

• Больше информации: > ?plot

Page 18: Data mining, проект R (Константин Ионин)

Точечная диаграмма зависимости цены от количества комнат

> plot(dat$room_no, dat$price)

Page 19: Data mining, проект R (Константин Ионин)

Но посмотрим на значение переменной dist_to_subway для этих квартир:

> dat[dat$room_no == 4, ]$dist_to_subway

[1] 2000.000 2000.000 2000.000 2000.000 4305.613

Фильтрация:

> dat2 <- dat[dat$room_no == 2, -с(7, 8, 9, 13)]

Page 20: Data mining, проект R (Константин Ионин)

Задача:выделить из всего набора квартир

те, которые имеют наилучшее соотношение цена/качество

Page 21: Data mining, проект R (Константин Ионин)
Page 22: Data mining, проект R (Константин Ионин)

Визуализация зависимостей

Page 23: Data mining, проект R (Константин Ионин)

Зависимость цены от общей площади

> plot(dat2$total_space, dat2$price)

Page 24: Data mining, проект R (Константин Ионин)

Зависимость цены от расстояния до метро

> plot(dat2$dist_to_subway, dat2$price)

Page 25: Data mining, проект R (Константин Ионин)

Зависимость цены от возраста дома

> plot(dat2$age, dat2$price)

Page 26: Data mining, проект R (Константин Ионин)

Линейная модель

Page 27: Data mining, проект R (Константин Ионин)

В нашем случае:

price = k0 + k1 * age + k2 * balcony + k3 * dist_to_subway + k4 * storey + k5 * storey_no + k6 * total_space

Поиск коэффициентов k0…k6 - линейная регрессия.

> model <- lm(price ~ age + balcony + dist_to_subway + storey + storey_no + total_space, data = dat2)

или так:

> model <- lm(price ~ ., data = dat2)

Page 28: Data mining, проект R (Константин Ионин)

• Intercept соответсвует коэффициенту k0 и может быть интерпретирован как минимальная стоимость квартиры при всех параметрах равных нулю.

• Коэффициент при переменной total_space показывает реальную стоимость квадратного метра.

• Наличие балкона прибавляет квартире сразу 2 тысячи долларов.

• Расстояние до метро уменьшает стоимость на 40 центов с каждым метром.

Page 29: Data mining, проект R (Константин Ионин)

Рассчет реальной стоимости> predicted.cost <- predict(model, dat2)

Для визуализации результата:

> actual.price <- dat2$price # сохраняем вектор цен в отдельную переменную для удобства

> plot(predicted.cost, actual.price) # предсказанная стоимость vs. цены из имеющихся данных

> par(new=TRUE, col="red") # параметры графика: рисовать на той же конве, использовать красный

> dependency <- lm(predicted.cost, actual.price) # ещё одна модель, на этот раз вспомогательная

> abline(dependency) # отображаем вспомогательную модель в виде линии

Page 30: Data mining, проект R (Константин Ионин)

Предсказанные и реальные цены

Page 31: Data mining, проект R (Константин Ионин)

Коэффициенты недооценнности

Page 32: Data mining, проект R (Константин Ионин)

Спасибо за внимание!