data mining, проект r (Константин Ионин)
TRANSCRIPT
Data mining, проект R
Ионин Константин, МГКН-2.
Data Mining - это процесс обнаружения в сырых данных знаний, которые
• ранее были неизвестны
• нетривиальны
• практически полезны
• доступны для понимания
Классификация задач Data mining
• классификация
• регрессия
• поиск ассоциативных правил
• кластеризация
Методы решения задач• классификация - нейронные сети, метод ближайшего соседа, байесовские сети
• регрессия - метод наименьших квадратов
• поиск ассоциативных правил - последовательное применение кластеризации и классификации
• кластеризация - методы обучения без учителя
Этапы анализа
Проект R
Для чего нужен R?
• Манипулирование данными и их визуализация
• Статистический анализ
• Машинное обучение
Пример с habrahabr.ru
«Как я покупал квартиру»
Сбор данных
Парсим объявления и выделяем следующие параметры:
• цена (далее — переменная price)
• возраст (age)
• расстояние до метро (dist_to_subway)
• этаж (storey) и этажность дома (storey_no)
• наличие балкона или лоджии (balcony)
• общая (total_space) и жилая площадь (living_space), а также площадь кухни (kitchen_space)
• количество раздельных комнат (room_no)
• тип санузла (restroom_com для общего, restroom_sep для раздельного)
Анализ данных
Загрузка данныхПарсер объявлений сохранял все данные в виде CSV файла на диске.
Загрузка этих данных в R:
> dat <- read.csv(«/path/to/dataset.csv")
или
> read.csv("/path/to/dataset.csv") -> dat
Фрейм данных
dat <- read.csv(«/path/to/dataset.csv»)
dat имеет тип data.frame - фрейм данных:
• напоминает таблицу в реляционных БД
• доступ по индексу: > dat[6]
• доступ по имени колонки:
> dat[«price»] или dat$price
Фрейм данных> 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)
Функция plot()
• полиморфна и может быть использована для объектов разных типов
• в простейшем случае она принимает просто 2 вектора одинаковой длины и отображает их точечную диаграму (scatter plot)
• Больше информации: > ?plot
Точечная диаграмма зависимости цены от количества комнат
> plot(dat$room_no, dat$price)
Но посмотрим на значение переменной 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)]
Задача:выделить из всего набора квартир
те, которые имеют наилучшее соотношение цена/качество
Визуализация зависимостей
Зависимость цены от общей площади
> plot(dat2$total_space, dat2$price)
Зависимость цены от расстояния до метро
> plot(dat2$dist_to_subway, dat2$price)
Зависимость цены от возраста дома
> plot(dat2$age, dat2$price)
Линейная модель
В нашем случае:
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)
• Intercept соответсвует коэффициенту k0 и может быть интерпретирован как минимальная стоимость квартиры при всех параметрах равных нулю.
• Коэффициент при переменной total_space показывает реальную стоимость квадратного метра.
• Наличие балкона прибавляет квартире сразу 2 тысячи долларов.
• Расстояние до метро уменьшает стоимость на 40 центов с каждым метром.
Рассчет реальной стоимости> 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) # отображаем вспомогательную модель в виде линии
Предсказанные и реальные цены
Коэффициенты недооценнности
Спасибо за внимание!