Как стать автором
Обновить
1
0
Александр Косенков @kosiakk

Пользователь

Отправить сообщение

Вероятностные модели: байесовские сети

Время на прочтение8 мин
Количество просмотров87K
В этом блоге мы уже много о чём поговорили: были краткие описания основных рекомендательных алгоритмов (постановка задачи, user-based и item-based, SVD: 1, 2, 3, 4), о нескольких моделях для работы с контентом (наивный Байес, LDA, обзор методов анализа текстов), был цикл статей о холодном старте (постановка задачи, текстмайнинг, теги), была мини-серия о многоруких бандитах (часть 1, часть 2).

Чтобы двигаться дальше и поместить эти и многие другие методы в общий контекст, нам нужно выработать некую общую базу, научиться языку, на котором разговаривают современные методы обработки данных, – языку графических вероятностных моделей. Сегодня – первая часть этого рассказа, самая простая, с картинками и пояснениями.


Читать дальше →

Построение системы оптического распознавания структурной информации на примере Imago OCR

Время на прочтение19 мин
Количество просмотров37K
В настоящей заметке я расскажу о том, как можно построить систему оптического распознавания структурной информации, опираясь на алгоритмы, применяющиеся в обработке изображений и их реализации в рамках библиотеки OpenCV. За описанием системы стоит активно развивающийся open source проект Imago OCR, который может быть непосредственно полезен в распознавании химических структур, однако в заметке я не буду говорить о химии, а затрону более общие вопросы, решение которых поможет в распознавании структурированной информации различного рода, например таблицы или графики.
Читать дальше →

Энтропия и деревья принятия решений

Время на прочтение8 мин
Количество просмотров121K
Деревья принятия решений являются удобным инструментом в тех случаях, когда требуется не просто классифицировать данные, но ещё и объяснить почему тот или иной объект отнесён к какому-либо классу.

Давайте сначала, для полноты картины, рассмотрим природу энтропии и некоторые её свойства. Затем, на простом примере, увидим каким образом использование энтропии помогает при создании классификаторов. После чего, в общих чертах сформулируем алгоритм построения дерева принятия решений и его особенности.
Читать дальше →

Yet Another Rating System

Время на прочтение8 мин
Количество просмотров24K
Итак, тема рейтинговых систем продолжает будоражить умы хабрапользователей. Появляются всё новые и новые схемы, формулы, тесты. И каждый раз всё сводится к одному и тому же вопросу: как совместить среднюю оценку пользователей с нашей уверенностью в этой оценке. Например, если один фильм получил 80 положительных и 20 отрицательных голосов, а другой — 9 положительных и 1 отрицательный, то какой из фильмов лучше? Не претендуя на создание новой универсальной рейтинговой системы, я всё же предложу один из возможных подходов к решению именно этого вопроса.
Читать дальше →

Психологический тест для оценки IT-продукта, или в чем Habrahabr уступает Facebook

Время на прочтение6 мин
Количество просмотров37K
Пробовали ли вы оценивать свой IT-продукт с психологической точки зрения? Такая оценка может основываться на общей психологии и включать эргономическое тестирование, может основываться на когнитивной психологии и задействовать теорию познания и принятия решений, может основываться на теории деятельности и анализировать пользовательские сценарии, может основываться на психологии научения и бихевиоризме и анализировать продукт с точки зрения геймификации…

Но отдельный очень важный раздел психологии – это психология личности, включающая теории личностных потребностей и психологических защит. Из-за сложности и большого количества иногда противоречащих друг другу концепций, эту область редко используют в качестве источника идей и ограничений при разработке IT-продуктов. Однако психология личности дает очень много возможностей для понимания и предсказания поведения пользователей.

Предлагаю вариант методики для оценки IT-продукта, созданный на основе компиляции различных теорий личностных потребностей.
Тест оценивает, насколько продукт может удовлетворить 10 наиболее распространенных потребностей личности.
Этот тест можно использовать не только для оценки продукта, но и как чек-лист при поиске идей в разработке IT-продуктов.

Описание теста.
Для каждой потребности предложено по 5 вопросов о продукте.
Читать дальше →

Генератор энтропии Seeder 1.1 существенно уменьшает лаги на Android-устройствах

Время на прочтение2 мин
Количество просмотров142K
В старых версиях Android некоторые системные компоненты и JVM активно считывали большие объёмы случайных чисел из псевдоустройства /dev/random. Это устройство предоставляет интерфейс к системному генератору случайных чисел (ГСЧ), который выводит шумы из драйверов устройств и других источников в «хаотичный» пул. На старых версиях Android иногда возникали проблемы с наполнением пула случайных чисел. В случае опустошения пула возникали лаги UI, пока пул не наполнялся. В новых версиях Android проблему с лагами UI решили, но не до конца: всё-таки иногда возникают характерные задержки.

Многие пользователи считали, что лаги интерфейса объясняются недостаточной производительностью CPU, на самом деле это не так. Проблема именно в истощении пула случайных чисел.

