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