Про паттерны в данных

Основная задача Data Mining — найти паттерны в данных и сделать на их основе предсказание. В первой лекции курса «Learning From Data» Yaser Abu-Mostafa предлагает слушателям интересную задачку (слайд 19), иллюстрирующую практическую проблему.

Нужно предсказать значение (+1 или -1) бинарной переменной f для квадратика под горизонтальной чертой на основании тренировочных данных над чертой.

Аналог из реальной жизни можно придумать такой. Допустим каждый клиент обладает 9-ю бинарными признаками. Тогда каждого клиента можно представить таким вот квадратиком. Нужно предсказать, стоит ли ему выдавать кредит.
Правильный ответ можно узнать из самой лекции, либо написать Ваше решение в комментариях, либо я сам попозже напишу его тут же, если никто ничего не напишет )
Задача не столько сложная, сколько интересная, поскольку иллюстрирует реальную практическую проблему встречающуюся при анализе данных.

Возможность познакомиться с SAS Enterprise Miner

Всем привет!

Хочу познакомить вас с замечательным ресурсом:

В нём вы найдёте то, что интересует многих — работу с Data Mining инструментами, а также работу с программным обеспечением, которое позволяет это. 
 
В частности, меня заинтересовала работа с SAS Enterprise Miner. 
На мой взгляд, книжки-статьи очень хороши, хотя местами сложно и слишком детально. Тем не менее, это лучшее, что есть сегодня на русском языке.
Смотрим, изучаем!

Curse of dimensionality

Так называемое «проклятие размерности (curse of dimensionality)» это явление накладывающее серьзные ограничения на классификаторы основанные на оценке локальных свойств плотности вероятности наблюдений в многомерных данных. Одним из наиболее простых и интуитивно понятных методов классификации является метод k ближайших соседей. Класс к которому принадлежит объект определяется наиболее распространенным классом среди наблюдений в прилежащей локальной области:

 

Число соседей k обычно выбирается пропорциональным общему количеству наблюдений в training data set. Очень важно свойство локальности выборки. Рассмотрим одномерный случай. Допустим у нас есть 1000 равномерно распределенных наблюдений на отрезке (0,1). Для того чтобы захватить r (fraction) = 0.01 всех наблюдений в одномерном кубе (отрезок) понадобится интервал длины L = 0.01. В двумерном случае чтобы охватить тот же объем в близлежащей окрестности любого наблюдения  нам понадобится интервал длинны L =0.01^0.5 = 0.1. В 10 мерном случае 0.01 ^ 10 = 0.63 (при том что вся длина ребра 1). Как видим свойство локальности теряется. Иначе говоря, чтобы охватить 1% данных в 10 мерном пространстве для того чтобы оценить класс нового объекта нам понадобится 63% всего диапазона значений каждой переменной. Следующий код строит длинну интервала многомерного пространства (от 1 до 10) в зависимости от величины r(fraction) определяющей число наблюдений в локальной области усреднения:

Об интервалах значений функции плотности вероятности

Всем добрый день.
Недавно Николай пригласил меня в этот блог и я решил написать свой первый пост. Сразу оговорюсь, что я не использую на данный момент SAS в своей работе (зато раньше использовал, несколько лет). Но тем не менее, продолжаю интересоваться новосятми о том, что делает SAS в области аналитики и data mining. В своих экспериментах я буду использовать язык R, который бесплатен и Open Source. Надеюсь про него будет интересно почитать и SAS программистам, тем более что в некоторых своих продуктах SAS предоставляет возможность вызова функций написанных на R.

 

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

[ f( x | mu, sigma^2 ) = frac{1}{sigma sqrt{2 pi}} exp(-frac{1}{2} (frac{x-mu}{sigma})^2 ) ]

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

Чтобы посчитать плотность вероятность в точке, запишем функцию:

probability <- function(x, mu, sigma) {
p <- (1/(sigma * sqrt(2 * pi))) * exp(-0.5 * ((x - mu)/sigma)^2)
return(p)
}
probability(5.1, 5.06, 0.35)
## [1] 1.132

То же самое можно сделать проще, используя встроенную функцию:

dnorm(5.1, 5.06, 0.35)
## [1] 1.132

Оказывается это совсем не ошибка, а хорошо известная вещь. Картина проясняется, если вспомнить, что речь идет именно о плотности веротности, которая действительно может принимать значения больше единицы. На просторах интернета я нашел следующий поясняющий пример. Рассмотрим непрерывное равноемерное распределение на интервале ( [0, frac{1}{2}] ) с плотностью вероятности в каждой точке интервала равным ( 2 ) и ( 0 ) во всех остальных точках. Тогда интеграл от ( 0 ) до ( 2 ) равен ( 1 ), как того и требует определение.