Один из разработчиков с форума XDA-Developers перекомпилировал rngd, так что пул случайных чисел каждую 1 секунду пополняется из пула псевдослучайных чисел /dev/urandom. Результат — потрясающее ускорение интерфейса Android с почти полным исчезновением лагов! Chrome, карты и другие тяжеловесные приложения теперь мгновенно переключаются между задачами.
Читать дальше →

Директивы в AngularJS

Время на прочтение7 мин
Количество просмотров83K
Директивы — это ключевая особенность AngularJS. С помощью директив можно добавлять новое поведение существующим HTML элементам, можно создавать новые компоненты. Примерами директив, добавляющих новое поведения для существующих HTML элементов, могут служить input, select, textarea в связке с ngModel, required и т.п. Перечисленные директивы в основном связаны с валидацией форм в AngularJS. Но тема валидации заслуживает отдельной статьи.

Директивы можно и нужно использовать для повышения модульности вашего приложения, выделения обособленной функциональности в компоненты, в том числе и для повторного использования.

Если вы разрабатываете приложение на AngularJS и не создаете директивы, то это уже само по себе немного настораживает. Либо ваше приложение достаточно простое и уложилось в стандартные возможности AngularJS, либо, скорее всего, что-то не так с архитектурой вашего приложения. А если у вас при этом есть работа с DOM-ом в контроллерах или сервисах, то вам однозначно надо разбираться с темой создания директив, т.к. манипуляций с DOM-ом не должно быть нигде, кроме директив.

В данной статье я постараюсь рассмотреть процесс создания собственных директив на нескольких примерах.

Читать дальше →

Параллельное программирование с помощью вычислительного графа

Время на прочтение10 мин
Количество просмотров29K
Есть приложения, которые хорошо реализуются как системы передачи сообщений. Сообщениями в широком смысле может быть что угодно – блоки данных, управляющие «сигналы» и т.д. Логика же состоит из узлов, обрабатывающих сообщения, и связей между ними. Такая структура естественно представляется графом, по рёбрам которого «текут» сообщения, обрабатываемые в узлах. Наиболее устоявшееся название такой модели – вычислительный граф.

С помощью вычислительного графа можно установить зависимости между задачами и в какой-то мере программно реализовать «dataflow архитектуру».

В этом посте я опишу, как реализовать такую модель на С++, используя библиотеку Intel Threading Building Blocks (Intel TBB), а именно класс tbb::flow::graph.


Читать дальше →

Прекратите скручивать (восклицательный знак)

Время на прочтение6 мин
Количество просмотров1.7M
Ну действительно, прекратите. Есть куча прикольных штук для соединения самых разнообразных проводов, а все равно технология «откусить зубами изоляцию, скрутить, замотать изолентой» жива до сих пор.

Дальше много текста, фотографий, разборок. Ну все как обычно

Почта без оленей

Время на прочтение10 мин
Количество просмотров55K
Этот пост для тех, кому интересно, как в Яндексе создаются интерфейсы продуктов с многомиллионной аудиторией. Мы хотим максимально подробно рассказать, почему решили создать новую почту Trinity, чем руководствовались в работе над ее дизайном, поделиться с вами решением логических проблем.

На самые популярные и важные вопросы дизайнер нового интерфейса Анна Котляревская ответила в интервью:



Читайте и смотрите, почему мы осмелились убрать рекламу, почему нет групповых операций, куда делись ссылки на другие сервисы, почему нельзя отключить группировку писем по теме — и многое другое.



Читать дальше →

Улучшение субъективной скорости работы сайта при помощи подсказок браузеру

Время на прочтение4 мин
Количество просмотров39K
Я удивлен, что эта техника упоминалась на Хабре только один раз и вскользь — если верить поиску, конечно.
Меня не покидает ощущение, что на самом деле все про это знают, но я всё же расскажу.

Суть в том, что браузеру можно подсказать, какую страницу пользователь откроет следующей — и он начнет её загружать заранее.

Делается это несложно — нужно всего-то добавить пару мета-тегов в head:

<link rel="prefetch" href="NEXT PAGE URI" />
<link rel="prerender" href="NEXT PAGE URI" />


Теперь подробнее про ограничения и нюансы.
Читать дальше →

Yet another classifier

Время на прочтение8 мин
Количество просмотров12K

Вместо вступления


Лень — двигатель прогресса. Не хочешь сам молоть зерно — сделай мельницу, не хочешь сам кидать во врагов камни — сооруди катапульту, надоело гореть на кострах инквизиции и гнуть спину под феодалом — замути с ребятами ренессанс… впрочем, о чем это я.
Автоматизация, господа. Берешь какой-нибудь полезный процесс, в котором участвует человек, заменяешь человека на сложный механизм, получаешь профит. Относительно недавно также стало модно заменять человека куском кода. О, сколько благородных профессий может пасть под натиском информатизации. Особенно если учесть, что кусок кода в наше время способен не только на заранее определенное поведение, но и на «обучение» какому-то поведению.
Читать дальше →

