Приветствую!
Стало любопытно, насколько представлена тема Data Mining на хабре. Увидел лишь одну статью, посвященную данной тематике. Хочу сделать свой небольшой вклад в развитие данной темы.
Исторически сложилось, что у термина Data Mining есть несколько вариантов перевода:
Если говорить о способах реализации, то первый вариант относиться к прикладной области, второй — к математике и науке, и, как правило, они мало пересекаются. Если говорить о возможности применения — тут вариантов очень много. Так получилось, что я работал как с первым вариантом (в университете — научная работа), так и с другим (работа, фриланс). Рассмотрим подробнее.
Извлечение данных — это процесс нахождения, сбора информации, а также сохранения (конвертация) их в разных форматах. По простому, программы для извлечения данных называют парсерами (parser), граберами (grabber), спайдерами (spider), кроулерами (crawler) и т.д. Фактически, такие программы существенно облегчают всем жизнь, так как позволяют систематизировать данные (именно данные, а не знания!). Такие программы могут собирать адреса компаний в вашей отрасли, ссылки из нужных форумов, парсить целые каталоги, также могут служить отличным средством для составления баз данных.
Занимаясь этим долгое время, могу сказать, что применений data mining в этом смысле очень много. Как правило, данные берутся из открытых источников, не нарушая чьих-то интеллектуальных прав.
Примеры:
В основном, это «список», «каталог», «база» чего-то, что необходимо вам в данный момент.
В следующих публикациях расскажу об реальных примерах более подробнее.
Суть «извлечения знаний»: у нас есть огромные массивы данных, нам нужно получить знания. Пример из жизни: у нас есть очень много данных о котировках валют Forex (очень много — это порядка нескольких гигабайт текстовой информации в день). Так вот, текстовые файлы и есть данные, а вот утверждение «падение акции А приводит к падению акции В» уже является знанием, полученным на основании этих данных. Не нужно говорить, что наличие удобных инструментов получения такого рода знаний помогло бы не одному менеджеру при принятии решений.
Основные категории Data Mining:
Я бы еще отнес сюда регрессионный, многофакторный и другие анализы, так как с их помощью тоже можно решать похожие задачи. Каждая из этих категорий имеет свой математический и алгоритмический аппарат и позволяет решать определенный круг задач.
Если честно, не совсем густо, но все же:
Остальное — это разбросанные по всей сети отрывки данных, примеров и кода.
Будучи .NET разработчиком, мне были нужны примеры реализованных алгоритмов на этом языке, но в 90% случаях это был либо С++ (в основном под Linux), либо Java. Проблема отсутствия примеров на C# (или VB.NET) заставляла писать все самому.
Больше всего хотелось систематизировать то, что у меня было и то, что я сумел найти в просторах интернета. Таким образом появился open source проект на codeplex под названием Data Mining Source Code и как небольшое пояснение к этому проекту — «Data Minig Source Code Blog». Там есть исходники на C#, VB.NET, Java и JavaScript, хотя больше всего исходников на C#. К нему есть дополнительный проект Numerical Methods on C#, который реализует большое количество численных методов.
Проекты не является коммерческими, мне просто это нравилось (а еще нужно было учиться в университете), поэтому и выкладываю их в открытый доступ. Проекты живут и сейчас, над ними работают студенты, которым необходимо получить опыт программирования, поэтому если у кого то завалялись исходники или есть желание изучить алгоритмы и методы — можете присоединяться, присылать свои наработки.
Ну и в конце мне хочется спросить, насколько интересная данная тема и о чем из вышеупомянутого вы хотели бы почитать более подробнее?
Стало любопытно, насколько представлена тема Data Mining на хабре. Увидел лишь одну статью, посвященную данной тематике. Хочу сделать свой небольшой вклад в развитие данной темы.
Исторически сложилось, что у термина Data Mining есть несколько вариантов перевода:
- извлечение данных
- извлечение знаний, интеллектуальный анализ данных
Если говорить о способах реализации, то первый вариант относиться к прикладной области, второй — к математике и науке, и, как правило, они мало пересекаются. Если говорить о возможности применения — тут вариантов очень много. Так получилось, что я работал как с первым вариантом (в университете — научная работа), так и с другим (работа, фриланс). Рассмотрим подробнее.
Извлечение данных
Извлечение данных — это процесс нахождения, сбора информации, а также сохранения (конвертация) их в разных форматах. По простому, программы для извлечения данных называют парсерами (parser), граберами (grabber), спайдерами (spider), кроулерами (crawler) и т.д. Фактически, такие программы существенно облегчают всем жизнь, так как позволяют систематизировать данные (именно данные, а не знания!). Такие программы могут собирать адреса компаний в вашей отрасли, ссылки из нужных форумов, парсить целые каталоги, также могут служить отличным средством для составления баз данных.
Занимаясь этим долгое время, могу сказать, что применений data mining в этом смысле очень много. Как правило, данные берутся из открытых источников, не нарушая чьих-то интеллектуальных прав.
Примеры:
- составление списка банков какой-то страны
- составление базы школьных заведений
- список сайтов по определенной тематики
В основном, это «список», «каталог», «база» чего-то, что необходимо вам в данный момент.
В следующих публикациях расскажу об реальных примерах более подробнее.
Извлечение знаний
Суть «извлечения знаний»: у нас есть огромные массивы данных, нам нужно получить знания. Пример из жизни: у нас есть очень много данных о котировках валют Forex (очень много — это порядка нескольких гигабайт текстовой информации в день). Так вот, текстовые файлы и есть данные, а вот утверждение «падение акции А приводит к падению акции В» уже является знанием, полученным на основании этих данных. Не нужно говорить, что наличие удобных инструментов получения такого рода знаний помогло бы не одному менеджеру при принятии решений.
Основные категории Data Mining:
- кластеризация данных (разделение объектов на подобные группы)
- классификация данных (отнесение объектов к заранее определенным группам)
- нейронные сети, генетические алгоритмы (универсальные оптимизаторы)
- ассоциативные правила (правила виду «если… то...»)
- деревья решений
- анализ временных рядов
Я бы еще отнес сюда регрессионный, многофакторный и другие анализы, так как с их помощью тоже можно решать похожие задачи. Каждая из этих категорий имеет свой математический и алгоритмический аппарат и позволяет решать определенный круг задач.
Что мы имеем на данный момент?
Если честно, не совсем густо, но все же:
- Data Mining включен в Microsoft SQL Server 2008 + интеллектуальная надстройка для Microsoft Office 2007.
- Что-то есть в Oracle, но сам не пробовал
- Weka — open source проект на Java
- Сайт о Data Mining — но, что-то по настоящему полезное найти мне там не удалось :(
Остальное — это разбросанные по всей сети отрывки данных, примеров и кода.
Data Mining Source Code
Будучи .NET разработчиком, мне были нужны примеры реализованных алгоритмов на этом языке, но в 90% случаях это был либо С++ (в основном под Linux), либо Java. Проблема отсутствия примеров на C# (или VB.NET) заставляла писать все самому.
Больше всего хотелось систематизировать то, что у меня было и то, что я сумел найти в просторах интернета. Таким образом появился open source проект на codeplex под названием Data Mining Source Code и как небольшое пояснение к этому проекту — «Data Minig Source Code Blog». Там есть исходники на C#, VB.NET, Java и JavaScript, хотя больше всего исходников на C#. К нему есть дополнительный проект Numerical Methods on C#, который реализует большое количество численных методов.
Проекты не является коммерческими, мне просто это нравилось (а еще нужно было учиться в университете), поэтому и выкладываю их в открытый доступ. Проекты живут и сейчас, над ними работают студенты, которым необходимо получить опыт программирования, поэтому если у кого то завалялись исходники или есть желание изучить алгоритмы и методы — можете присоединяться, присылать свои наработки.
Ну и в конце мне хочется спросить, насколько интересная данная тема и о чем из вышеупомянутого вы хотели бы почитать более подробнее?