Как стать автором
Обновить

Как мы делаем скриншоты страниц

Время на прочтение 5 мин
Количество просмотров 25K
Блог компании Surfingbird
Привет!

Это наша первая статья на хабре, и в ней мы хотели бы рассказать вам о том, как мы делаем для своего сервиса красивые скриншоты страниц и как к этому пришли, на какие грабли наступали.

Сервис этот нам крайне важен для показа ленты обновлений. И чем быстрее и ближе к реальности (читай — поддержка флеша) он работает, тем приятнее пользователям.

   
Читать дальше →
Всего голосов 56: ↑37 и ↓19 +18
Комментарии 34

Рекомендательные системы: постановка задачи

Время на прочтение 5 мин
Количество просмотров 30K
Блог компании Surfingbird
Всем привет! Меня зовут Сергей, я математик, и я определяю развитие рекомендательной системы Surfingbird. Этой статьёй мы открываем цикл, посвящённый машинному обучению и рекомендательным системам в частности – пока не знаю, сколько в цикле будет инсталляций, но постараюсь писать их регулярно. Сегодня я расскажу вам, что такое рекомендательные системы вообще, и поставлю задачу чуть более формально, а в следующих сериях мы начнём говорить о том, как её решать и как учится наша рекомендательная система Tachikoma.

image

Читать дальше →
Всего голосов 32: ↑27 и ↓5 +22
Комментарии 22

Рекомендательные системы: user-based и item-based

Время на прочтение 5 мин
Количество просмотров 38K
Блог компании Surfingbird
Итак, в прошлый раз мы немного поговорили о том, что такое вообще рекомендательные системы и какие перед ними стоят проблемы, а также о том, как выглядит постановка задачи коллаборативной фильтрации. Сегодня я расскажу об одном из самых простых и естественных методов коллаборативной фильтрации, с которого в 90-х годах и начались исследования в этой области. Базовая идея очень проста: как понять, понравится ли Васе фильм «Трактористы»? Нужно просто найти других пользователей, похожих на Васю, и посмотреть, какие рейтинги они ставили «Трактористам». Или с другой стороны: как понять, понравится ли фильм «Трактористы» Васе? Нужно просто найти другие фильмы, похожие на «Трактористов», и посмотреть, как Вася их оценивал.


Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 17

Рекомендательные системы: SVD, часть I

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

image
Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 5

Рекомендательные системы: SVD и базовые предикторы

Время на прочтение 3 мин
Количество просмотров 29K
Блог компании Surfingbird
В прошлый раз я рассказал, пока в самых общих чертах, о сингулярном разложении – главном инструменте современной коллаборативной фильтрации. Однако в прошлый раз мы в основном говорили только об общих математических фактах: о том, что SVD – это очень крутая штука, которая даёт хорошие низкоранговые приближения. Сегодня мы продолжим разговор об SVD и обсудим, как же, собственно, использовать всю эту математику на практике.
image

Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 5

Рекомендательные системы: SVD на perl

Время на прочтение 3 мин
Количество просмотров 13K
Блог компании Surfingbird
В предыдущих сериях мы обсудили, что такое сингулярное разложение (SVD), и сформулировали модель сингулярного разложения с базовыми предикторами. В прошлый раз мы уже довели дело до конкретных формул апдейта. Сегодня я продемонстрирую очень простую реализацию очень простой модели, мы применим её к уже знакомой матрице рейтингов, а потом обсудим, какие получились результаты.


Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 3

Рекомендательные системы: оверфиттинг и регуляризация

Время на прочтение 3 мин
Количество просмотров 13K
Блог компании Surfingbird
Постоянно падающая популярность предыдущих публикаций побуждает предпринимать поступки, помогающие популярность поддержать. Приметил – популярность первых публикаций порядочно превышает последующие; поэтому попробую перезагрузиться.

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

Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 17

Рекомендательные системы — будущее интернета

Время на прочтение 3 мин
Количество просмотров 6K
Чулан
image

Недавно наткнулся на новомодный тренд: рекомендательные системы, — на конкретного его представителя Surfingbird (нет, я не сотрудник данной компании). Сразу встал вопрос, как я могу на этом заработать, не стоит ли готовиться к очередной смене схемы поведения пользователей в сети?