The Modal — правильные модальные окна

Время на прочтение2 мин
Количество просмотров180K
Очень часто модальные окна и диалоги делаются при помощи плагинов jQuery. Например, SimpleModal или jqModal. К сожалению, все они, в варианте по умолчанию, работают неправильно.

Что же такое «правильно»?

Модальное окно по определению блокирует работу пользователя с родительским окном до тех пор, пока пользователь его не закроет. То есть:

  1. Пользователю нельзя позволять прокручивать страницу под ним.
  2. При этом, если содержимого в модальном окне очень много, нужно позволить прокручивать содержимое.


По этому принципу работает просмотр фото в Facebook и Вконтакте и, я считаю, что для модальных окон это правильный вариант.

Чтобы не мучать вас заранее деталями реализации, покажу сначала демо плагина jQuery: http://rmcreative.ru/playground/modals_plugin/demo.html.

Ну а теперь немного про реализацию.
Читать дальше →

User experience design: как построить сайт для клиентов, а не для себя

Время на прочтение8 мин
Количество просмотров76K
В конце апреля я делал доклад на РИФ 2012 про этапы проектирования пользовательского интерфейса. Так как видео нет, попробую представить доклад в виде слайдов с моими комментариями.

UX

Я расскажу как процесс разработки сайта или приложения выглядит с точки зрения дизайнера. Как вы сможете только за счет интерфейса улучшить впечатление пользователя от вашего стартапа.

Читать дальше →

Универсальный ImageLoader для Android

Время на прочтение4 мин
Количество просмотров31K
В этой статье Я расскажу о разработанном мной (и не только) инструменте для асинхронной подгрузки изображений, их кэширования и отображения. На данном этапе развития его можно использовать повсеместно, где надо загрузить картинку в ImageView из интернета или из файловой системы. Все, что нужно, это URL картинки (для файловой системы он будет начинаться на «file://») и собственно ImageView, в который загруженную картинку надо будет положить. Более подробно о возможностях универсального разработанного ImageLoader'а читайте ниже.
Читать дальше →

TOP 7 – за 7 дней. Маркетинг iPad приложений на Apple Store

Время на прочтение3 мин
Количество просмотров9.5K
Начну не с самих методов раскрутки, а с подготовки, что является не менее важным, чем сама раскрутка и продвижение приложения. Сразу оговорюсь, что привожу в пример только платные приложения и российский Apple Store.

image
Читать дальше →

Дерево Фенвика

Время на прочтение3 мин
Количество просмотров55K
Здравствуй, Хабрахабр. Сейчас я хочу рассказать о такой структуре данных как дерево Фенвика. Впервые описанной Питером Фенвиком в 1994 году. Данная структура похожа на дерево отрезков, но проще в реализации.

Что это?


Дерево Фенвика — это структура данных, дерево на массиве, которая обладает следующими свойствами:
• позволяет вычислять значение некоторой обратимой операции F на любом отрезке [L; R] за логарифмическое время;
• позволяет изменять значение любого элемента за O(log N);
• требует памяти O(N);
Читать дальше →

Вопросы по продвижению приложений для Android

Время на прочтение5 мин
Количество просмотров9.9K
Недавно мой знакомый попросил меня ответить на несколько вопросов по продвижению приложений для Android. Мы договорлись, что я напишу пост. За последний год у меня сложилось определенное впечатление о работе на рынке Android Market. С удовольствием поделюсь своим мнением. Надеюсь, что мой опыт будет полезен разработчикам. Буду рад, если пост породит конструктивную дискуссию.
Читать дальше →

Обзор алгоритмов кластеризации данных

Время на прочтение10 мин
Количество просмотров449K
Приветствую!

В своей дипломной работе я проводил обзор и сравнительный анализ алгоритмов кластеризации данных. Подумал, что уже собранный и проработанный материал может оказаться кому-то интересен и полезен.
О том, что такое кластеризация, рассказал sashaeve в статье «Кластеризация: алгоритмы k-means и c-means». Я частично повторю слова Александра, частично дополню. Также в конце этой статьи интересующиеся могут почитать материалы по ссылкам в списке литературы.

Так же я постарался привести сухой «дипломный» стиль изложения к более публицистическому.
Читать дальше →

Прошивка DD-WRT на домашнем роутере

Время на прочтение11 мин
Количество просмотров318K

Прошивка DD-WRT на домашнем роутере


Это обзорная статья о том, какие возможность существуют у пользователя обычного домашнего роутера, и как этими возможностями воспользоваться.

Рано или поздно каждый пользователь интернета покупает себе домой роутер, поскольку количество устройств, требующих интернета, растёт. А у многих растут дети, которые тоже требуют подключения к интернету :) Но мне больно и обидно видеть, что люди не всегда понимают, что можно и нужно делать для достижения максимального комфорта.
Итак, роутер превращается... Часть 1

Информация

В рейтинге
Не участвует
Откуда
Швейцария
Дата рождения
Зарегистрирован
Активность