Pull to refresh

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

Reading time 5 min
Views 25K
Surfingbird corporate blog
Привет!

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

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

   
Читать дальше →
Total votes 56: ↑37 and ↓19 +18
Comments 34

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

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

image

Читать дальше →
Total votes 32: ↑27 and ↓5 +22
Comments 22

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

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


Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 17

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

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

image
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 5

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

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

Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 5

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

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


Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Comments 3

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

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

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

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Comments 17

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

Reading time 3 min
Views 5.9K
Lumber room
image

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

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

Читать дальше →
Total votes 38: ↑20 and ↓18 +2
Comments 47

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

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

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

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

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

Reading time 5 min
Views 49K
Surfingbird corporate blog Algorithms *
Tutorial
Это первый пост из блога Surfingbird, который я выношу в общие хабы алгоритмов и искусственного интеллекта; честно говоря, раньше просто не догадался. Если интересно, заходите к нам, чтобы прочесть предыдущие тексты, – я не знаю, что произойдёт, если просто добавить новые хабы к постам несколькомесячной давности.

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

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


Читать дальше →
Total votes 41: ↑36 and ↓5 +31
Comments 13

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

Reading time 5 min
Views 13K
Surfingbird corporate blog Algorithms *
Tutorial
В прошлый раз мы рассмотрели общую постановку задачи о многоруких бандитах, обсудили, зачем это может быть нужно, и привели один очень простой, но эффективный алгоритм. Сегодня я расскажу о ещё одной модели, которая эффективна в ситуациях, когда ожидаемые доходы от бандитов меняются со временем, да и само число и состав «ручек» может меняться – о динамической гамма-пуассоновской модели.


Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Comments 3

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

Reading time 2 min
Views 5.9K
Surfingbird corporate blog
Сегодня мы анонсировали программу для паблишеров.
С ее помощью можно увеличить посещаемость сайта и привлечь новых пользователей.

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

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

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

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

image
Читать дальше →
Total votes 285: ↑165 and ↓120 +45
Comments 64

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

Reading time 4 min
Views 14K
Surfingbird corporate blog Algorithms *
Я продолжаю цикл статей по применению текстмайнинг-методов для решения различных задач, возникающих в рекомендательной системе веб-страниц. Сегодня я расскажу о двух задачах: автоматическое определение категорий для страниц из RSS-лент и поиск дубликатов и плагиата среди веб-страниц. Итак, по порядку.

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


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

image
image
Читать дальше →
Total votes 40: ↑37 and ↓3 +34
Comments 10

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

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

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

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

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

Reading time 5 min
Views 77K
Website development *CSS *JavaScript *HTML *
Tutorial
Как мы избавились от JavaScript-библиотек социальных сетей, ускорили скорость загрузки страниц и использовали RESTful API для “шаринга” и “лайков”.


Читать дальше →
Total votes 78: ↑73 and ↓5 +68
Comments 44