Почему так серьезно?

Читать дальше →
Всего голосов 38: ↑20 и ↓18 +2
Комментарии 47

Мобильные приложения от Surfingbird

Время на прочтение 2 мин
Количество просмотров 8K
Блог компании Surfingbird
Недавно мы наконец зарелизили приложение под Android, а ещё раньше приложение для iPad-а (а ещё раньше для iPhone, но мы про него не будем, оно страшное).
И вот, в принципе, просто хочется немного похвастаться.

iPad-приложение использует интерфейс, который нам кажется инновационным :-) Навигация по логически вложенным понятиям выглядит как слои интерфейса, накладывающиеся один на другой. Слайд вправо убирает текущий верхний слой, тап по нужному слою скрывает все верхние (иногда верхние слои закрывают нижние не целиком).

Навигация получается удобная, нам нравится. Выглядит примерно так (примерно 500КБ трафика):
Читать дальше →
Всего голосов 20: ↑10 и ↓10 0
Комментарии 38

Многорукие бандиты: введение и алгоритм UCB1

Время на прочтение 5 мин
Количество просмотров 50K
Блог компании Surfingbird Алгоритмы *
Туториал
Это первый пост из блога Surfingbird, который я выношу в общие хабы алгоритмов и искусственного интеллекта; честно говоря, раньше просто не догадался. Если интересно, заходите к нам, чтобы прочесть предыдущие тексты, – я не знаю, что произойдёт, если просто добавить новые хабы к постам несколькомесячной давности.

Краткое содержание предыдущих серий о рекомендательных системах:

В этот раз начинаем новую тему – о многоруких бандитах. Бандиты – это самая простая, но от этого только более важная постановка задачи в так называемом обучении с подкреплением


Читать дальше →
Всего голосов 41: ↑36 и ↓5 +31
Комментарии 13

Многорукие бандиты: модель dynamic Gamma-Poisson

Время на прочтение 5 мин
Количество просмотров 13K
Блог компании Surfingbird Алгоритмы *
Туториал
В прошлый раз мы рассмотрели общую постановку задачи о многоруких бандитах, обсудили, зачем это может быть нужно, и привели один очень простой, но эффективный алгоритм. Сегодня я расскажу о ещё одной модели, которая эффективна в ситуациях, когда ожидаемые доходы от бандитов меняются со временем, да и само число и состав «ручек» может меняться – о динамической гамма-пуассоновской модели.


Читать дальше →
Всего голосов 25: ↑23 и ↓2 +21
Комментарии 3

Surfingbird как инструмент привлечения новых пользователей

Время на прочтение 2 мин
Количество просмотров 6K
Блог компании Surfingbird
Сегодня мы анонсировали программу для паблишеров.
С ее помощью можно увеличить посещаемость сайта и привлечь новых пользователей.

Мы в Surfingbird считаем, что если вы делаете что-то, что по вашему мнению интересно, то об этом должен узнать кто-то еще :) Вы не должны писать в стол, вас должны читать, вашим сервисом должны пользоваться, и о вашем проекте должны узнавать все больше и больше людей. Так вы можете получать фидбек и корректировать свое развитие, а все остальные таким образом смогут открыть что-то новое для себя. Но многие площадки, блоги или сервисы очень часто испытывают трудности с поиском аудитории, особенно на начальном этапе. Своей партнерской программой и самой концепцией нашего рекомендательного сервиса мы стараемся решить эту проблему. Стараемся пробить этот барьер и взять на себе заботы по поиску аудитории для ваших проектов.
Читать дальше →
Всего голосов 11: ↑7 и ↓4 +3
Комментарии 4

Пятничный датамайнинг

Время на прочтение 2 мин
Количество просмотров 71K
Блог компании Surfingbird
Каждую пятницу мы заботливо собираем для наших пользователей рассылку. Эта рассылка не обычная, а только для тех, кто отметил в интересах эротику. Называется она “Пятничные сиськи”.

Каждую пятницу мы выбираем 15 лучших девушек, заворачиваем и отправляем нашим серферам. Работа всего офиса останавливается, чтобы оценить каждую по достоинству. Конечно же, у нас часто случается срач на тему “жопа у неё толстая vs жопа нормальная”, “большие сиськи vs маленькие сиськи” и т.д. Чтобы решать все наши споры, мы время от времени делаем внутреннюю аналитику. В сегодняшней статье мы расскажем тебе, хабраюзер, о нашем последнем исследовании и выводах из него.

image
Читать дальше →
Всего голосов 285: ↑165 и ↓120 +45
Комментарии 64

Рекомендательная система: полезные задачи текстмайнинга

Время на прочтение 4 мин
Количество просмотров 14K
Блог компании Surfingbird Алгоритмы *
Я продолжаю цикл статей по применению текстмайнинг-методов для решения различных задач, возникающих в рекомендательной системе веб-страниц. Сегодня я расскажу о двух задачах: автоматическое определение категорий для страниц из RSS-лент и поиск дубликатов и плагиата среди веб-страниц. Итак, по порядку.

Автоматическое определение категорий для веб-страниц из RSS-лент


Обычная схема добавления веб-страниц (вернее, ссылок на них) в Surfingbird такова: при добавлении новой ссылки пользователь должен указать до трёх категорий, к которым принадлежит эта ссылка. Понятно, что в такой ситуации задача автоматического определения категорий не стоит. Однако, кроме ручного добавления, ссылки попадают в базу и из RSS-потоков, которые предоставляют многие популярные сайты. Поскольку ссылок, поступающих через RSS-потоки, очень много, зачастую модераторы (а в этом случае именно они вынуждены проставлять категории) просто не справляются с таким объёмом. Возникает задача создания интеллектуальной системы автоматической классификации по категориям. Для ряда сайтов (например, lenta.ru или sueta.ru) категории можно вытащить непосредственно из rss-xml и вручную привязать к нашим внутренним категориям:

image
image
Читать дальше →
Всего голосов 40: ↑37 и ↓3 +34
Комментарии 10

Рекомендательная система: достаем теги пользователей из соцсетей

Время на прочтение 5 мин
Количество просмотров 11K
Блог компании Surfingbird Алгоритмы *
Сегодня я расскажу о том, как можно использовать данные о пользователях из социальных сетей для рекомендаций веб-страниц на холодном старте. Все приведенные в статье результаты носят чисто экспериментальный характер и в настоящий момент не реализованы в продакшене. Здесь, как и в прошлой статье, будут использоваться элементы текстмайнига для анализа текстового контента веб-страниц.

Сначала немного статистики для того, чтобы показать важность настоящего исследования. Около 50% пользователей нашей системы регистрируются с привязкой аккаунтов социальных сетей vkontakte (VK) и facebook (FB). Причем из зарегистрированных через социальные сети 71% приходится на VK и 29% на FB.

API FB и API VK позволяют извлекать некоторые данные об интересах и предпочтениях пользователя. Но не все так просто, как может показаться. Для получения данных пользователя нужно получить особые права, согласие на которые дает сам пользователь при регистрации в системе. Здесь возникает тонкий момент. С одной стороны, мы ходим вытянуть как можно больше информации о пользователе. С другой стороны, просить слишком много прав — наглость, которая может отпугнуть пользователя. Нужно найти компромисс — тонкое равновесие между полезностью получаемых данных для улучшения рекомендаций и «суммой» кредита доверия от пользователя, который соглашается, чтобы мы залезли в его персональные данные.
Читать дальше →
Всего голосов 17: ↑13 и ↓4 +9
Комментарии 5

Избавляемся от JavaScript в социальных кнопках (Facebook, VK, Twitter и др.)

Время на прочтение 5 мин
Количество просмотров 77K
Разработка веб-сайтов *CSS *JavaScript *HTML *
Туториал
Как мы избавились от JavaScript-библиотек социальных сетей, ускорили скорость загрузки страниц и использовали RESTful API для “шаринга” и “лайков”.


Читать дальше →
Всего голосов 78: ↑73 и ↓5 +68
Комментарии 44