Недавно закончил читать первое издание Web Data Mining от Bing Liu и спешу поделиться впечатлениями.
Если вкратце, то книга отличная как введение в область дата майнинга. В ней отлично гармонируют (почти во всех главах) как теоретическая состовляющая так и практическая.
Теперь поподробнее. В книге освещены следующие темы:
- ассоциативные правила (очень хорошо описано, особенно априорный алгоритм)
- машинное обучение (с учителем, без и половинчатая) - все алгоритмы описаны достаточно подробно
- основные части поиска (достаточно беглый обзор): ранжирование, сбор, анализ линков и пользовательских кликов
- извлечение структуритрованной информации из дикого веба (в частности wrapper induction, multiple alignment)
- извлечение мнения из текста (естественно английского)
Все алгоритмы приведены на удобном псевдоязыке так что нет необходимости знать какой-то определенный ЯП. Английский язык простой. В первых главах автор даже приводит какие-то теоремы с доказательствами )).
В общем книга предлагает отличные теоретические базовые знания в этой области - за практическими же знаниями добро пожаловать сюда.
суббота, 5 мая 2012 г.
понедельник, 9 апреля 2012 г.
Программируем Коллективный разум.
- байесовский классификатор
- деревья решений
- нейронные сети
- метод опорных векторов
- k-ближайших соседей
- кластеризация - иерархическая и методом k-средних
- многомерное шкалирование
- неотрицательная матричная факторизация
- оптимизация методом отжига и генетическим алгоритмом
- генетическое программирование
Книга написано в достаточно интересном стиле - в начале дается короткое введение в проблему, затем небольшой теоретический экскурс, за ним пример решения конкретной задачи по шагам и параллельно пишется решение алгоритма, а в конце решение другой задачи (возможно побольше) с помощью уже построенных функций. Все примеры на Python с активным привлечением сторонних библиотек и API различных сайтов. Сами примеры подобраны максимально жизненно, что добавляет чтению определенного перца. Вообще книга может так же служить отличным примером, и даже учебником, по использованию python (и вообще дин. языков) для быстрого прототипирования решений.
В главе 12 дается отличный обзор всех алгоритмов в компактном виде - для обзора это просто идеально. В приложениях можно найти описания используемых библиотек и мат. формул (довольно тривиальных, но освежить никогда не помешает).
В целом книга отличная - если хотите быстро разобраться с машинным обучением - самое то. И неожиданно хороша в качестве примера быстрой разработки на python.
воскресенье, 29 января 2012 г.
Планы на ближайшие месяцы
Меня на работе попросили описать свои планы личного (около рабочего) развития. Обычно у меня довольно много всяких подобных планов (не все из которых, к сожалению, реализуются), но формализовать и рассказать их кому то еще кажется хорошей идеей. Итак начнем:
1. Расширить свои теоретические познания в области data mining. В списке сейчас 3 книги:
- Web Data Mining от Bing Liu (прочитано 70%). Отличное введение в майнинг и поисковые технологии
- Программируем коллективный разум отТоби Сегаран (просчитано 10%). Книга с практическим уклоном с периметрами на python.
- Введение в информационный поиск от Маннинга и компания. Чем то похоже на первую книгу - читать пока не начал.
2. Написать свое первое приложение для iOS и выложить в стор. Кажется что это будет очень интересно - во всяком случае первые впечатления от документации Apple оставили очень принятые впечатления. Objective C пока кажется несколько странным, но посмотрим...
3. Углубить знания в области Python. Все скрип ты писать исключительно на нем (вместо Perl) и изучить недавно купленный справочник по сему очень интересному языку.
Из планов которые находятся во второй очереди по приоритетам:
4. Продолжать изучать Java.
- дочитать двухтомник Хортсманна Java 2 (первый почитан на 80%)
- продолжить изучение IntellyJ IDE
- возможно достанется какой-то проект на нем что-бы по практиковаться
5. Попасть на конференцию по интересующим сейчас тематикам (C++, mining, high load computations, iOS).
6. Попробовать реанимировать изучение English - перед этим придется найти стимул для этого.
7. Дождаться ту пару книжек по boost которые я заказал и прочитать их.
Уф, ну вроде на ближайшие 3-4 месяца интересных занятий мне хватит.
понедельник, 23 января 2012 г.
wiki и производительность труда
Совершенно случайно открыл для себя удивительно продуктивный способ увеличить КПД на работе.
Небольшое вступление. У нас в процессе работы активно используется wiki для очень многих вещей - описание продуктов, процессов, задач, планов и т.п. Эта wiki достаточно продвинута - например можно написать:
с кем:логин
и в итоге это, при просмотре, преобразуется в
c Васей Пупкиным.
Или можно напсать номер тикета из jira:
MINIVERTIS-12
и он преобразуется в
MINIVERTIS-12[ --Создание очередной поделки-- ]( логин ).
Естественно поддерживаются всякие подсветки синтаксиса, списки, таблицы, автоматическое оглавление и т.п.
Так вот, все это очень удобно применять для протоколирования своей деятельности за день - какие тикеты закрыл, что почитал, с кем говорил, кому проиграл в настольный теннис ;). Например вот такой у меня получился лог за несколько дней:
(естественно все логины изменены). В результыте имею такую выдачу:
Небольшое вступление. У нас в процессе работы активно используется wiki для очень многих вещей - описание продуктов, процессов, задач, планов и т.п. Эта wiki достаточно продвинута - например можно написать:
с кем:логин
и в итоге это, при просмотре, преобразуется в
c Васей Пупкиным.
Или можно напсать номер тикета из jira:
MINIVERTIS-12
и он преобразуется в
MINIVERTIS-12[ --Создание очередной поделки-- ]( логин ).
Естественно поддерживаются всякие подсветки синтаксиса, списки, таблицы, автоматическое оглавление и т.п.
Так вот, все это очень удобно применять для протоколирования своей деятельности за день - какие тикеты закрыл, что почитал, с кем говорил, кому проиграл в настольный теннис ;). Например вот такой у меня получился лог за несколько дней:
=== 19* разбирался с проблемами индексации в работе. Такая конфигурация работает, но надо доп. проверки:%%common_title : job_name,company_name_ : _%%* работал над MINIVERTIS-12 - релевантность уже прокидывается в protobuf. Осталось получить неплохое число для него* помогал кому:логин с пакетом для тезауруса* совещался с кем:1, кем:2, кем:3 по поводу нового проекта спецсниппетов для законов. Пока больше вопросов чем ответов. Точно придутся поднимать бету среднего. Свой визард. Возможно даже базовый.=== 20* говорил с кем:логин1 - он будет помогать нам встраиваться в бленднер. Запросил для него права.* совещался с кем:1, кем:2, кем:3, кем:4, кем:5 по поводу законов. с меня json после получ. тикета от Лены. prewalrus сильно менять не надо будет.* хурал. скоро релиз дин. аттрибутов* говорыл с кем:6 - обещал все на след. недели* подготовил серп для постройки идеальной выдачи* почти готов MINIVERTIS-12 - остались мелкие штрихи=== 23* готов MINIVERTIS-12 - выкачен на сервер* консультировал кого:логин по поводу работы с dsindexer* подробоно отвечал на вопросы Сегаловича по сервису поиска по мобильным приложениям* переделал серп для идеальной выдачи
(естественно все логины изменены). В результыте имею такую выдачу:
Все получается очень быстро и красиво. И самое главное - это все позволяет мне теперь успевать в день сделать намного больше вещей чем я делал раньше. Так что все советую - наверняка можно найти кучу удобных инструментов для этого дела, даже если у вас на работе нет такой продвинутой вики.
понедельник, 16 января 2012 г.
Emacs и style guide
У нас на работе для части (основной) С++ кода поменялся style guide - добавлися pre-commit hook, который запрещает коммитить файлы, в которых есть пробелы в конце строки. Оказалось что в моем любимом emacs справиться с данной напастью оказалось очень легко. Помог отличный пакет
show-wspace, который уже был установлен. Осталось только добавить строку
и вуаля - все проблемные строки сразу подсвечиваются.
Все настройки для emacs можно найти тут:
emacs-configuration (сам файл для посдветки пробелов находится тут: ai/colorize.el
up.
Как мне напомнили в комментах (спасибо Ваня!) можно еще автоматически удалять пробелы при сохранении файла. Сделать это только для С/С++ режима можно так:
show-wspace, который уже был установлен. Осталось только добавить строку
(add-hook 'c-mode-common-hook 'show-ws-highlight-trailing-whitespace)
и вуаля - все проблемные строки сразу подсвечиваются.
Все настройки для emacs можно найти тут:
emacs-configuration (сам файл для посдветки пробелов находится тут: ai/colorize.el
up.
Как мне напомнили в комментах (спасибо Ваня!) можно еще автоматически удалять пробелы при сохранении файла. Сделать это только для С/С++ режима можно так:
(add-hook 'c-mode-common-hook(lambda()(add-hook 'local-write-file-hooks'(lambda()(save-excursion(delete-trailing-whitespace))))))
воскресенье, 15 января 2012 г.
Новый способ ведения блога
Купил BlogPress для iPad - вроде на первый взгляд удобно. Будем надеяться, что это поможет реанимировать блог - благо многое прочитал и многое написал - есть что рассказать. Всех с наступившим НГ!
понедельник, 10 января 2011 г.
Процесс программирования с псевдокодом
Совершенный код рекламирует подход к написанию функций называемый "Процесс программирования с псевдокодом". Упрощенная суть его в том, что в начале описывается работа функции в виде обычного текста, а затем этот текст преобразуется в комментарии и под каждым из них записывается реальный код. Плюс данного подхода заключается в том, что значительно упрощается процесс написания сложной функции, и к тому же она сразу получается хорошо задокументированной. В процессе реального использования данного подхода я понял, что мне не хватает возможности по преобразованию моего описания функции в комментарий с сохранением отступов. В результате в моем конфигурационном файле emacs я написал следующий код:
(defun my-ppp-comment-region (top bottom)
""
(interactive "r")
(setq macro [home ?\M-m ?\C-z ?/ ?\C-z ?/ ? ])
;; (apply-macro-to-region-lines top bottom macro
(save-excursion
(let ((end-marker (copy-marker bottom))
next-line-marker)
(goto-char top)
(if (not (bolp))
(forward-line 1))
(setq next-line-marker (point-marker))
(while (< next-line-marker end-marker)
(goto-char next-line-marker)
(save-excursion
(forward-line 1)
(set-marker next-line-marker (point)))
(unless (looking-at "[ \t]*$")
(save-excursion
(let ((mark-active nil))
(execute-kbd-macro (or macro last-kbd-macro)))))
);;while
(set-marker end-marker nil)
(set-marker next-line-marker nil))))
(defun my-ppp-comment-region (top bottom)
""
(interactive "r")
(setq macro [home ?\M-m ?\C-z ?/ ?\C-z ?/ ? ])
;; (apply-macro-to-region-lines top bottom macro
(save-excursion
(let ((end-marker (copy-marker bottom))
next-line-marker)
(goto-char top)
(if (not (bolp))
(forward-line 1))
(setq next-line-marker (point-marker))
(while (< next-line-marker end-marker)
(goto-char next-line-marker)
(save-excursion
(forward-line 1)
(set-marker next-line-marker (point)))
(unless (looking-at "[ \t]*$")
(save-excursion
(let ((mark-active nil))
(execute-kbd-macro (or macro last-kbd-macro)))))
);;while
(set-marker end-marker nil)
(set-marker next-line-marker nil))))
и затем добавил
(define-key c-mode-base-map (kbd "C-M-;") 'my-ppp-comment-region)
в
c-mode-common-hook
например так:
(defun my-c-mode-common-hook ()
;; включить режимы auto-newline и hungry-delete
(c-toggle-auto-hungry-state 1)
(flyspell-prog-mode);;включаем проверку правописания в комментариях и строках
(ispell-change-dictionary "american")
;; работает как C-j
(define-key c-mode-base-map "\C-m" 'c-context-line-break)
;;добавлеям комментарии для Проектирования с Помощью Псевдокода
(define-key c-mode-base-map (kbd "C-M-;") 'my-ppp-comment-region)
...
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
в результате по C-M-; мое описание волшебным образом превращается в готовый комментарий к функции.
Подписаться на:
Сообщения (Atom)


