Основная задача Data Mining — найти паттерны в данных и сделать на их основе предсказание. В первой лекции курса «Learning From Data» Yaser Abu-Mostafa предлагает слушателям интересную задачку (слайд 19), иллюстрирующую практическую проблему.
Автор: admin
Чтение SAS data sets из R
- Например у вас нет лицензии на нужный продукт (IML, Miner, и т.д.)
- В SAS ещё нет соответствующего метода/алгоритма/функционала (удобный синтаксис для операций над матрицами, какие-то новые методы изобретенные недавно, графические возможности (ggplot2), парсинг различных форматов данных, подготовка отчетов и презентаций (knitr) и т.д,)
- Вы хотите иметь доступ к source code для того что бы разобраться детально как работает алгоритм и, возможно, изменить его под свои нужды
Calling Functions in the R Language. Но его у Вас может не быть, поэтому можно экспортировать данные в CSV формат и потом считать их в R. Более быстрый и удобный способ — воспользоваться библиотекой haven. Недавно вышла новая версия этого пакета, о чем автор написал на сайте r-bloggers.
# Установка package:
install.packages("haven")
# Загрузка библиотеки в R
library(haven)
data = read_sas("D:/_tmp/hadley.sas7bdat")
Альтернатива SAS — другой SAS :)
Несколько месяцев назад я видел новость, что компания SAS Institute подала иск на какую-то другую компанию и суд решил что язык программирования SAS не является собственностью компании SAS Inst.
Оказывается ответчиком была компания World Programming. Узнал я это на портале Quora, где кто-то задал вопрос про то сколько же в среднем стоит SAS. В ответах была ссылка на то что WPS предлагает свою реализацию языка SAS, но гораздо дешевле. Тем не менее на сайте я не нашел подтверждения, как так для того чтобы узнать цену нужно отправить запрос.
Интересные особенности о WPS найденные на их сайте:
- Есть возможность использовать command line interface
- IDE основанная на eclipse
- Одна лицензия на все продукты
- Можно запросить free trial продукта
- Поддерживаемые элементы языка SAS можно найти тут (PDF)
И еще новость, но касательно R. Revolution Analytics (компания поставляющая коммерические решения на основе R), сделали доступной для свободного пользования расширенную библиотекой Intel MKL версию языка — Revolution R open. Сравнительные графики скорости на различных бенчмарках можно посмотреть на r-bloggers.
SAS Webcast в сентябре 2014 года
Конкурс по анализу данных (с использованием SAS University Edition)
Спасибо Роману Волынец за предоставленную ссылку в группе Профессионалы SAS.
Описание задачи взято с ссылки ниже:
Предлагается решить задачу коллекторского скоринга.
Коллекторский скоринг – это вид скоринга, применяемый для взаимодействия с клиентами, отказывающимися от исполнения условий кредитного договора, т.е. отказываются погашать задолженность. Скоринг в этом случае необходим для определения приоритетности действий служащих коллекторского бюро при работе по возвращению “плохого” кредита.
Банк – организация, выдающая кредиты.
Коллекторское бюро (агентство) – организация, предоставляющая услуги по возврату просроченной задолженности.
Просроченная задолженность (просрочка) – не оплаченная в срок задолженность по основному долгу кредитного договора.
Набор предоставленных данных, аналогичен набору, предоставляемому банком коллекторскому бюро и разбит на два: тренировочный (с известным для решателей откликом) и тестовый с неизвестным откликом.
Данные
Тренировочная выборка содержит информацию о банковских займах, проданных коллекторскому агентству. Для каждого ID займа приведены его характеристики, характеристики просрочки по займу, а также информация о заемщике. Последний столбец содержит целевую переменную (1 – заемщик производит выплаты по долгу, 0 – заемщик не производит выплаты по долгу)
По заданному тренировочному набору данных (обучающей выборке) необходимо разработать алгоритм, который для каждого ID займа из тестовой выборки позволит спрогнозировать вероятность того, что заемщик будет производить выплаты по долгу.
Обязательные требования к алгоритму:
Aлгоритм должен работать таким образом, чтобы получая на вход тренировочный и тестовый наборы данных в формате SAS, строилась модель прогнозирования вероятности возврата «плохого» долга, построенная модель должна применяться к тестовой выборке и результат записываться в файл Results в формате SAS, содержащем 2 колонки: ID и Prob,
- где ID идентификатор заемщика,
- Prob – вероятность возврата долга.
Допустимой средой разработки является исключительно продукт SAS University Edition, который можно установить бесплатно, скачав по ссылке.
Обязательные требования к выполнению работы:
- Единственным доступным языком программирования является SAS Base (дополнительно участник может предоставить вариант на SAS IML)
- Единственной доступной для реализации модели библиотекой является SAS STAT (библиотека методов статистического анализа SAS)
- Использование других библиотек и инструментов, в том числе, подключаемых в SAS (таких как R) или поставляемых с другими продуктами SAS — недопустимо
- Использование внешних источников данных (например, находящейся в свободном доступе информации об экономическом состоянии регионов) допустимо, но должно явно указываться в описании алгоритма и не нарушать авторских и других прав обладателей информации.
http://algomost.com/ru/tasks/sas-collection-scoring
Удачи тем, кто решит поучаствовать в этом конкурсе!
Простой пример визуализации данных в R
Что-то давно никто не писал тут, походу все в отпусках. Раз так, то позволю себе написать пост про применение R для построения графиков. Данные будут взяты из предыдущего поста. Для этого можно пройти на страницу Wiki, скопировать и сохранить табличку в csv file: link.
Считываются данные одной строкой:
data <- read.table(«./AnscombeQuartet.csv», header = TRUE, sep =»,»)
После этого все столбцы доступны по соответствующему header name:
data$x1
Далее можно проверить статистики, соответствуют ли они заявленным значениям.
Сделать это можно двумя способами:
- Применить к каждому столбцу функцию: mean(data$x1), var(data$x1), ….
- Либо воспользоваться функцией sapply(). Это некий аналог функции map в функциональных языках программирования.
(sapply(data, mean); sapply(data, var)):
Все статистики совпадают с заявленными. Теперь построим графики:
Если нужно построить всего один график, то делается это очень просто;
plot(data$x1, data$y1, xlab = «x», ylab = «y») #xlab, ylab add label names
Но нам нужно пробежаться по всем столбцами и уместить все 4 графика в одну фигуру. Это можно сделать в цикле:
par(mfrow=c(2,2), mar=c(2.0, 1.5, 1.5, 1.5), oma = c(2,2,2,2), pch = 16)
for(i in 1:4){
x = eval(parse(text = paste( «data$x», i, sep=»» )))
y = eval(parse(text = paste( «data$y», i, sep=»» )))
plot( x, y )
abline( lm(y ~ x) )
grid( 10,10 )
}
Получаем график (на всякий случай в высоком разрешении: URL):
Пояснения:
- abline( lm(y ~ x) ) строит линейную модель. Сама функция lm() возвращает объект определенного класса, и для того чтобы построить выходные данные не нужно их специальным образом извлекать, потому как функция abline( ) сама распознает контекст.
- Функция grid() добавляет вертикальные и горизонтальные линии координатной сетки
- Функцией par( ) задаются расстояния от границ каждого графика до границ всей фигуры, также расстояния между своими фигурами, pch — вид маркера. Но можно было бы использовать dafault значения.
- mfrow() задает геометрию расположения графиков
Весь R код использованный при написании поста можно найти ТУТ.
О важности визуализации данных
Читая эту статью наткнулся на интересное замечание. В 1973 году английский математик Francis Anscombe привел пример того как немедленный статистический анализ данных(без предварительной визуализации) может привести к неправильным выводам о свойствах этих данных. На следующей картинке проиллюстрированы четыре набора данных с очень близкими значениями статистик:

Дисперсия переменной x = 11,0
Среднее значение переменной y = 7,50 (с точностью до двух значащих цифр после запятой)
Дисперсия переменной y = 4,122 или 4,127 (с точностью до трех значащих цифр после запятой)
Корреляция между переменными x и y = 0,816 (с точностью до трех значащих цифр после запятой)
Уравнение регрессии: y = 3,00 + 0.500 * x (с точностью до двух и трех значащих цифр после запятой соответственно)
Сами данные можно найти по ссылке : Wiki
PS: Как часто бывает, данные/определения в английской и русской версиях отличаются)
sas подгруппа на reddit
Всем добрый день.
По аналогии с английской reddit sas-подгруппой я зарегистрировал ветку reddit.com/r/sas_ru, предназначенную для обсуждений на русском языке.
Несколько первых возможно кому-то полезных линков:
- Создание ggplot2 графиков в SAS
- SAS Unit testing фреймворк
- Сравнение моделей регрессионного анализа, деревьев решений и нейронных сетей для прогнозирования объемов потребления электроэнергии
- Компиляция и запуск Java/Groovy кода из SAS
Так же создан FAQ, предложения по наполнению которого приветствуются (пишите либо тут в комментариях, либо там (для регистрации не нужен даже e-mail)).
Чего не хватает SAS?
В предыдущем посте Николай рассказал про новые планируемые фичи и улучшения в линейке продуктов SAS в ближайший год. Можно заметить что довльно часто встречается словоcочетание Visual Analytics / Statistics. На демо видео примерно видно как оно работает через интерфейс браузера.
Как плюс выделено — «no coding required«. На мой взгляд это удобно только на первых порах и быстро появляется необходимость писать код.
Между написанием кода и чистым visual analytics существует (с точки зрения рабочего процесса) промежуточный слой, который можно увидеть в некоторых программах — это interactive mode. Вот этого на мой взгляд не хватает для наиболее комфортной работы в sas (для задач связанных с анализом данных). Interactive mode позволяет одновременно писать код и делать визуальный анализ «на лету», менять код/настройки и моментально получать результат, тестировать гипотезы и делать новые эксперименты. В некоторых программах это основной способ работы, например в Wolfram Language (это не реклама, сам пользовался Mathematica последний раз много лет назад):
https://www.youtube.com/watch?v=_P9HqHVPeik
С одной стороны это может быть связано со свойствами самого языка SAS Base, что его проблемно приспособить к интерактивной работе. Но с другой стороны есть уже давно SAS/IML через который можно вызывать R функции, а R в свою очередь очень хорошо справляется с интерактивностью.
Curse of dimensionality
Так называемое «проклятие размерности (curse of dimensionality)» это явление накладывающее серьзные ограничения на классификаторы основанные на оценке локальных свойств плотности вероятности наблюдений в многомерных данных. Одним из наиболее простых и интуитивно понятных методов классификации является метод k ближайших соседей. Класс к которому принадлежит объект определяется наиболее распространенным классом среди наблюдений в прилежащей локальной области:
