Как на Авито сделать зачеркнутую цену: параметры объявления
Многие пользователи на востребованной доске объявлений долгое время не могут продать товар, поэтому хотят отредактировать заявку, изменить параметры и снизить стоимость. Для этого нужно знать, как на Авито сделать зачеркнутую цену. Рассмотрим краткую инструкцию.
Понижение цены на Авито. © garagestock / depositphotos.com
Параметры объявления – описание, фото, цена
Главными параметрами объявления на Авито являются:
- Описание, текст заявки.
- Фотографии, изображения.
- Местоположение (город, станция метро).
- Цена.
При неправильном или неточном оформлении публикации Авито разрешает редактировать описание, контактную информацию (имя пользователя, его номер телефона, электронный адрес с подтверждением, город), изменить порядок фотографий и поместить другой снимок в качестве главного.
Для изменения данных в пункте “Категория” обращаются в службу поддержки с письмом, в котором указывают данные заявки.
Если пользователь предоставил доступ к местоположению в настройках браузера, место на карте в публикации устанавливается автоматически. Данные можно поменять в настройках личного кабинета.
Как отредактировать объявление бесплатно
Бесплатно, т. е. не используя пакеты услуг, разрешается отредактировать любые предложения о продаже товара, кроме забракованных. Если объявление заблокировано Авито, его сначала восстанавливают.
Инструкция по редактированию основных параметров заявки включает следующие пункты:
- Заходят в персональный профиль.
- Открывают раздел “Мои объявления”.
- Находят публикацию, которую следует отредактировать.
- Вносят необходимые изменения.
- Выбирают пакет размещения.
- Нажимают кнопку “Продолжить”.
- Заявка обрабатывается модератором (просмотрится) и будет выложена на портале (при соответствии правилам размещения на Авито).
Редактирование можно выполнять также со страницы продажи товара.
Новые фото загружают с компьютера или смартфона из галереи и добавляют в публикацию с целью замены старых изображений.
Чтобы поменять фотографии местами, нужно:
- Выбрать изображение.
- Навести курсор на картинку.
- Левой кнопкой мыши зажать фото.
- Переместить в нужное место.
Для быстрой продажи в качестве главного изображения выбирают красивое и качественное фото, на котором хорошо видны все характеристики предложенной продукции.
Объявления можно редактировать в разделе Мои объявления. © скриншот / avito.ru
Если в старой публикации обзор был кратким и неинтересным, его необходимо исправить. Хорошо продаются вещи и материалы с правдивым и точным описанием. При наличии брака и других дефектов их обязательно указывают. В тексте описывают товар (материал изготовления, цвет, марку, модель и другие обязательные параметры), определяют способ доставки, возможность продажи оптом, наличие гарантии и скидок для контрагентов.
Большое значение имеет название объявления. Не стоит привлекать внимание покупателей словами “акция”, “внимание”, “бонус”, за это Авито блокирует.
Как снизить цену с перечеркиванием старой
Снижение первоначальной стоимости товара увеличивает эффективность продаж. Низкая цена привлекает многочисленных покупателей, регулярно посещающих ресурс Авито. Функционал падения цены в ленте общих продаж выглядит в виде появившейся красной стрелки возле числового значения, текущее число перечеркнуто и заменено на сниженное.
Руководство, как уменьшить цену, если предложенная вещь долгое время не продается:
- Заходите в личный кабинет.
- Находите раздел “Мои объявления”.
- Выбираете редактируемую заявку.
- Нажимаете “Редактировать”.
- Понижаете старую стоимость на 20-25%.
- Выбираете один из пунктов – “Продолжить без применения платных тарифов” или “Продолжить с пакетом Простая продажа”.
- Результат сохраняете.
- Отправляете на модерацию.
В новом, отредактированном предложении старая цена будет зачеркнута, возле нее появится красная стрелка. Такой вид заявка имеет 2-3 дня, затем снова устанавливается исходная стоимость.
Кроме этого, учитывают, что объявление до снижения должно быть опубликовано на сайте и находиться в активном статусе на протяжении 7 дней.
Как снизить цену на объявлении, чтобы появилась красная стрелочка?
Удобный интернет-сервис Авито пользуется огромной популярностью среди тех пользователей, которые заинтересованы в частых и выгодных продажах товаров в различных категориях.
Нередко так случается, что отличный товар, выставленный на продажу, достаточно долго не может найти своего покупателя. Причины могут быть различными, и одной из них является то, что стоимость товара, предлагаемая продавцом, может показаться покупателю несколько высокой. Именно поэтому многие пользователи данного ресурса интересуются, как на Авито снизить цену, чтобы появилась красная стрелочка рядом с объявлением.
Рассмотрим по порядку, каким образом осуществляется данный процесс.
Итак, чтобы быстро и продать товар либо услугу, в большинстве случае необходимо всего-навсего немного снизить первоначальную стоимость – в результате этого она станет гораздо более доступной и привлекательной для многочисленных покупателей, которые регулярно посещают сайт Авито. Как же это правильно сделать?
Нередко пользователи данного ресурса, продающие какой-либо товар, сталкиваются с такой проблемой: снижая стоимость, они видят, что цена в объявлении меняется, однако красная стрелочка, сигнализирующая об изменении первоначальной цены, так и не появляется. Попробуем разобраться, что же они делают неправильно.
Итак, чтобы рядом с ценой вашего товара или услуги в объявлении могла появиться красная стрелочка, необходимо учесть некоторые важные моменты:
- перед тем, как снизить стоимость, необходимо подождать, пока с момента размещения объявления пройдет как минимум одна неделя – в течение этого периода не следует производить никаких изменений в его тексте;
- в момент снижения цены нельзя больше ничего редактировать в тексте объявления – иначе ничего не сработает, и красная стрелочка не появится;
- очень важно, чтобы новая цена была максимально низкой, среди всех тех, которые пользователь ранее устанавливал за определенный товар.
Если пользователем не будут соблюдаться все эти условия, стоимость изменяться будет, однако без красной стрелочки.
Красная стрелочка рядом с ценой в объявлении появится лишь в том случае, когда с момента первого размещения объявления пройдет не менее семи дней, а цена будет существенно сниженной – как минимум, на 25%.
Чтобы правильно отредактировать объявление и снизить цену, необходимо зайти в свой личный кабинет на Авито и найти в нем интересующее вас объявление. Далее нужно соответственно отредактировать объявление – установить сниженную стоимость без изменения текста объявления. В ближайшее время ваше отредактированное объявление пройдет модерацию, после чего рядом с новой ценой появится характерная стрелочка красного цвета.
Однако имейте в виду, что сохраняется она всего лишь в течение двух-трех суток, а затем исчезает. Поэтому, чтобы красная стрелка появилась вновь, пользователю придется либо вновь снижать цену на 25%, либо размещать новое объявление, предварительно удалив предыдущее.
Страница не найдена
Мы используем файлы cookie, разработанные нашими специалистами и третьими лицами, для анализа событий на нашем веб-сайте, что позволяет нам улучшать взаимодействие с пользователями и обслуживание. Продолжая просмотр страниц нашего сайта, вы осознаете, что сайт может использовать ваши данные. Вы можете ознакомиться и принли отказаться от них, нажав на гиперссылку в тексте соглашения. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.t odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
Как работает вз :: 533 Раскрутка группы в контакте :: исполнителю work-zilla.com
Раскрутка группы в контакте
Добавить 500 человек из России в группу в контакте, не ботов все отлично! даже лучше,чем ожидала! спасибо) (0:08) 25 Сентября 2012 Борис Веденеев +1 200 Другое(Продвижение/Раскрутка) 1 день.
Найти инфо-бизнесменов
Нужно найти инфо-бизнесменов, или других предпринимателей занимающихся заработком в интернете, в виде продажи свои курсов, тренингов, вебинаров, консультаций, проживающих в г. Екатеринбурге. И оформить в таблицу их контактные данные. Имя, е-маил или телефон. Хороший исполнитель. Седлал все качественно. (1:13) 25 Сентября 2012 Вера 300 Другое(Личный помощник) 7 дней.
Разместить на avito объявления
Разместить на авито 162 объявления на тему гитар и гитарного оборудования (картинка, описание товара, контакт, цена). Наменование товара во вложенном файле, там 62 наименования. Описание товара по ссылке: http://www.muztorg.ru/cat/1082/153801/vendor3/sort3/. Это 62 объявления. Остальные 100 наименования по этой ссылке: http://www.muztorg.ru/hit/1082/. Цену ставить розничную, т. е. перечеркнутую. Картинку брать лучше с яндекса картинок, чтобы на ней не было надписей, как на музторговских картинках. Работа хорошо выполнена! Я доволен! (23:54) 24 Сентября 2012 Елена Семенова +1 250 Интернет маркетинг 9 часов.
Убрать объекты с 3-х фото
Задание в личной переписке Анна молодец, работает быстро и профессионально. (22:01) 24 Сентября 2012 Anna +1 100 Фотография 32 минуты.
Составить коммерческое предлож
Необходимо составить коммерческое предложение для международных компаний и компаний, работающих с иностранными партнерами. Предложение — шкатулки Федоскино и Палех, сайт http://www.fedoskinotoday.com. Суть предложения — предлагаем сувенирную продукцию — шкатулки Федоскино и Палех для подарков иностранным партнерам, руководителям, коллегам. Возможно нанесение логотипа компании на шкатулку. Можем поставить от 1 шкатулки до 200 (Федоскино) и 100 (Палех). Размеры — от 12х9х2,5 см до 33х26х12 см (ларцы). Изображения, описание и цены брать с сайте http://fedoskinotoday.com. (23:12) 24 Сентября 2012 Андрей Бикетов 500 Копирайт 9 часов.
Разместить ссылку на мой канал
Необходимо разместить ссылку моего канала (YouTube) в социальных сетях: Вконтакте, Facebook, Twitter. Мне неприницпиально где размещена ссылка, мне важно чтобы с этой площадки шли просмотры (желательно, целевые). Возможно, это будет тематический форум или что-то еще. Работа для ответственного исполнителя! Рассчитываю на Вашу порядочность, ответственность и честность! ВАЖНО! Работа должна быть выполнена качественно! Заинтересован в долгосрочном сотрудничестве. Вот ссылка на мой канал: http://www.youtube.com/channel/UC9LcinYwEvT89RWbUTS4dqw (1:44) 25 Сентября 2012 Владислав +1 150 Другое(Продвижение/Раскрутка) 0 секунд.
Найти шаблон WordPress
Подобрать бесплатный шаблон для сайта клининговой компании, желательно несколько вариантов. (0:01) 25 Сентября 2012 bloger51 +1 50 Дизайн сайта 17 минут.
Сделать обложку для диск
Нужно сделать дизайн для обложки коробки двд и диска в psd и в jpeg (23:09) 24 Сентября 2012 Роман +1 200 Дизайн приложения 1 день.
Рерайт текста страниц сайта
Нужно рерайтнуть 3-4 страницы чтобы можно было использовать их для рекламмы с другого сайта (23:48) 24 Сентября 2012 elena tkachenko +1 150 Рерайт 1 день.
15 Купонных сайтов
Здравствуйте! Задание: 1) Найти 15 купонных сайтов типа купикупон, групон, выгода. ру (их обязательно!!!) 2) Заполнить прилагаемую таблицу с (это и есть отчет о выполнении задания) графами: название сайта; адрес сайта; е-мейл; сколько человек в базе; стоимость услуг; сроки исполнение услуг. Выслать мне этот отчет. Отличный исполнитель! Подтверждаю ее №1 на Воркзиле. (22:41) 24 Сентября 2012 ღ♥ Мария ♥ღ
Как читать примеры работ, как работает work-zilla.com: наименование задания, текст работы (детальное описание, см. выше), обратная связь на воркзилла, дата публикации, исполнитель / имя пользователя на официальной бирже wz, исполнитель работы, повышение рейтинга, стоимость работы, категория, время на выполнение удаленного задания на дому, поиск фрилансера на бирже.
Ни пуха ни пера, реализуйте аналогичные задачи на вз и увеличивайте свой рейтинг вз и звездочки! Уточняйте свои предположения на официальном сообществе во вконтакте vk.com/workzillacom и vk.com/profworkzilla
В наличие адреса почтовых ящиков электронной почты заказчиков work-zilla.com (нет в паблике: 1000 контактов заказчиков; по базе данных можно сделать под заказ выборку по различным заданиям и категориям, которые данные заказчики оплачивали на бирже фриланса воркзилла) – по вопросам приобретения данной базы электронных адресов вз и/или предолжения по монетизации присылайте письмо на profworkzilla [собака] bk.ru с темой «контакты заказчиков воркзиллы«.
Виталий Филатов
Как я редактировал справочник по займам для ДокЛаб.
Cпуск на воду дредноута «Полтава», 1911 год.
Люди берут и дают деньги в долг, обращаются в банки и микрокредитные конторы. Но люди юридически неграмотны. Мало кто понимает, как составить и заключить договор, погасить проценты и вести судебные споры.
В интернете полно статей, но их пишут цитатами из Гражданского кодекса на недоступном обычному человеку языке. В «ДокЛаб» создали простой и понятный справочник. Сегодня я расскажу, в чем заключалась работа редактора, и почему это было сложно.
Постановка задачи
Чтобы справочник стал реальностью, маркетологи собрали популярные поисковые запросы о займах, а юристы написали развернутые ответы и сгруппировали их по темам. Получилось 87 статей. Моя задача как редактора звучала так:
Перевести ответы юристов на общедоступный язык, понятный «предпринимателям и домохозяйкам», не потерять юридическую грамотность ответов и повысить уникальность текста для поисковиков.
С первого взгляда задача состоит из трех пар противоречий: понятность и юридическая грамотность, юридические формулировки и уникальность текста, уникальность и простота изложения.
Понятность и юридическая грамотность
Юристы пишут ответы на юридическом языке. Этот язык не допускает двоякого толкования и нужен для правовых процессов, как язык программирования для работы с вычислительной техникой. Проблема в том, что в вузах юристов не учат объяснять юридические понятия непосвященным. Для этого нужен переводчик.
Вот пример из вопроса о подаче иска после окончания исковой давности по договору займа. Если вы поняли, о чем здесь — вы молодец.
Оригинал
Следует помнить, что если истечение срока давности по договору займа пришлось на дату после приема искового заявления, то срок давности считается прерванным и заёмщик уже не сможет ссылаться на ее истечение.
Перевод
Если кредитор подаёт исковое заявление на день раньше, чем заканчивается срок исковой давности, срок считают прерванным и заёмщик уже не опротестует иск кредитора.
Юристам не нравятся подобные трактовки. Чтобы объяснить непонятное, его упрощают и подают по частям, от простого к сложному. При этом теряются нюансы и однозначность формулировок.
Чтобы свести потери смысла к минимуму, решаю не объяснять понятия, в которых читатель разберется самостоятельно: валютное законодательство, юридические и физические лица, обязательства по договору. Сложные понятия раскрываю через простые, дописываю развернутые объяснения, сокращаю повторы. Главное — расшифровать смысл и передать его простыми словами без отсебятины.
Исковая давность — период, в течение которого можно подавать в суд. По закону срок исковой давности составляет 3 года. Если заёмщик нарушил условия сделки, а кредитор подал на него в суд позже трех лет, суд не будет рассматривать дело.
Текст переписываю по принципам информационного стиля. Убираю стоп-слова, довожу до 8 баллов по Главреду. Слежу за информационной ёмкостью, чтобы в предложении была только одна новая мысль. Выделаю подлежащее и сказуемое, дроблю сложные предложения, убираю страдательный залог, где это возможно. Меняю структуру: сначала отвечаю на вопрос, потом ввожу определения и пишу о нюансах. Делаю абзацы разной величины, чтобы сломать монотонный ритм.
Юридические формулировки и уникальность текста
Уникальность — показатель оригинальности текста. Выражается в процентах материала, не имеющего совпадений по результатам поиска в интернете. 100% уникальность означает, что похожих словосочетаний программа проверки нигде не нашла. 60% — текст на 40% состоит из «плагиата». Уникальность важна для специалистов по SEO и в теории положительно влияет на результаты поисковой выдачи Яндекса и Гугла.
Для справочника важна простота изложения, поэтому за уникальностью выше 80% мы не гнались. Некоторые статьи удалось написать на 90% и выше.
Уникальность проверяют специальными программами. Стандарт — Advego Plagiatus. Работает он примитивно: делит текст на шинглы — блоки по четыре слова — и ищет их по очереди в интернете, без анализа контекста и тематики. Доля совпадений определяет уникальность текста.
В окне проверки Advego неуникальные слова и словосочетания подсвечиваются желтым. Чтобы разбить шинглы и повысить уникальность, слова меняют местами, ищут синонимы или переписывают фразы целиком.
Задачу облегчает традиция копирайтеров копипастить друг у друга и заменять слова синонимами, не вникая в смысл. Вдумчивое изложение на доступном языке повышает уникальность процентов на 20, но наступает момент, когда выше уникальность уже не поднять, не нарушив смысла юридических формулировок. Расписку о получении денег составляют, а не «подписывают» или «оформляют». Так можно, но меняется смысл и теряется красота, а юристы негодуют.
SEO и простота изложения
Кроме уникальности, поисковая оптимизация требует следить за процентом вхождения, плотностью ключевых слов, текстом заголовка и сниппета — короткого описания статьи для поисковой выдачи.
Процент вхождения — сколько раз слово встречается в тексте относительно общего количества слов. Если слово встречается чаще 5%, поисковики решают, что статью написали ради высоких позиций, и могут её проигнорировать.
Процент вхождения проверяется специальным инструментом на сайте Advego — семантическим анализатором. Анализатор считает, сколько раз слово встречается в тексте, не различая падежи и число.
Договор, договору и договоры анализатор посчитает за одно слово.
Чтобы понизить процент вхождения, слово заменяют или удаляют. Когда этого сделать нельзя, увеличиваем общее количество слов. А когда и этого сделать нельзя, переписываем статью, пока не получится. Чтобы оценивать варианты по таким словам, я соорудил специальную табличку в Экселе.
Заголовок не должен повторять первое предложение в тексте и сниппете, его длина не превышает 12 слов или 70 символов. Остальное поисковики обрежут при показе результатов поиска. В конце заголовка не ставят точку. В заголовке может быть только одно высокочастотное ключевое слово или словосочетание.
Сниппет не повторяет заголовок в первом предложении, его длина не больше 200 символов, остальное не будет отображаться в результатах поиска. В последнем предложении не ставят знаки препинания. В сниппете указывают одно высокочастотное КС или пару-тройку низкочастотных.
Ограничения отчасти помогают писать проще и повышать уникальность, но в определенный момент начинают противоречить здравому смыслу и ломать юридические формулировки. Помогает изменение фраз, структуры абзаца, созерцание и смирение.
Ход работы
Прежде чем браться за текст, я написал два десятка вопросов по проекту и начал ко всем приставать. Получился документ в гугл-доке, описывающий требования SEO, стиль изложения, портрет целевой аудитории, перечень ресурсов и участников.
Потом я сел и начал писать, по ходу работы подбирая ритм и очередность действий. К середине проекта рабочий процесс выглядел так:
Итоги и благодарности
За два месяца мы переписали и опубликовали 59 из 87 статей. С учётом обсуждений, исправления замечаний и SEO-оптимизации это заняло у меня 169 часов. Остальные статьи я допишу в январе, после новогодних каникул.
Крупные проекты всегда создаются в условиях дефицита ресурсов и времени. Пока у справочника нет собственного поиска, контекстных подсказок и добротной вёрстки, но нам удалось написать его понятно и лаконично.
Благодарю команду проекта за поддержку и терпение. Для меня это первый информационный продукт такого масштаба.
Еще почитать
Частые вопросы по договору займа: оформление, возврат, споры в суде
Семь вопросов о работе с Главредом
Что нужно знать об уникальности текста
Дарья Лиховидова, Barilla: «Если постоянно сбивать цену, то у компании не будет бюджета на развитие» | AdIndex Print Edition #33
В новой РУБРИКЕ ЖУРНАЛА AdIndex Print Edition «ГЕРОИ»: Дарья Лиховидова, руководитель отдела маркетинга Barilla Россия и СНГ
«Если постоянно сбивать цену, то у компании не будет бюджета на развитие»
КАРЬЕРНЫЙ РОСТ
ИЗ МГУ В PEPSICO
Если все детство, повторяя на ходу сольфеджио, ты спешишь с фигурного катания в лингвистический лицей, а после школы олимпийского резерва находишь в себе силы и желание еще и на художественную — характер формируется упорным и нацеленным на результат, а способ мышления — творческим. «Не сдаваться никогда, даже если кажется, что все это невозможно», — таково мировоззрение Дарьи Лиховидовой.
Карьеру маркетолога Дарья начала с факультета государственного управления МГУ им. М. В. Ломоносова. Выпускаясь из школы с углубленным изучением иностранных языков, она подумывала стать профессиональным переводчиком, но довольно быстро охладела к идее — и не пожалела. На первом курсе университета Дарья познакомилась с понятием «маркетинг» и по-настоящему увлеклась новым для себя направлением.
В 2004 году после окончания учебы Дарья Лиховидова устроилась в немецкую компанию Tchibo, известную на российском рынке благодаря производству кофе. Как и многие вчерашние студенты, Дарья романтизировала свою профессию и представляла рабочий процесс несколько иначе. Воображалось, как сразу же придется запускать новые продукты, снимать телевизионные ролики и летать за наградами в Канны. Но все иллюзии разбились о реальность в первый рабочий день.
Любая успешная рекламная кампания и Канны начинаются не с создания искрометного креатива, а с основательного изучения матчасти
Едва Дарья переступила порог офиса, ей выдали компьютер с презентацией на сто слайдов, где каждая страница была посвящена анализу рынка растворимого кофе. И так постепенно пришло понимание, что любая успешная рекламная кампания и Канны начинаются не с создания искрометного креатива, а с основательного изучения матчасти.
В Tchibo Дарья проработала чуть меньше трех лет. Освоившись в профессии и основательно изучив рынок кофе, а также убедившись, что маркетинг — именно то, чем хочется заниматься, она приняла решение идти дальше. В результате следующие восемь лет Дарья Лиховидова провела в команде одного из крупнейших рекламодателей на планете — PepsiCo.
ЭМОЦИИ И ЧИПСЫ
В PepsiCo Дарья Лиховидова пришла на позицию младшего бренд-менеджера и работала с двумя популярными марками компании — Lay’s и Pepsi. Время, проведенное в PepsiCo, Дарья называет целой эпохой в своей жизни. Кстати, в разговоре о собственных симпатиях к двум вверенным маркам Дарья признается, что сердце было на стороне Lay’s. «За время работы с брендом Lay’s у нас образовалась очень сильная эмоциональная связь. Маркетологи, работавшие с этой маркой, получали чуть больше возможностей экспериментировать, запускать новые продукты и разрабатывать уникальные предложения для различных групп целевой аудитории».
Об одном из таких проектов для Lay’s Дарья вспоминает с особым трепетом. В 2009 году компания вывела на рынок премиальную линейку чипсов Lay’s Sensations. Продукт был ориентирован на более узкую, женскую аудиторию и предполагал вечернее потребление. Общее настроение бренда также было другим — спокойным и чувственным. Работа над проектом длилась почти два года. Это был тот редкий случай, когда для съемок российской рекламы приглашают всемирно известных звезд: ролик Lay’s Sensations снимал американский режиссер Тарсем Сингх — автор фильма «Клетка» с Дженнифер Лопес. И пусть рынок оказался не готов к премиальным чипсам для женщин, во время запуска Дарье удалось получить опыт, который не раз пригодился в будущем.
За восемь лет в PepsiCo Дарья Лиховидова зарекомендовала себя как профессионал своего дела. Рекрутеры часто делали предложения, но она оставалась к ним равнодушна, поскольку чувствовала себя на своем месте и не планировала покидать компанию. Пока однажды не поступил звонок, заставивший задуматься. Ей предложили заняться продвижением популярной в мире итальянской марки, которая присутствовала и на отечественном рынке, но была мало известна потребителю. Этой маркой оказалась Barilla.
Мало кому выпадает возможность прийти в компанию, чтобы заново выстраивать всю цепочку маркетинга. Для специалиста это уникальный шанс проявить себя и показать все, на что он способен. Дарья прекрасно понимала преимущества, однако решение далось нелегко. «Тяжело покидать место, где тебе хорошо. Так было и у меня с PepsiCo. Но новые возможности развития, которые предлагала Barilla, на несколько ограниченном (особенно по части менеджмента) рынке FMCG-производителей — редки и на вес золота. И я решилась».
ТРАДИЦИИ И ПЕРЕМЕНЫ
Дарья Лиховидова начала работать в Barilla в 2013 году. Первый рабочий день сильно отличался от того, к чему она привыкла. До этого ее жизнь вращалась на космических скоростях, присущих компаниям-гигантам, где по многоэтажным офисам бегают люди, обсуждающие KPI, цели и задачи. В Barilla же ее ждали небольшой офис и спокойная обстановка.
Бизнес Barilla в России в то время был сфокусирован на большом портфеле выпечки, рынок которой существенно сокращался, при этом портфель пасты и соусов занимал незначительную долю и демонстрировал потенциал. Все изменения начались с приходом в штаб-квартиру компании Barilla нового СEO Клаудио Кольцани. Одной из ключевых стратегий выполнения новых планов стала региональная экспансия. «Ни для кого не секрет, что Россия сохраняет большой потенциал для западных производителей. И пусть многие считают, что времена активного роста прошли, на самом деле это не так». Развитие в России стало для Barilla одним из приоритетных направлений. И Дарье предстояло сделать так, чтобы о бренде заговорили.
Когда ты из PepsiCo, твоему звонку всегда рады. Но если ты звонишь из компании, не входящей в топ-50 крупнейших рекламодателей, может случиться и такое, что с тобой даже толком не поговорят
Первой неожиданностью, с которой столкнулась Дарья на новом месте, оказалась необходимость заново выстраивать отношения с рекламными агентствами. «Когда ты из PepsiCo, твоему звонку всегда рады. Но если ты звонишь из компании, не входящей в топ-50 крупнейших рекламодателей, может случиться и такое, что с тобой даже толком не поговорят. Сперва это шокирует, позже — становится отличным методом проверки потенциальных партнеров. Ложки вернутся, осадок останется».
Как ни парадоксально это прозвучит, одним из барьеров на пути обновления компании в целом и продвижения бренда в России оказалась лояльность сотрудников. Когда Дарья впервые посетила штаб-квартиру Barilla, поразилась тому, что многие люди работали в компании по 30 лет и более. Это была настоящая семья, но в то же время такое положение дел стало препятствием. Для преображения требовался свежий глоток воздуха, но оказалось непросто донести эту идею до коллег, глубоко преданных делу и убежденных, что после стольких лет в компании никто лучше не поймет насущных необходимостей бренда.
«Когда ты десятки лет проводишь на одном месте, есть риск стать слишком консервативным. Мир вокруг меняется, а ты не обращаешь на это внимания. Человеку вообще комфортнее мыслить и действовать стереотипами. От меня же требовалось упразднить привычки. Убедить коллег, что следует поступать по-новому, а не так, как раньше. И при этом стать частью команды, а не инородным элементом. Было сложно, но я стремилась к менеджерским экспериментам», — вспоминает Дарья. В то время каждое предложение об изменениях в маркетинговой стратегии требовало долгих переговоров и индивидуального подхода к каждому собеседнику. Повезло, что непосредственный руководитель Дарьи, вице-президент Barilla Россия Михаил Путилин, всегда шел навстречу ее начинаниям.
Постепенно, с успешной реализацией проектов и постоянной поддержкой локальной команды, к идеям Дарьи стали относиться более лояльно. Сегодня у руководителя отдела маркетинга Barilla нет сложностей с внедрением новых инструментов. Точки соприкосновения с коллегами найдены, и результаты Barilla в России показывают, что курс выбран верно.
РАСПОРЯДОК ДНЯ
Рабочий день Дарьи Лиховидовой начинается в десять утра и может продолжаться до глубокой ночи. Деловых поездок в графике очень много, поэтому Дарья с большой радостью встретила новую программу для сотрудников компании SmartWorking, которая позволяет дважды в неделю работать вне офиса. С тех пор руководитель отдела маркетинга старается проводить дома минимум один день в неделю. «Это здорово помогает. Дома намного меньше отвлекающих факторов, и в тишине можно полностью погрузиться в детали проекта. Здесь я выполняю задачи, которые требуют максимальных умственных затрат. Еще это позволяет экономить огромное количество времени на дорогу и находить время для семьи. А непрерывное общение с коллегами в течение рабочего дня легко обеспечить при помощи современных технологий».
Традиционно каждая новая неделя в офисе Barilla начинается со встречи отдела продаж и маркетинга. Команды актуализируют свои данные, делятся планами и прогнозами, анализируют риски. Маркетологи регулярно встречаются и с представителями фабрики в Солнечногорске, чтобы обсудить производственные процессы и запуск на рынок новых продуктов бренда.
ОТРАСЛЬ
НАРОДНЫЙ ГАРНИР
Для современного FMCG-рынка ахиллесовой пятой стали скидки. «Скидки — боль любого маркетолога. Вы инвестируете деньги в бренд, выстраиваете отношения с потребителями, мотивируете покупать продукт за полную стоимость, а потом все разбивается о цветной ценник с перечеркнутой цифрой». Из-за сложной экономической ситуации в стране за последние два года объем продаж по скидкам в категории пасты вырос вдвое. Люди стали уделять брендам намного меньше внимания и часто делают выбор только исходя из цены.
Скидки — боль любого маркетолога. Вы инвестируете деньги в бренд, выстраиваете отношения с клиентами, мотивируете покупать продукт за полную стоимость, а потом все разбивается о цветной ценник с перечеркнутой цифрой
Из-за постоянных скидочных акций между брендами разворачивается настоящая гонка за самую низкую цену. Это билет в один конец, ведь если постоянно сбивать цену, то у компании не будет бюджета на развитие. Поэтому Дарья Лиховидова и другие маркетологи Barilla сегодня озабочены тем, как продвигать свой бренд вразрез со скидочным трендом. «Мы успели реализовать запланированные инвестиции в локальное производство до кризиса 2015 года. Когда произошел обвал, у нас уже устанавливались производственные линии в Солнечногорске и не было нужды в импорте. В результате, пока другие импортные бренды сокращали объем, мы только продолжали наращивать бизнес», — отмечает Дарья. Конечно, с запуском локального производства приходилось сталкиваться и со стереотипами о том, что как только бренд локализует свое производство в России, качество продукции сразу же падает. Дарья подчеркивает, что к ее бренду это не имеет никакого отношения. Подтверждением этому является постоянно увеличивающееся количество лояльных потребителей.
Российский рынок пасты занимает второе место по объему продаж в тоннах и четвертое по объему продаж в деньгах. Первое место у Италии, также в лидерах США и Бразилия. Для россиян паста — это продукт широкого потребления и один из основных представителей категории бакалеи. В среднем россияне потребляют пасту один или два раза в неделю. Пасту едят и покупают чаще, чем рис, гречку или любой другой гарнир. В этой фразе — основная специфика рынка.
Пасту едят и покупают чаще, чем рис, гречку или любой другой гарнир. В этой фразе — основная специфика рынка. Для россиян паста — только дополнение к мясу, а в Италии — основное блюдо
Для россиян паста — только дополнение к мясу, курице, рыбе или сосискам, а в Италии — основное блюдо. Отчасти эта особенность и объясняет невнимательное отношение потребителей к брендам. Но если рассказать людям обо всех преимуществах настоящей пасты, сломать стереотип о том, что от нее полнеют, а также рассказать, как просто и сколько вкусных блюд из нее можно приготовить, то потребитель станет внимательнее относиться к тому, какой продукт берет с полки, считает Дарья.
ПАСТА ПРИХОДИТ В DIGITAL
Категория пасты и макаронных изделий специфична. С одной стороны, в сегменте более 350 брендов, с другой — лишь немногие представлены по всей стране и используют маркетинговые инструменты в продвижении. Только несколько крупных игроков, включая Barilla, реализуют свою продукцию по всей России, однако не все из них привыкли обновлять свои рекламные сообщения и проводить крупные кампании. Barilla пошла по иному пути.
За последние четыре года бренд увеличил объем продаж в несколько раз. Развитие бизнеса позволило инвестировать больше денег в маркетинг. Только в 2018 году медийный бюджет компании увеличился на 14%. Существенная часть ресурсов расходуется на новую глобальную рекламную кампанию с теннисистом Роджером Федерером. Barilla планирует разжечь интерес потребителей к категории, привлечь молодую аудиторию, полагая, что образ знаменитого спортсмена идеально для этого подходит.
Показатель пенетрации категории составляет порядка 98%. На сегодняшний день в России нет человека, который не пробовал бы пасту. Поэтому медиамикс Barilla сконцентрирован на максимально охватных инструментах, таких как национальное телевидение. Точный таргетинг в digital бренд использует для дополнительного контакта с более молодой аудиторией и продвижения нишевых продуктов из портфеля Barilla.
Традиционный маркетинг неизбежно изменится. В этом Дарья Лиховидова не сомневается. В будущем крупным FMCG-компаниям потребуется больше digital-специалистов. Во-первых, это позволит брендам правильно развиваться в информационном пространстве. Во-вторых — самостоятельно собирать данные, оперативно получать обратную связь от потребителей, правильно анализировать аудиторию и оценивать эффективность кампаний.
ЛИЧНОСТЬ И СЕМЬЯ
С годами Дарья смогла понять тех старожилов компании, которые считают Barilla частью своей семьи. «Помню, как к нам впервые приезжал Лука Барилла (один из владельцев компании, — Прим. ред.). Он подошел ко мне и практически сразу поинтересовался о моих близких. Тогда он сказал: семья — это самое главное, что есть у человека». Трепетное отношение к семейным ценностям является основой итальянской культуры, и в Barilla на этом строится многое. Именно поэтому суть отношения к качеству производимых продуктов заключена в высказывании Пьетро Барилла (отца нынешних владельцев компании): «Мы предлагаем людям то, чем накормили бы своих детей».
В качестве примера Дарья Лиховидова вспоминает случай с заменой пальмового масла. Несколько лет назад EFSA (European Food Safety Authority) получила результаты многолетнего исследования, согласно которому пальмовое масло в процессе обработки при высоких температурах образует канцероген, способный привести к развитию рака. Для компании это стало сигналом к незамедлительным переменам. Всего за полгода Barilla провела масштабные инвестиции, изменила рецептуру, полностью отказавшись от пальмового масла во всей своей выпечке по всему миру, в том числе и в России. Сейчас в рецептах используется высокоолеиновое подсолнечное масло, сравнимое по свойствам с оливковым.
Наряду с тем, что Дарья руководит отделом маркетинга, она также выступает в качестве Diversity and Inclusion Global Board Member — дважды в год представляет Россию в штаб-квартире компании. Принципы Diversity & Inclusion (многообразия и вовлечения) — еще одна из особенностей устройства компании, о которой Дарья говорит с большим уважением. Доступ к мнениям людей с разным мировоззрением позволяет не только сохранять в команде компании здоровую атмосферу, но и лучше понять своих потребителей, стать к ним еще ближе, полагают в Barilla.
В будущем Дарья планирует остаться в той же сфере, в которой она работает сегодня. Ей нравится заниматься развитием бренда, находить решения маркетинговых задач. В перспективе она рассчитывает получить больше знаний в digital, подробно изучить все аспекты, чтобы эффективно использовать новые инструменты в работе.
При этом лучший совет, который Дарья слышала в своей жизни, — не ставить перед собой слишком много задач. Следует всегда концентрироваться на одной большой цели, продумать определенный набор шагов к ней и терпеливо двигаться по заданному пути. Только так можно достичь успеха, полностью посвятить себя любимому делу и быть счастливой.
В ПРОШЛОМ НОМЕРЕ:
Герои: Анастасия Макаркина, руководитель службы рекламы и мероприятий Renault Russia
Причин полюбить пасту
- Паста — основа средиземноморской диеты.
- Не наносит вреда ни вам, ни планете.
- Дарит чувство сытости.
- Не приводит к ожирению.
- Объединяет людей во всем мире.
Правила маркетолога
- 1. Быть последовательным в своих действиях.
- 2. Поощрять все мнения и идеи.
- 3. Быть понятным, честным и открытым.
- 4. Получать удовольствие от работы.
Ошибки в работе с брендом, которые допускают агентства
- Формально относятся к малоизвестным брендам.
- Исходят из бюджетов, а не брифов. Брендам нужна одна большая идея, а не пачка маленьких предложений.
- Не чувствуют бренд и его специфику.
Различия итальянского и российского рынков
1. Культура потребления. Итальянцы обожают делать соусы, тогда как в России намного менее изобретательны в приготовлении блюд из пасты.
2. Отношение к продуктам. Пока что большинство россиян менее требовательны к качеству еды.
Совет для FMCG-брендов
1. Во времена глобализации умение грамотно адаптировать глобальные коммуникационные платформы для российского рынка и потребителя по-прежнему остается одной из ключевых задач для маркетологов.
Автор: Ярослав Макаров // Фото: Татьяна Рябова
Отзыв: | Труба РСТ, получена 3 марта по предзаказу. Возможно, что в будущем оценка изменится, но пока так. Перешел с S8+, также имею в пользовании S9+. «Типафлагман», но, рынок РФ для компании Samsung видимо перешел в разряд безперспективных. Скуднейшая комплектация, которая непрезентабельно упакована в такую же непрезентабельную коробку. Ни доп аксессуаров, ни чехла, ни, даже, пакетика для амбюшур наушников. Огромная коробка под макулатуру, которая явно рассчитана на размещение в ней чехла. Беря в руки коробку от S8+, видя ее реализацию, вариант коплектации понимаешь, что это раунд S20 Ultra проигрывает вчистую. Скуднейшие цветовые вариантаы «типафлагмана» это конечно сильный ход, но мне кажется провальным, Ну а про память не упомянул наверное только ленивый. Я понимаю, что убрав датчики пульса, Samsung пытаются продать часы и фитнес-браслеты, но поставить в «типафлагман» всего 128 Гб памяти, параллельно распиаривая 8К камеру, которая минутное видео пишет в полгига, это наверное всего лишь стимул купить карту памяти. Опомнитесь, господа, покупая «типафлагман» я хочу иметь возможность выбора, тем более за такие деньги. Камера пока не впечатлила, снимки без человеческой кожи в кадре делает ровно такие же как и двухгодовалый S9+, портреты неестественны из за тона кожи и ее искуственной сглаженности, с видео в 4К по субъективным оценкам плавности, цветопредеаче и диапазону лучше справляется s9+ чем этот кирпич. В режиме 8К видео можно снимать только на штатив и только в солнечный день, остальное баловство. Автофокус глючит постоянно, иногда его совсем не возможно заставить сфокусироваться, в такие моменты просто убираю в карман без фотографии. Про энергоэффективность сказал уже каждый, повторяться не стану, только подтвержу. Личный вывод — я расстроен, вау-эффекта не возникло. А негативное мелочи и моменты еще больше усугубляют. |
Avito Duplicate Ads Detection, интервью победителей: 2-е место, команда TheQuants | Микель, Питер, Мариос и Сонни | от Kaggle Team | Kaggle Blog
Соревнование по дублированной рекламе Avito проводилось на Kaggle с мая по июль 2016 года. Более 600 участников работали над тем, чтобы продвинуться на вершину таблицы лидеров, выявляя повторяющиеся объявления на основе их содержания: текста и изображений на русском языке. TheQuants, состоящая из Kagglers Mikel, Peter, Marios и Sonny, заняла второе место, поскольку самостоятельно генерировала функции и объединила их работу в мощное решение.
В этом интервью они описывают многие функции, которые они использовали (включая текст и изображения, местоположение, цену, атрибуты JSON и сгруппированные строки), а также те, которые оказались на «кладбище функций». В итоге 587 функций были входными данными для 14 моделей, которые были объединены с помощью средневзвешенного рангового среднего случайного леса и моделей XGBoost. Читайте дальше, чтобы узнать, как они грамотно исследовали и определили свое пространство функций, чтобы тщательно избежать переобучения в этой задаче.
Микель Бобер-Иризар : Прошедшие соревнования по прогнозному моделированию, финансовые прогнозы и медицинская диагностика.
Питер Боррманн : Ph.D. кандидат теоретической физики, доцент-исследователь, а также предыдущий опыт работы с Kaggle.
Мариос Михайлидис : Я аспирант по совместительству в UCL, менеджер по науке о данных в Dunnhumby и пылкий Kaggler.
Сонни Ласкар : Я менеджер-консультант по аналитике в Microland, работаю над внедрением решений для больших данных; в основном имеет дело с данными ИТ-операций.
Микель Бобер-Иризар : Я хотел узнать о машинном обучении и использовать эти знания для участия в соревнованиях.
Питер Боррманн : Я хотел улучшить свои навыки в этой области.
Мариос Михайлидис : Я хотел принять новый вызов и учиться у лучших.
Сонни Ласкар : Я узнал о Kaggle несколько лет назад, когда учился на MBA.
Наш подход к этому соревнованию был разделен на несколько частей:
- Раннее слияние на основе положения в таблице лидеров.
- Независимое создание функций (на очищенных или необработанных данных), которые потенциально могут улавливать сходство между содержанием двух объявлений и могут быть далее разделены на большее количество категорий (например, сходство текста или сходство изображений).
- Создайте несколько различных классификаторов и регрессоров независимо с удерживаемой выборкой.
- Объединить работу всех участников
- Объединить результаты посредством взвешенного среднего ранга двухуровневой метамодели сети (StackNet).
Очистка данных
Чтобы очистить текст, мы применили стемминг с помощью NLTK Snowball Stemmer и удалили стоп-слова / знаки препинания, а также преобразовали их в нижний регистр.В некоторых случаях мы также удаляли не буквенно-цифровые символы.
Разработка функций, том 1: Фактические функции, которые мы использовали
Для упреждающего поиска функций с чрезмерной подгонкой мы создали сценарий, который отслеживает изменения свойств (гистограммы и чистота разделения) функции с течением времени , что позволило нам быстро (200 мс / функция) определить дополнительные функции без необходимости запускать ночные задания XGBoost.
После удаления дополнительных функций в нашем последнем пространстве функций было 587 функций, полученных из разных тем:
- CategoryID, parentCategoryID необработанный CategoryID, parentCategoryID один-горячий (кроме избыточных).
- Разница в цене / средн.
- Generation3probability (выход модели, обученной обнаружению метода генерации = 3).
- LocationID и RegionID необработанные.
- Общая широта / долгота.
- SameMetro, то же местоположение, тот же регион и т. Д.
- Расстояние от центров городов (Калинград, Москва, Петербург, Краснодар, Махачкала, Мурманск, Пермь, Омск, Хабаровск, Ключи, Норильск)
Для предотвращения переоборудование в определенные места, позволяя XGBoost создавать свои собственные регионы. - Длина / разница в длине.
- Характеристики нграмм (n = 1,2,3) для заголовка и описания (как слова, так и символы).
- Счетчик Ngram (#, Sum, Diff, Max, Min).
- Длина / разница в длине.
- Подсчет уникальных нграмм.
- Соотношение пересекающихся диаграмм.
- Соотношение уникальных пересечений нограмм.
- Элементы расстояния между заголовками и описаниями:
- Особенности подсчета и соотношения специальных символов:
- Функции подсчета и соотношения заглавных букв в заголовке и описании.
- Особенности подсчета и соотношения специальных букв (цифр, знаков препинания и т. Д.) В названии и описании.
- Сходство между наборами слов / символов.
- Нечеткие расстояния.
- расстояния медуз.
- Количество перекрывающихся наборов из n слов (n = 1,2,3).
- Подходящие подвижные окна струн.
- Перекрестное сопоставление столбцов (например, title1 и description2).
Мешок слов:
Для каждого текстового столбца мы создали мешок слов как для пересечения слов, так и для разницы слов и закодировали их в разреженном формате, в результате чего получилось ~ 80 000 столбцов каждый.Затем мы использовали это для создания наивных байесовских, SGD и подобных моделей, которые будут использоваться в качестве функций.
Ценовые характеристики: JSON Характеристики:
- Особенности подсчета атрибутов.
- Счетчик имен общих атрибутов.
- Счетчик значений общих атрибутов.
- Веса свидетельств для ключей / значений, модель XGBoost для редко закодированных атрибутов.
Характеристики изображения:
- Количество изображений в каждом наборе.
- Разница Хеширование изображений.
- Расстояние Хэмминга между каждой парой изображений.
- Попарное сравнение размеров файла каждого изображения.
- Попарное сравнение размеров каждого изображения.
- Соответствие ключевой точки / дескриптора BRISK.
- Сравнение гистограмм изображений.
- Анализ доминирующего цвета.
- Уникальность изображений (сколько еще предметов имеют такие же изображения).
- Разница в количестве изображений.
Мы нашли кластеры строк, группируя строки, содержащие одинаковые элементы (например, если строка1 содержит элементы 123, 456, а строка2 содержит элементы 456, 789, они находятся в одном кластере).Мы обнаружили, что размер этих кластеров был очень хорошей характеристикой (более крупные кластеры с большей вероятностью не были дубликатами), а также тот факт, что кластеры всегда имеют один и тот же метод поколения. Добавление функций размером с кластер дало нам улучшение от 0,003 до 0,004.
Разработка функций, том 2: Те, которые не прошли
Переоснащение было, вероятно, самой большой проблемой на протяжении всего соревнования, и многие функции, которые (сверх) показали себя при проверке, не так хорошо показали себя в таблице лидеров .Вероятно, это связано с тем, что очень мощные функции учатся распознавать определенные продукты или продавцов, которых нет в тестовом наборе. Следовательно, кладбище объектов было неизбежным злом.
Это было то, что мы пробовали очень рано в соревновании, адаптируя наш код из соревнования Home Depot. К сожалению, он очень сильно переобучился, дав нам 0,98 val-auc и только 0,89 на LB. Мы пытались добавить шум, уменьшить сложность, но в конце концов сдались.
Мы попробовали обучить модель на очищенных данных и использовать предварительно обученную модель, опубликованную на форумах.Мы попытались использовать расстояние перемещения слов от нашей модели в качестве функций, но они были довольно слабыми (0.70AUC), поэтому в конце концов мы решили отказаться от них для простоты. Использование предварительно обученной модели не помогло, поскольку авторы использовали MyStem для стемминга (который не является открытым исходным кодом), поэтому мы не могли воспроизвести их очистку данных. После некоторых преобразований в предварительно обученной модели, чтобы попытаться заставить ее работать с нашим стеммингом (мы сократили это примерно до 20% пропущенных слов), она получила такой же балл, как и наша пользовательская модель word2vec.
Расширенные возможности кластера:
Мы попытались расширить возможности нашего кластера несколькими способами. Мы обнаружили, что использование среднего прогноза для кластера, а также cluster_size * (1-cluster_mean) обеспечивает отличные возможности при проверке (50% прироста важности xgb), однако они переоснащены. Мы также пробовали использовать такие функции, как стандартное отклонение расположения элементов в кластере, но они тоже переоснащены.
Грамматические особенности:
Мы попробовали создать функции для отпечатков пальцев различных типов продавцов, таких как использование заглавных букв, специальных символов, новых строк, знаков препинания и т. Д.Тем не менее, хотя они очень помогли в резюме, они переборщили с таблицей лидеров.
Нарушения бренда:
Мы создали некоторые функции, основанные на словах, которые никогда не могут появляться вместе в повторяющихся списках. (Например, если на одном элементе написано «iPhone 4s», а на другом — «iPhone 5s», они не могут быть дубликатами). Хотя они хорошо справлялись с поиском дубликатов, было слишком мало случаев, когда эти нарушения имели место, чтобы повлиять на результат.
Первоначально мы использовали набор случайных проверок перед переключением на набор неперекрывающихся элементов, где ни один из элементов вальсета не появлялся в наборе поездов.Это сработало несколько лучше, однако мы не заметили, что обучающая выборка была упорядочена по времени! Позже мы заметили это (вдохновленные этим сообщением) и переключились на использование последних 33% в качестве вальсета.
Этот набор относительно хорошо коррелировал с таблицей лидеров до прошлой недели, когда мы занимались мета-моделированием, и он развалился — в момент, когда было бы слишком много работы, чтобы переключиться на лучший набор. Это очень задело нас к концу соревнований.
Моделирование, том 1: Те, которые сделали это
В этом разделе мы каждый раз строили различные модели (классификаторы и регрессоры) на разных входных данных (поскольку процесс моделирования перекрывался с процессом разработки признаков.Все модели обучались с первыми 67% обучающих данных и проверялись на оставшихся 33%. Все прогнозы были сохранены (чтобы их можно было использовать позже для мета-моделирования. Наиболее распространенными моделями были:
Обучены всем 587 нашим финальным функциям с 1000 оценками, максимальная глубина равна 20, минимальный дочерний элемент — 10 и особенно высокий Eta (0,1) — упаковано 5 раз. Мы также заменили значения nan на -1 и значения Infinity на 99999,99. Результатом стало 0.95143 в частной таблице лидеров. Бэггинг прибавил примерно 0,00030.
Обучено всем нашим последним функциям, преобразованным с помощью стандартного масштабатора, а также с помощью логарифма плюс 1, где все отрицательные функции были заменены на ноль. Основная архитектура включала 3 скрытых слоя с 800 скрытыми блоками плюс 60% отсева. Основной функцией активации был Softmax, а все промежуточные — штатные выпрямители (Relu). Мы упаковали его 10 раз. Он набрал 0,94912 в частной таблице лидеров.Он дал + 0,00080–90 при усреднении ранга с моделью XGBoost
Modeling vol 2: те, которые не сделали
Мы построили пару более глубоких моделей Xgboost с более высокой Eta (0,2), которые, хотя и хорошо показали себя в cv. , они превзошли таблицу лидеров.
Мы использовали несколько моделей для прогнозирования метода генерации, чтобы использовать это как функцию для мета-моделирования, но она ничего не добавила, поэтому мы удалили ее.
Предыдущий процесс моделирования сгенерировал 14 различных моделей, включая линейные модели, а также XGBoosts и NN, которые позже использовались для мета-моделирования
В целях проверки мы снова разделили оставшиеся (33%) данные на 67–33, чтобы настроить гиперпараметры наших метамоделей, которые использовали в качестве входных данных вышеупомянутые 14 моделей.Случайный лес Sklearn, который показал себя немного лучше, чем XGBoost (0,95290 против 0,95286). Их средний рейтинг показал лучший результат в таблице лидеров: 0,95294
Процесс моделирования и мета-моделирования также проиллюстрирован ниже:
Спасибо участникам за вызов, Kaggle за хостинг, Avito за организацию. Благодаря сообществу открытого исходного кода и исследованиям, которые сделали все это возможным.
В самом начале соревнований Питер, Сонни и Микель сформировали команду, поскольку в то время они занимали первые 3 места, и решили объединить усилия, чтобы посмотреть, как далеко они смогут зайти.Позже Мариос был замечен скрывающимся внизу таблицы лидеров, и его попросили присоединиться из-за его обширного опыта в Kaggle.
Мы все были довольно независимы, разветвлялись, и каждый работал над своими собственными функциями, так как было много вопросов, которые нужно было охватить, а также вместе проводить мозговой штурм и обсуждать идеи. В конце концов, мы собрались вместе, чтобы объединить все в одно функциональное пространство и построить для него модели.
Микель Бобер-Иризар (анокас) — молодой и амбициозный специалист по данным и энтузиаст машинного обучения.Он принимал участие в различных соревнованиях по прогнозному моделированию, а также разработал алгоритмы для решения различных задач, включая финансовое прогнозирование и медицинскую диагностику. Микель в настоящее время заканчивает учебу в Королевской гимназии в Гилфорде, Великобритания, и планирует продолжить изучение математики или информатики.
Прив.-доз. Д-р Питер Боррманн (NoName) — глава компании Quants Consulting, специализирующейся на количественном моделировании и стратегии. Петер учился в Геттингене, Ольденбурге и Бремене и имеет докторскую степень.Доктор теоретической физики. Он получил высшее образование в Ольденбургском университете, где шесть лет проработал доцентом-исследователем. До основания своей компании Питер работал в IBM Business Consulting Services на разных должностях.
Мариос Михайлидис (KazAnova) — менеджер по науке о данных в Даннхамби и по совместительству доктор философии по машинному обучению в Университетском колледже Лондона (UCL), специализирующийся на улучшении рекомендательных систем. Он работал как в маркетинговом, так и в кредитном секторах на рынке Великобритании и возглавлял множество аналитических проектов по различным темам, в том числе: привлечение, удержание, рост, обнаружение мошенничества, оптимизация портфеля и многое другое.В свободное время он создал KazAnova, графический интерфейс для кредитного скоринга, полностью сделанный на Java. Он бывший Kaggle # 1.
Сонни Ласкар (Sonny Laskar) — менеджер-консультант по аналитике в Microland (Индия), где он создает платформу аналитики ИТ-операций. У него более восьми лет опыта работы в области ИТ-инфраструктуры, облачных вычислений и машинного обучения. Он получил степень магистра делового администрирования в первой индийской B School IIM, Индор. Он заядлый танцор брейк-данса и любит решать логические головоломки.
Программа Avito Bug Bounty | Открыть Bug Bounty
Avito запускает программу вознаграждения за ошибки, чтобы гарантировать максимальную безопасность и конфиденциальность своих веб-сайтов.Каждый имеет право участвовать в программе при соблюдении нижеприведенных условий и требований Avito
.Open Bug Bounty выполняет сортировку и проверку отправленных материалов. Однако, , мы никогда не вмешиваемся в дальнейший процесс устранения уязвимостей и раскрытия информации между Avito и исследователями .
Программа Bug Bounty разрешает только частную отправку.
Следующие веб-сайты подпадают под действие программы: В следующем разделе содержится информация об уязвимостях, не требующих навязчивого тестирования в соответствии с правилами Open Bug Bounty:
Общие требования: Уязвимости вне области видимости: Требования к тестированию: Строго запрещено: Возможные награды: На данный момент только Престижность. |
Предоставлено исследователями безопасности, которые сообщили об уязвимостях в этой программе вознаграждения за обнаружение ошибок:
Персонализированный стакан из нержавеющей стали на 22 унции с виниловой наклейкой с монограммой от Avito Bachelorette. В комплект входят соломка и крышка для новобрачных. Подарки для дома и кухни Товары ручной работы malibukohsamui.com
Персонализированный стакан из нержавеющей стали на 22 унции с индивидуальной виниловой наклейкой с монограммой от Avito Bachelorette Включает соломинку и крышку для свадебных вечеринок. Товары для дома и кухни ручной работы malibukohsamui.комПерсонализированный стакан для подружки невесты из нержавеющей стали на 22 унции с индивидуальной виниловой наклейкой с монограммой от Avito Bachelorette Включает в себя подарки для свадебной вечеринки с соломкой и крышкой, в том числе соломинку и крышку, подарки для свадебной вечеринки. : Стаканы — ✓ Возможна БЕСПЛАТНАЯ ДОСТАВКА при подходящих покупках, Купите персонализированный стакан из нержавеющей стали на 22 унции с виниловой наклейкой с индивидуальной монограммой от Avito — Включает соломинку и крышку — Подружка невесты, Девичник, Интернет-магазины модной одежды, Флагманские магазины, Индивидуальные рекомендации, БЕСПЛАТНЫЕ подарки и цена Обещаю, Получите эксклюзивные предложения для Нового прибытия! Изготовленная на заказ виниловая наклейка с монограммой от Avito Bachelorette. В комплект входят подарки для свадебной вечеринки с соломкой и крышкой. Персонализированный стакан из нержавеющей стали на 22 унции с малибукохсамуи.com.
Персонализированный стакан для подружки невесты из нержавеющей стали на 22 унции с виниловой наклейкой с индивидуальной монограммой от Avito Bachelorette Включает соломинку и крышку для свадебных подарков
Персонализированный стакан из нержавеющей стали на 22 унции с индивидуальной виниловой наклейкой с монограммой от Avito — Включает соломинку и крышку — Подарки для подружек невесты, девичника, свадебных вечеринок: ручной работы. Купите персонализированный стакан из нержавеющей стали на 22 унции с виниловой наклейкой с индивидуальной монограммой от Avito — Включает соломинку и крышку — Подарки для подружек невесты, девичника, свадебных вечеринок: стаканы — ✓ БЕСПЛАТНАЯ ДОСТАВКА при подходящих покупках.
Персонализированный стакан для подружки невесты из нержавеющей стали на 22 унции с виниловой наклейкой с индивидуальной монограммой от Avito Bachelorette Включает в себя подарки для свадебной вечеринки с соломкой и крышкой
Сделано вручную в Аризоне. Персонализированный кожаный бумажник для полевых заметок Обложка для Moleskine Обложка для паспорта Обложка для бумажников для полевых заметок, персонализированный мужской кожаный браслет Infinity с сильной магнитной застежкой. синий фиолетовый светло-зеленый Глиняные сосуды Керамика Керамическая посуда ручной работы Блюдо из листьев гортензии Керамическое мыло с приправой Конфеты, керамическая подставка для ложки Колесо Брошенная керамика 290a Держатель кухонной утвари Керамика.Коричневая диагональная квадратная огранка «подушка» Кристалл Имитация топаза Ноябрьский камень для рождения Гипоаллергенный ниобиевый ободок в виде короны из бронзы Необычные висячие серьги-подвески Идея подарка. Geeky Rings Регулируемое алюминиевое кольцо с оберткой в стиле C Expecto Patronum, персонализированная разделочная доска Приближается ужин Игра престолов Дом Старка Лютоволка с гравировкой Пользовательское семейное измельчение Свадебный подарок Годовщина Новоселье День рождения game02. Подушка Bless Our Nest Throw Pillow COVER 14 X 14 Искусственная мешковина. просто сделай это хорошим, а? все были сказками в конце концов.. Доктор Кто вдохновил браслет. Баннер на день рождения Bubble Guppies. Название Дизайн Устойчивый к соломе и разливу сдвижная крышка Шрифт Camper RV Tumbler 20 унций из нержавеющей стали, обернутый кожзаменителем, с прозрачной крышкой. Индивидуальная гравировка на заказ, включая выбор цвета. DecorHouzz Coordinates Home Customized Pillow Longitude Latitude подушка. Мужское 8-полосное кольцо-головоломка в стиле 8WB, коробка для кольца цвета слоновой кости для помолвки и свадебной церемонии. Переработанные винтажные серьги-рычаги с ремешком на спине и цветком из стерлингового серебра с кобальтовой кремовой банкой 1960-х годов.Брелок I Fucking Love You Забавный подарок девушке Подарок на День Святого Валентина Забавный подарок парню, головоломка Apatosaurus Pentomino. Розовый и золотой Минни Маус с золотыми блестками Минни Маус Минни Маус Центральное украшение.
Напишите нам:
Имя *
Электронная почта *
Персонализированный стакан для подружек невесты из нержавеющей стали на 22 унции с виниловой наклейкой с индивидуальной монограммой от Avito Bachelorette Включает соломинку и крышку для свадебных вечеринок
Подкладка из 100% шерсти для оптимальной структуры.Людям с домашними животными или тем, кто страдает аллергией, следует чаще менять воздушные фильтры кондиционеров, сверла MaxTool 45/64 ‘Twist Drill с коническим хвостовиком Морзе; Качественная быстрорежущая сталь M2; Черная окись; 118 Deg Обычное Долото; МТ №2; TS02B05R45 — -,; Пожалуйста, не стирайте в стиральной машине или щеткой, пожалуйста, проверьте детали размеров в описании перед заказом — Design Lab MN LS-9444-MGRY Обеденный стул Grazia Moss Grey — Стулья. Размеры упаковки: 6 х 5 х 1 дюйм. Персонализированный стакан для подружки невесты из нержавеющей стали на 22 унции с индивидуальной виниловой наклейкой с монограммой от Avito Bachelorette Включает в себя подарки для свадебной вечеринки с соломкой и крышкой .Камень дружбы и удачи. 5 белых цветов из органзы со стразами 18 цветов, ** Набор содержит дизайн, слегка напечатанный в цвете на ковровом полотне. Каждая вещь сделана на заказ и уникальна, а также то, что удерживает прическу в ваших волосах. Эти файлы предназначены для работы со следующим программным обеспечением :. Из-за разницы в освещении и настройках экрана. Персонализированный стакан для подружки невесты из нержавеющей стали на 22 унции с индивидуальной виниловой наклейкой с монограммой от Avito Bachelorette Включает в себя подарки для свадебной вечеринки с соломкой и крышкой .Перед размещением заказа на этот товар, Ives Lock House № 58496: Дом и кухня, отправьте нам сообщение, и мы вернем или заменим вашу покупку, Мы обещаем 30-дневную гарантию возврата денег и 12-месячную гарантию, 【Удобно в использовании】 Увеличенное отверстие сзади позволяет кошкам пользоваться лотком для туалета, не открывая спасательный костюм и не сворачивая его. Женские брюки оригинального кроя Carhartt Crawford Pant Work Utility: одежда и аксессуары. фестивальные события; также можно использовать в розничной торговле и на предприятиях. Персонализированный стакан для подружки невесты из нержавеющей стали на 22 унции с индивидуальной виниловой наклейкой с монограммой от Avito Bachelorette Включает в себя подарки для свадебной вечеринки с соломкой и крышкой .
Сообщение *
Персонализированный стакан для подружек невесты из нержавеющей стали на 22 унции с виниловой наклейкой с индивидуальной монограммой от Avito Bachelorette Включает соломинку и крышку для свадебных вечеринок
Подарки для свадебной вечеринки: бокалы — ✓ Возможна БЕСПЛАТНАЯ ДОСТАВКА при соответствующих критериях покупки, Купить персонализированный стакан из нержавеющей стали на 22 унции с виниловой наклейкой с индивидуальной монограммой от Avito — Включает соломинку и крышку — Подружки невесты, Девичник, Интернет-магазины модной одежды, Флагманские магазины, Индивидуальные рекомендации, БЕСПЛАТНЫЕ подарки и ценовое обещание, Получите эксклюзивные предложения для Нового прибытия!
уроков, извлеченных из охоты за запрещенным контентом на Kaggle
Ранее мы занимались обнаружением поддельных интернет-магазинов и разработкой функций.Теперь мы покажем некоторый прогресс и извлечем уроки из наших идей (и ошибок), участвуя в соответствующем испытании Kaggle.
Vowpal Wabbit близко к победе
Kaggle провела конкурс совместно с Avito.ru. Задача заключалась в том, чтобы автоматически обнаруживать незаконный контент в рекламе на своем сайте.
Многие участники использовали Vowpal Wabbit для этой задачи. Некоторым помогает эталонный тест от Фокстрот, другим он начинает с него задачу. Модель с наивысшим рейтингом, использующая VW в качестве основы, была внедрена в прошлом году.В этом пятом ролике использовался тест, предоставленный Avito как часть конвейера.
Наша команда (Жюль ван Лигтенберг, Фил Каллитон и я, Трискелион) заняла 8-е место со средней точностью ~ 0,985. Команда российских модераторов имела среднюю точность ~ 0,988 при разметке набора данных. Наша команда не говорила на русском, только на английском, голландском и MurmurHash.
Поистине удивительно, что столько международных команд, не владеющих русским языком, поднялись на вершину. Иван Гуз — администратор конкурса
Статистика
Что сработало
Что (совсем) не сработало
- Настройка гиперпараметров. Мы не настраивали конвейер с перекрестной проверкой и оценкой модели в соответствии с показателями конкурентов. Параметры были настроены скромно, основываясь на слегка обеспокоенных догадках.
- TF-IDF . Мы подозревали, что TF * IDF улучшит результат. Подобрать фильтр TF * IDF как для поезда, так и для тестового набора и заменить все наборы данных функциями с правильным пространством имен оказалось слишком громоздким / сложным.
- Quick кодировка символов обработка. Мне потребовалось слишком много времени, чтобы заставить это работать, а затем я начал заново, полностью поцарапав код теста, так и не улучшив его. Преобразование кириллических символов в латинские символы действительно помогло, но это грязный обходной путь.
- Правильная проверка набора данных . Все заголовки столбцов и переменные были на языке, на котором наша команда не говорила. Все отзывы о характеристиках модели основывались на лидерах. Сначала я пропустил 2.В составе поезда 5 миллионов строк (об этом позже).
- Упаковочные машины СВД . Хотя он мог превзойти собственный тест Avito на отметке ~ 0,925, с ~ 0,952 эти модели не внесли вклад в окончательный ансамбль.
Президент Картер признался, что имеет ограниченный опыт работы с Vowpal Wabbits, предпочитая придерживаться р.
Что могло сработать
- Ближайшие соседи . Александр Дьяконов объединил ближайших соседей (120 соседей, веса в зависимости от расстояния) и базовую модель Vowpal Wabbit, заняв 5-е место.
- Машины факторизации . Майкл Ярер и Михаил Трофимов использовали факторизационные машины для ранжирования выше 0,98
- SVC . Победители, Джулио и Барисумог, сообщают об успешном использовании SVC.
- Случайные леса . Учитывая, что это trackrecord как один из самых мощных алгоритмов в машинном обучении: работа RF, вероятно, является само собой разумеющейся. Наша лучшая исследовательская модель (полезная для выявления хороших функций и т. Д.) Также использовала случайные леса sklearn, хотя и с более умеренной оценкой ~ 0.805.
- TF-IDF . Почти все в первой десятке использовали tfidf-векторизацию своих наборов данных.
- Используя , предоставленный Avito эталонным тестом . Он содержал как знания предметной области, так и несколько очень специфических приемов предварительной обработки данных.
- Обучение моделей для каждой категории . Торговля повышенной сложностью для увеличения предсказательной силы.
Простота внедрения
Я полностью согласен со статьей FastML об этом соревновании vs.индустрия. В отрасли достаточно поразить (часто движущуюся) цель, а выгодно попасть в яблочко. В Kaggle стрелки разбиваются.
Vowpal Wabbit против индустрии
Решения, основанные на Vowpal Wabbit, будут достаточно хорошо работать для Avito или для любого большого набора данных, помеченного модератором, если на то пошло.
Хотя даже с Vowpal Wabbit и базовыми техниками требуется осторожность.
- Использование набора из 10 различных моделей Vowpal Wabbit означает запуск 10 экземпляров Vowpal Wabbit, если вы хотите получать прогнозы в реальном времени.
- Обучите конкретную модель для каждой категории, и сайт с более чем 1000 категориями просто сойдет с ума.
- TF * IDF в сочетании с переобучением новых данных добавляет этап предварительной обработки и увеличивает сложность.
Высоко настроенные одиночные модели Vowpal Wabbit приближаются к 0.98. Усреднение результатов двух умеренно вдохновленных моделей Vowpal Wabbit позволяет получить одну из лучших 10% диапазона и около 10 лучших.
Набор функций
В наборе данных был столбец (атрибуты), содержащий объект JSON.Мы действительно хотели создать из них аккуратные функции, но полагаться на Google Translate для разработки функций было слишком много времени. Мы поместили все, что сценарий мог проанализировать, в один пакет «функций», смешав числовые, категориальные и текстовые функции.
1 «10000074 | F category_x_transport emails_cnt: 0,0 emails_cnt_x_0 avtomobil_ против ideal_nom sostoanii exclamationmark 2005 года- dekabr_ все- Detali Родные два- hozaina nikakih vlojenij пе trebuet komplektazia polnaa kondizioner гур perednie Стекло pod_emniki 2 poduski frontal_nye все- rabotaet otlicno signalizazia с obratnoj svaz_u Muzyka мр3 lubye proverki ZA VAS Scet восклицательный знак восклицательный знак восклицательный знак renault logan 2005 цена: 205000.0 price_x_205000 phones_cnt: 0,0 phones_cnt_x_0 urls_cnt: 0,0 urls_cnt_x_0 ob_em_dvigatela: 1.6 ob_em_dvigatela_x_1_6 model__x_logan marka_x_renault tip_dvigatela_x_benzinovyj korobka_peredac_x_mehaniceskaa probeg_x_180_000_189_999 sostoanie_x_ne_bityj rul__x_levyj tip_kuzova_x_sedan zvet_x_seryj privod_x_perednij god_vypuska: 2005,0 god_vypuska_x_2005 subcategory_x_avtomobili_s_probegom
Первая строка из набора тестов Vowpal Wabbit
Используя этот подход, не зависящий от данных, и практически не создавая функций, можно использовать Vowpal Wabbit для получения хороших результатов.Если у вас есть хороший модератор, помеченный набором данных, но пока нет хорошего решения, свяжитесь со мной или оставьте сообщение: наша команда хотела бы продолжить работу над такими наборами данных.
Короче говоря, мы вообще не относились с большим уважением к данным или Vowpal Wabbit. Мы бросили миллионы людей в Wabbit, и от него осталась только пещера, окруженная костями.
Как я забыл ~ 2,5 миллиона строк и почти сошёл с рук.
Мне потребовалось много времени, чтобы присоединиться к конкурсу, потому что я не мог запустить тест.Обычно много вдохновения и импульса дает запуск или воссоздание эталона. Я быстро стал командой UnicodeEncodeError.
Я работал с европейскими языками, в которых действительно есть изрядное количество диакритических знаков и других загадочных символов, но Windows + The Python Benchmark + русский текст для меня равнялись нулю.
Когда я, наконец, представил свои первые прогнозы на VW, я получил оценку около 0,971. Отвечая (неправильно) на вопрос по годам на форумах, я, наконец, обнаружил, что набор данных при чтении в Windows дает около 1.5 миллионов строк, и при чтении с помощью Pandas или на других платформах вы получите полный размер. Примечание для себя: продолжайте записывать файлы в режиме «wb», начинайте чтение файлов в режиме «rb».
Желание учиться (без ошибок)
По словам Сергея Юргенсона, существует как минимум три типа Кагглеров:
- Желающих учиться
- желающих выиграть деньги
- желающих поднять репутацию.
До этого момента я явно находился в лагере желающих учиться.Мне нечего было терять, соревнуясь и делая ошибки новичка. Но теперь мне становится плохо, когда я выставляю себя дураком такими простыми ошибками.
Я все еще с радостью узнаю об этом. Если что публично на форумах хоть немного стыдно, пусть будет. Если бы я объединился раньше (или использовал более одной ОС), я бы, вероятно, узнал об этом раньше.
Я понимаю, что в соревнованиях Kaggle можно в некоторой степени неуважительно относиться к контексту (знанию предметной области) данных, но всегда следует уважать синтаксис.Проверка данных (измерение качества данных) должна быть важной частью конвейера.
Так как насчет тех поддельных интернет-магазинов?
Проблема в том, что я хотел бы получить хороший результат, но должен создать для этого свой набор данных. Я не могу избавиться от прежнего убеждения, что машинное обучение может бороться с незаконным и мошенническим контентом в Интернете, поэтому боюсь, что стану жертвой тонкой формы переобучения.
- Выберите лучшее из: Точность, коэффициент ошибок, (A) ROC, F1, процентное улучшение предыдущего лучшего, процентное улучшение коэффициента ошибок и т. Д.. для вашего метода. Для бонусных баллов используйте неоднозначные графики.
- Выберите для отчета о результатах для некоторого подмножества наборов данных, в которых ваш алгоритм работает хорошо.
- Измените проблему, чтобы улучшить вашу производительность.
- После выпуска набора данных можно заставить алгоритмы хорошо работать с набором данных, используя процесс проектирования обратной связи, что указывает на лучшую производительность, чем мы могли бы ожидать в будущем. На некоторых конференциях есть канонические наборы данных, которые использовались в течение десятилетия.
Джон Лэнгфорд (2005) — Тонкие методы переобучения
Я понял, что то, что я буду делать, — это решение очень конкретной проблемы: узнать, как я собрал и пометил свой набор данных. Чтобы сделать это правильно, мне понадобится способ реалистично воспроизвести новый набор тестов, но тот, который создается через неделю после того, как я создал свою модель, предпочтительно реальными пользователями модели.
Короче говоря, оправдать себя может только серийная модель. Чтобы получить представление о мерах по борьбе со спамом в масштабе сети, прочтите эту внутреннюю историю из окопов, написанную семилетним инженером Google.
Вначале… было регулярное выражение. Gmail поддерживает фильтрацию регулярных выражений, но только в крайнем случае. Ошибиться легко, как в тот раз, когда мы случайно заблокировали электронную почту несчастной итальянки по имени «Оли * виа Гра * дина». Кроме того, этот метод не интернационализирует, и рандомизировать текст, чтобы пропустить черные списки, легко.
Я буду искать больше хорошо опубликованных наборов данных в этой области, чтобы сравнивать свои подходы с другими. Если ваш сайт создает большой объем данных и сталкивается с аналогичной проблемой спама и незаконного содержания, свяжитесь со мной или оставьте сообщение, я с удовольствием пообщаюсь с вами.
Дополнительная литература
Код ансамбля
from glob import glob из коллекций импортировать defaultdict def kaggle_rank_avg (glob_files, loc_out): "" " Усреднение нескольких отправленных файлов для Kaggle "Охота за запрещенным содержанием" Укажите местоположение для отправки файлов Получите новый файл для отправки на loc_out "" " ранги = defaultdict (с плавающей запятой) с open (loc_out, "wb") в качестве выходного файла: печать (glob_files) для i, glob_file в перечислении (glob (glob_files)): печать (glob_file) для e строка в enumerate (open (glob_file, " rb ")): если i == 0 и e == 0: Outfile.написать (строка) если e> 0: ранги [line.strip ()] + = e для k в отсортированном (разряды, ключ = ranks.get): Outfile.write ("% s \ n"% (k)) #kaggle_rank_avg ("d: \\ avito \\ *. csv", "d: \\ avito.ensemble.csv")
Изображения взяты из сообщества Викимедиа (авторы Soerfm, Mousse и Sven Manguard). Вступительное изображение взято из рекламного ролика с Avito.ru, а фото президента Картера, отказывающего в убежище Ваупал-Ваббиту, мне подарил мужчина в плаще на плохо освещенной парковке.
ЭволюцияCI в команде мобильных разработчиков / Блог Avito / Новости ИТ Sudo Null
Сегодня большинство программных продуктов разрабатывается в группах. Условия успеха для развития команды можно представить в виде простой схемы.После написания кода необходимо убедиться, что он:
- Работает.
- Ничего не нарушает, в том числе и код, который написали ваши коллеги.
Если оба условия соблюдены, то вы на пути к успеху.Чтобы легко проверить эти условия и не свернуть с прибыльного пути, они придумали непрерывную интеграцию.
CI — это рабочий процесс, в котором вы как можно чаще интегрируете свой код в общий код продукта. И не просто интегрировать, но и постоянно проверять, все ли работает. Поскольку проверять нужно много и часто, стоит подумать об автоматизации. На ручной тяге все проверить можно, но не стоит и поэтому.
- Люди дорогие .Час работы любого программиста дороже, чем час работы любого сервера.
- Люди ошибаются . Поэтому могут возникнуть ситуации, когда они запускали тесты не на той ветке или собирали не тот коммит для тестировщиков.
- Люди ленивы . Периодически, когда я заканчиваю задачу, у меня возникает мысль: «А что тут проверять? Написал две строчки — стопудово, все работает! «Я думаю, что некоторые из вас тоже иногда думают о таких мыслях. Но проверять нужно всегда.
Как непрерывная интеграция была внедрена и разработана в команде мобильных разработчиков Avito, как они достигли от 0 до 450 сборок в день и что машины сборки собирают 200 часов в день, — говорит Николай Нестеров (nnesterov) — участник всех эволюционных изменений CI / Приложение для Android на компакт-диске.
История построена на примере команды Android, но большинство подходов применимо и к iOS.
Давным-давно в команде Avito Android работал один человек.По определению от Continuous Integration ему ничего не требовалось: интегрироваться было не с кем.
Но приложение росло, появлялось все больше и больше новых задач, соответственно росла команда. В какой-то момент пришло время более формально наладить процесс интеграции кода. Было решено использовать Git flow.
Концепция Git flow известна: в проекте есть одна общая ветвь разработки, и для каждой новой функции разработчики вырезают отдельную ветвь, фиксируют ее, отправляют, а когда они хотят внедрить свой код в разработать ветку, открыть запрос на перенос.Для обмена знаниями и обсуждения подходов мы ввели обзор кода, то есть коллеги должны проверять и подтверждать код друг друга.
Проверки
Смотреть код глазами — это круто, но этого недостаточно. Поэтому вводятся автоматические проверки.
- В первую очередь проверяем сборку ARC .
- Лоты из тестов Junit .
- Мы считаем покрытие кода , так как запускаем тесты.
Чтобы понять, как следует проводить эти проверки, давайте рассмотрим процесс разработки в Avito.
Схематично это можно представить так:
- Разработчик пишет код на своем ноутбуке. Вы можете запускать проверки интеграции прямо здесь — либо с помощью фиксации, либо просто запускать проверки в фоновом режиме.
- После того, как разработчик запустил код, он открывает запрос на вытягивание. Чтобы его код попал в ветку разработки, необходимо пройти проверку кода и собрать необходимое количество подтверждений. Здесь вы можете включить проверки и сборки: пока все сборки не будут успешными, запрос на включение не может быть объединен.
- После слияния пулл реквеста и разработки кода вы можете выбрать удобное время: например, ночью, когда все серверы свободны, и проверять диски по своему усмотрению.
Никто не любил запускать тесты на своем ноутбуке. Когда разработчик завершил работу над функцией, он хочет быстро запустить ее и открыть запрос на перенос. Если в этот момент запускаются какие-то длинные проверки, это не только не очень приятно, но и тормозит развитие: пока ноутбук что-то проверяет, нормально работать с ним невозможно.
Нам очень понравилось запускать проверки в ночное время, потому что много времени и серверов, можно погулять. Но, к сожалению, когда код функции попал в разработку, у разработчика уже было гораздо меньше мотивации исправлять ошибки, обнаруженные CI. Я периодически ловил себя на мысли, когда смотрел в утреннем отчете обо всех обнаруженных ошибках, что исправлю их когда-нибудь позже, потому что теперь в Jira есть классная новая задача, которую я просто хочу начать делать.
Если проверки блокируют pull request, то мотивации достаточно, потому что пока сборки не станут зелеными, код не попадет в разработку, а значит, задача не будет выполнена.
В итоге мы выбрали такую стратегию: ночью прогоняем максимально возможный набор проверок, а самые критичные из них и, главное, быстрые, выполняем по запросу на вытягивание. Но мы не останавливаемся на достигнутом — параллельно оптимизируем скорость прохождения проверок, чтобы они переходили из ночного режима в проверки по запросу на вытягивание.
В то время все наши сборки были достаточно быстрыми, поэтому мы просто включили сборку ARC, тесты Junit и расчет покрытия кода с помощью блокировщика запросов на вытягивание.Они включили его, обдумали и отказались от покрытия кода, потому что думали, что он нам не нужен.
Нам потребовалось два дня, чтобы завершить базовую настройку CI (здесь и далее временная оценка является приблизительной, необходима для масштабирования).
После этого стали думать дальше — правильно ли мы это проверяем? Правильно ли мы запускаем сборки по запросу на вытягивание?
Мы начали сборку на последнем коммите ветки, с которой открыт запрос на вытягивание. Но проверки этой фиксации могут только показать, что код, написанный разработчиком, работает.Но они не доказывают, что он ничего не ломал. Фактически, вам нужно проверить статус ветки разработки после того, как в нее была добавлена функция.
Для этого мы написали простой bash-скрипт premerge.sh:
#! / Usr / bin / env bash
set -e
git fetch origin разработка
git merge origin / develop
Здесь все последние изменения из develop просто подтягиваются и объединяются в текущую ветку. Мы добавили скрипт premerge.sh в качестве первого шага всех сборок и начали проверять именно то, что мы хотим, то есть интеграцию .
На локализацию проблемы, поиск решения и написание этого сценария ушло три дня.
Приложение развивалось, задач появлялось все больше, команда росла, и premerge.sh иногда начинал нас подводить. В разработку проникли противоречивые изменения, сломавшие сборку.
Пример того, как это происходит:
Два разработчика одновременно начинают распиливать функции A и B. Разработчик функции A обнаруживает неиспользуемую функцию в проекте answer ()
и, как хороший разведчик, удаляет ее.В то же время разработчик функции B в своей ветке добавляет новый вызов этой функции.
Разработчики заканчивают работу и одновременно открывают пул реквест. Начинается сборка, premerge.sh проверяет оба пул-реквеста на наличие нового состояния разработки — все проверки зеленые. После этого функции запроса на вытягивание A объединяются, функции запроса на вытягивание B объединяются … Бум! Разработка прерывается, потому что в коде разработки есть вызов несуществующей функции.
Если не собирается развиваться, это местное бедствие .Вся команда не может ничего собрать и отдать на тестирование.
Так получилось, что я чаще всего занимался инфраструктурными задачами: аналитикой, сетью, базами данных. То есть я написал функции и классы, которые используют другие разработчики. Из-за этого я очень часто попадал в такие ситуации. У меня даже когда-то была такая картина.
Так как это нас не устраивало, мы начали прорабатывать варианты, как этого избежать.
Как не сломать разработку
Первый вариант: перестроить все запросы на вытягивание при разработке обновления. Если в нашем примере pull request с функцией A сначала попадает в разработку, pull request функции B будет перестроен, и, соответственно, проверки не пройдут из-за ошибки компиляции.
Чтобы понять, сколько времени это займет, рассмотрим пример с двумя PR. Открываем два PR: два билда, два тестовых запуска. После того, как первый ПР залит в проявку, второй нужно перестраивать. Итого два запуска PR из трех запусков проверок: 2 + 1 = 3.
В принципе нормально. Но мы посмотрели статистику, и типичная ситуация в нашей команде — 10 открытых PR, а затем количество проверок — это сумма прогрессии: 10 + 9 +… + 1 = 55. То есть для того, чтобы принять 10 ПР, нужно 55 раз перестроить. И это в идеальной ситуации, когда все проверки проходят с первого раза, когда никто не открывает дополнительный пул-реквест, пока эта десятка обрабатывается.
Представьте себя разработчиком, которому нужно успеть сначала нажать кнопку «объединить», потому что, если это сделает сосед, вам придется подождать, пока все сборки не пройдут заново … Нет, не будет работать, это серьезно замедлит развитие.
Второй возможный способ: для сбора запроса на вытягивание после проверки кода. То есть открыть пул реквест, собрать необходимое количество обновлений у коллег, исправить то, что нужно, затем запустить сборки. Если они успешны, пул-реквест объединяется с разработкой. В этом случае дополнительных перезагрузок нет, но обратная связь сильно тормозит. Как разработчик, когда я открываю пул-реквест, мне сразу хочется узнать, собирается ли он. Например, если тест дает сбой, вам нужно быстро это исправить.В случае отложенной сборки обратная связь замедляется, что означает всю разработку. Это нас тоже не устраивало.
В итоге остался только третий вариант — до цикла . Весь наш код, все наши исходники хранятся в репозитории на сервере Bitbucket. Соответственно, нам пришлось разработать плагин для Bitbucket.
Этот плагин переопределяет механизм слияния запросов на вытягивание. Начало стандартное: открывается PR, запускаются все сборки, проходит проверка кода.Но после того, как проверка кода пройдена, и разработчик решает нажать «объединить», плагин проверяет, в каком состоянии были выполнены проверки разработки. Если разработка удалось обновить после сборки, плагин не позволит вам объединить такой запрос на включение в основную ветку. Он просто перезапустит сборки относительно новой разработки.
В нашем примере с конфликтующими изменениями такие сборки завершатся ошибкой из-за ошибки компиляции. Соответственно, разработчик функции B должен будет исправить код, перезапустить проверки, после чего плагин автоматически применит pull request.
До внедрения этого плагина у нас было в среднем 2,7 тестовых прогона на запрос на вытягивание. С плагином было 3,6 запусков. Нас это устраивало.
Стоит отметить, что у этого плагина есть недостаток: он перезапускает сборку только один раз. То есть все равно остается маленькое окно, через которое могут развиваться противоречивые изменения. Но вероятность этого невелика, и мы пошли на компромисс между количеством запусков и вероятностью отказа. За два года его сняли всего один раз, поэтому, наверное, не зря.
На написание первой версии плагина для Bitbucket у нас ушло две недели.
Новые чеки
Между тем наша команда продолжала расти. Добавлены новые проверки.
Мы подумали: зачем исправлять ошибки, если их можно предотвратить? И вот они ввели статический анализ кода . Мы начали с lint, который включен в Android SDK. Но на тот момент он вообще не умел работать с кодом Kotlin, а у нас уже есть 75% приложения, написанного на Kotlin.Поэтому в lint были добавлены встроенные проверки Android Studio .
Для этого мне пришлось сильно извращаться: взять Android Studio, упаковать в Docker и запустить на CI с виртуальным монитором, чтобы он думал, что он работает на реальном ноутбуке. Но это сработало.
Также в это время мы начали писать много инструментальных тестов и реализовали тестов скриншотов . Это когда эталонный снимок экрана создается для отдельного небольшого представления, и тест заключается в том, что снимок экрана делается из представления и сравнивается непосредственно с эталонным пикселем за пикселем.Если есть несоответствие, значит, куда-то пропал макет или что-то не так в стилях.
Но инструментальные тесты и тесты снимков экрана нужно запускать на устройствах: на эмуляторах или на реальных устройствах. Учитывая, что тестов много и их часто гоняют, нужна целая ферма. Начать собственную ферму слишком трудоемко, поэтому мы нашли готовый вариант — Firebase Test Lab.
Тестовая лаборатория Firebase
Он был выбран потому, что Firebase — это продукт Google, то есть он должен быть надежным и вряд ли когда-нибудь умрет.Цены доступные: 5 долларов за час работы реального устройства, 1 доллар за час работы эмулятора.
На внедрение Firebase Test Lab в нашем CI ушло около трех недель.
Но команда продолжала расти, и Firebase, к сожалению, начала нас подводить. На тот момент у него не было SLA. Иногда Firebase заставлял нас ждать, пока освободится необходимое количество устройств для тестирования, и не начинал запускать их сразу, как мы этого хотели.Ожидание в очереди заняло до получаса, а это очень долго. Инструментальные тесты проводились при каждом PR, задержки очень сильно замедляли разработку, а затем ежемесячный счет приходился с круглой суммой. В общем, от Firebase было решено отказаться и пилить собственными силами, так как команда достаточно выросла.
Докер + Python + Баш
Они взяли докер, напихали в него эмуляторы, написали простую программу на Python, которая в нужный момент поднимает нужное количество эмуляторов в нужной версии и останавливает их, когда это необходимо.И, конечно, парочка bash-скриптов — куда же без них?
На создание собственной тестовой среды ушло пять недель.
В результате для каждого запроса на вытягивание существовал обширный блокирующий список проверок слияния:
- Сборка ARC;
- Тесты Junit
- Lint;
- Android Studio проверяет;
- Контрольно-измерительные испытания;
- Скриншот-тесты.
Это предотвратило множество возможных поломок.Технически все заработало, но разработчики пожаловались, что ждать результатов слишком долго.
Слишком долго — это сколько? Мы загрузили данные из Bitbucket и TeamCity в систему анализа и поняли, что среднее время ожидания составляет 45 минут . То есть разработчик, открывая пул-реквест, в среднем ожидает результата сборки 45 минут. На мой взгляд, это много, и так работать нельзя.
Конечно, мы решили ускорить все наши сборки.
Ускорение
Видя, что часто сборки идут в линию, первое, что мы купили , было железо — всестороннее развитие — самое простое.Сборки перестали стоять в очереди, но время ожидания уменьшилось совсем немного, потому что некоторые проверки сами по себе гнались очень долго.
Убираем слишком длинные чеки
Наша непрерывная интеграция может выявлять такие типы ошибок и проблем.
- Не собираюсь на . CI может отловить ошибку компиляции, когда из-за конфликтующих изменений что-то не собирается. Как я уже сказал, тогда никто ничего не может собрать, развитие поднимается, и все нервничают.
- Ошибка в поведении .Например, когда приложение собрано, но при нажатии на кнопку происходит сбой, либо кнопка вообще не нажимается. Это плохо, потому что такая ошибка может добраться до пользователя.
- Ошибка в макете . Например, кнопка нажата, но сдвинута на 10 пикселей влево.
- Увеличение технического долга .
Глядя на этот список, мы поняли, что критичны только первые два пункта. Мы хотим, прежде всего, отловить такие проблемы. Ошибки в верстке выявляются на этапе проверки дизайна и легко исправляются.Работа с техническим долгом требует отдельного процесса и планирования, поэтому мы решили не проверять его на pull request.
Исходя из этой классификации мы встряхнули весь список проверок. Вычеркнул Lint и отложил его запуск на ночь: просто для того, чтобы он выдал отчет о том, сколько проблем в проекте. Мы договорились работать отдельно с технической задолженностью, но полностью отказалась от проверки Android Studio . Docker’s Android Studio для запуска инспекций звучит интересно, но доставляет много проблем в поддержке.Любое обновление версий Android Studio — это борьба с малоизвестными ошибками. Также было сложно поддерживать тесты скриншотов, потому что библиотека работала не очень стабильно, были ложные срабатывания. Скриншоты тестов удалены из списка проверок .
В итоге осталось:
- Сборка АРК;
- Испытания Junit
- Контрольно-измерительные испытания.
Удаленный кеш Gradle
Без жестких проверок дела пошли лучше.Но совершенству нет предела!
Наше приложение уже разбито примерно на 150 модулей Gradle. Обычно в этом случае удаленный кеш Gradle работает хорошо, и мы решили его попробовать.
Удаленный кеш Gradle — это служба, которая может кэшировать артефакты сборки для отдельных задач в отдельных модулях. Gradle вместо фактической компиляции кода перебирает удаленный кеш через HTTP и спрашивает, выполнил ли кто-нибудь уже эту задачу. Если да, просто скачайте результат.
Запуск удаленного кеша Gradle прост, потому что Gradle предоставляет образ Docker.Нам удалось это сделать за три часа.
Все, что требовалось, — это запустить Docker и зарегистрировать одну строку в проекте. Но хотя запустить его можно быстро, чтобы все работало хорошо, на это уйдет много времени.
Ниже приведен график промахов кеша.
В самом начале процент пропусков мимо кеша составлял около 65. Через три недели нам удалось довести это значение до 20%. Выяснилось, что задачи, которые собирает Android-приложение, имеют странные транзитивные зависимости, из-за которых Gradle пропускал кеш.
Подключив кеш мы сильно ускорили сборку. Но кроме сборки еще гонятся КИП, и гонятся давно. Возможно, не все тесты нужно выполнять для каждого запроса на вытягивание. Чтобы выяснить это, мы используем анализ воздействия.
Анализ на удар
По запросу на перенос мы создаем git diff и находим модифицированные модули Gradle.
Имеет смысл запускать только те инструментальные тесты, которые тестируют модифицированные модули и все модули, которые от них зависят.Нет смысла запускать тесты для соседних модулей: там код не изменился, и ничего не может сломаться.
Инструментальные тесты не так просты, потому что они должны быть расположены в прикладном модуле верхнего уровня. Мы применили эвристику анализа байт-кода, чтобы понять, к какому модулю принадлежит каждый тест.
На обновление контрольно-измерительных приборов для тестирования только задействованных модулей ушло около восьми недель.
Проверочные меры по ускорению сработали успешно.Из 45 минут мы добрались примерно до 15. Четверть часа ждать сборки — это уже нормально.
Но сейчас разработчики стали жаловаться, что им непонятно, какие сборки запускаются, куда будет смотреть журнал, почему сборка красная, какой тест упал и т.д.
Проблемы с обратной связью тормозят разработку , поэтому мы постарались предоставить максимально понятную и подробную информацию о каждом PR и билде. Мы начали с комментариев к Bitbucket для PR, указывали, какая сборка упала и почему, писали целевые сообщения в Slack.В конце концов, они сделали информационную панель для страницы PR со списком всех сборок, которые в настоящее время запущены, и их статусом: в очереди, запускается, вылетает или заканчивается. Вы можете нажать на сборку и попасть в ее журнал.
Шесть недель были потрачены на подробный отзыв.
Планы
Переходим к новейшей истории. Решив вопрос обратной связи, мы вышли на новый уровень — решили построить собственную ферму эмуляторов. Когда много тестов и эмуляторов, ими сложно управлять.В результате все наши эмуляторы переехали в кластер k8s с гибким управлением ресурсами.
Кроме того, есть и другие планы.
- Return Lint (и другой статический анализ). Мы уже работаем в этом направлении.
- Запустить все сквозных тестов на блокировщике PR во всех версиях SDK.
Итак, мы проследили историю развития Continuous Integration в Avito. Теперь я хочу дать несколько советов с точки зрения опытных.
Если бы я мог дать только один совет, это был бы такой:
Пожалуйста, будьте осторожны со сценариями оболочки!
Bash — очень гибкий и мощный инструмент, на нем очень удобно и быстро писать скрипты. Но с ним можно попасть в ловушку, и мы, к сожалению, в нее попали.
Все началось с простых скриптов, которые запускались на наших машинах сборки:
#! / Usr / bin / env bash
./gradlew assemblyDebug
Но, как вы знаете, со временем все развивается и усложняется — давайте запустим один скрипт из другого, давайте передадим туда некоторые параметры — в конце концов мне пришлось написать функцию, которая определяет, на каком уровне вложенности bash мы сейчас находимся, чтобы заменить необходимые цитаты, чтобы все началось.
Вы можете себе представить, сколько труда ушло на разработку таких сценариев. Советую не попадаться в эту ловушку.
Что можно заменить?
- Любой скриптовый язык. Написание на Python или Kotlin Script на удобнее, потому что это программирование, а не сценарии.
- Или опишите всю логику сборки в виде Пользовательских задач Gradle для вашего проекта.
Мы решили выбрать второй вариант, и теперь мы систематически удаляем все сценарии bash и пишем множество пользовательских перетасовок Gradle.
Совет № 2: держите свою инфраструктуру в коде.
Это удобно, когда конфигурация непрерывной интеграции хранится не в пользовательском интерфейсе Jenkins или TeamCity и т. Д., А в виде текстовых файлов непосредственно в репозитории проекта. Это дает возможность версии. Откатить или собрать код на другой ветке не составит труда.
Скрипты можно хранить в проекте. А что делать с окружающей средой?
Совет № 3: Docker может помочь с окружающей средой.
Определенно поможет Android разработчикам, iOS пока, к сожалению, нет.
Это пример простого файла докеров, который содержит jdk и android-sdk:
ОТ openjdk: 8
ENV SDK_URL = "https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" \
ANDROID_HOME = "/ usr / local / android-sdk" \
ANDROID_VERSION = 26 \
ANDROID_BUILD_TOOLS_VERSION = 26.0.2
# Скачать Android SDK
ЗАПУСТИТЬ mkdir "$ ANDROID_HOME" .android \
&& cd "$ ANDROID_HOME" \
&& curl -o sdk.zip $ SDK_URL \
&& распаковать sdk.zip \
&& rm sdk.zip \
&& да | $ ANDROID_HOME / tools / bin / sdkmanager --licenses
# Установить Android Build Tool и библиотеки
ЗАПУСТИТЬ $ ANDROID_HOME / tools / bin / sdkmanager --update
ЗАПУСТИТЬ $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; $ {ANDROID_BUILD_TOOLS_VERSION}" \
"платформы; android - $ {ANDROID_VERSION}" \
"платформа-инструменты"
ЗАПУСТИТЬ mkdir / приложение
WORKDIR / приложение
Написав этот docker-файл (скажу по секрету, можно не писать, а вытащить готовый из GitHub) и собрать образ, вы получите виртуальную машину, на которой сможете собрать приложение и запустить тесты Junit.
Два основных аргумента, почему это имеет смысл, — это масштабируемость и повторяемость. Используя docker, вы можете быстро создать дюжину агентов сборки, которые будут иметь точно такую же среду, что и старый. Это облегчает жизнь инженерам CI. Запихнуть android-sdk в докер довольно просто, с эмуляторами немного сложнее: нужно немного поработать (ну или скачать готовый еще раз с GitHub).
Совет №4: не забывайте, что проверки делаются не ради проверок, а для людей.
Для разработчиков очень важна быстрая и, главное, четкая обратная связь: что сломали, какой тест упал, где журнал сборки.
Совет № 5: Будьте прагматичны с непрерывной интеграцией.
Четко поймите, какие типы ошибок вы хотите предотвратить, сколько вы готовы потратить ресурсов, времени, компьютерного времени. Например, слишком длительные проверки могут быть перенесены на ночь. А от тех, кто ловит не очень важные ошибки, следует полностью отказаться.
Совет № 6: используйте готовые инструменты.
Сейчас есть много компаний, которые предоставляют облачную CI.
Для небольших команд это хороший выход. Вам не нужно ничего поддерживать, просто заплатите немного денег, соберите свое приложение и даже проведите контрольно-измерительные испытания.
Совет №7: в большой команде собственные решения более выгодны.
Но рано или поздно, по мере роста команды рентабельнее станут внутренние решения.В этих решениях есть один момент. В экономике существует закон убывающей отдачи: в любом проекте каждое последующее улучшение усложняется, требует все больше и больше вложений.
Экономика описывает всю нашу жизнь, включая непрерывную интеграцию. Я построил график работы для каждого этапа развития непрерывной интеграции.
Видно, что любое улучшение дается все сложнее. Глядя на этот график, вы можете понять, что развитие непрерывной интеграции должно согласовываться с ростом размера команды.Для команды из двух человек потратить 50 дней на разработку внутренней фермы эмуляторов — это так себе идея. Но в то же время для большой команды вообще не заниматься непрерывной интеграцией — тоже плохая идея, поскольку из-за проблем интеграции, исправления коммуникаций и т. Д. Это займет еще больше времени.
Мы начали с того, что автоматизация нужна, потому что люди дороги, они ошибаются и ленивы. Но люди тоже автоматизируют. Следовательно, все те же проблемы относятся и к автоматизации.
- Автомат стоит дорого.Запомните график работы.
- В автоматизации люди делают ошибки.
- Автоматика иногда очень ленится, потому что все так работает. Зачем еще улучшать, зачем вся эта непрерывная интеграция?
Но у меня есть статистика: в 20% сборок вылавливаются ошибки. И это не потому, что наши разработчики плохо пишут код. Это потому, что разработчики уверены, что в случае ошибки она не попадет в разработку, она будет обнаружена автоматическими проверками. Соответственно, разработчики могут тратить больше времени на написание кода и интересных вещей, а не на поиск и проверку чего-либо локально.
Примите участие в непрерывной интеграции. Но в умеренных количествах.
Кстати, Николай Нестеров не только сам делает крутые презентации, но и входит в программный комитет AppsConf и помогает другим подготовить для вас содержательные презентации. Полноту и полезность программы следующей конференции можно оценить по темам в расписании. А подробности — 22-23 апреля в Infospace.
ChenglongChen / Kaggle_The_Hunt_for_Prohibited_Content: решение, занявшее 4-е место в конкурсе «Охота за запрещенным контентом» на Kaggle (http: // www.kaggle.com/c/avito-prohibited-content)
GitHub — ChenglongChen / Kaggle_The_Hunt_for_Prohibited_Content: решение, занявшее 4-е место в конкурсе «Охота на запрещенный контент» на Kaggle (http://www.kaggle.com/c/avito-prohibited-content)Файлы
Постоянная ссылка Не удалось загрузить последнюю информацию о фиксации.Тип
Имя
Последнее сообщение фиксации
Время фиксации
В этом репозитории содержится код, который я использовал для подачи заявки на участие в конкурсе Kaggle «Охота за запрещенным контентом».Оценка с использованием этой реализации составляет 0,98527 , занимая 4-е место из 289 команд. (Эта запись находится в папке ./Submission
.)
Я впервые принял участие в этом конкурсе, чтобы познакомиться с VW и Linux & Shell (раньше я был пользователем Windows). Таким образом, представленный здесь код может быть не таким эффективным и элегантным, каким он мог бы быть.
Метод
- Он использует LR для создания классификатора по множеству функций, включая
- BOW / Tf-idf 1 / 2gram особенности названия, описания, атрибутов и т. Д.
- Все необработанные характеристики, такие как категория, подкатегория, цена и т. Д.
- Некоторые перекрестные особенности между вышеуказанными функциями, такие как подкатегория, цена и т. Д., Похоже, очень помогают.
Изначально я обучался всему набору данных, а позже обнаружил некоторые улучшения, объединив прогнозы ранжирования из модели, используя только блокированные объявления is_proven и неблокированные объявления.
Я испробовал все функции стоимости, предусмотренные в VW, то есть потерю журнала, потерю шарнира, квадрат потерю и потерю квантиля, но обнаружил, что потеря журнала дает стабильно лучшие результаты.Ансамблевые модели из разных проигрышей, похоже, мне ничего не дадут.
Макет кода
-
run_all.sh
: запустить все одним выстрелом -
grid_search.sh
: выполнить поиск по сетке и сборку (вызывается изrun_all.sh
) -
generate_vw_file.py
: генерировать данные обучения и тестирования в формате VW (вызываемыеrun_all.sh
) -
generate_bagging_submission.py
: генерировать окончательную отправку пакетов (вызываетсяrun_all.ш
)
-
generate_submission.py
: преобразовать предсказание формата VW в представление Kaggle -
generate_weighted_sample.py
: преобразовать обучающие данные в данные, взвешенные по важности (используется при поиске по сетке для определения лучших весов выборки) -
generate_bootstrap.py
: генерировать образцы начальной загрузки (используемые в упаковке) -
APatK.py
: вычислить AP @ k (используется при поиске по сетке) -
ngram.py
: построить n-грамм
Требование
- Vowpal Wabbit: Я использовал последнюю версию VW для всех тренировок.
- gensim: Я использовал gensim для извлечения функций tf-idf.
Инструкция
- скачать данные с сайта конкурса и поместить все данные в
./Data
dir - поместил весь код в
./Python
dir: - запустите
bash ./Python/run_all.sh
, чтобы создать представление csv в Kaggle.
Обсуждение
Вы не можете выполнить это действие в настоящее время.Вы вошли в систему с другой вкладкой или окном. Перезагрузите, чтобы обновить сеанс. Вы вышли из системы на другой вкладке или в другом окне. Перезагрузите, чтобы обновить сеанс.(PDF) Повышение точности мобильного геотаргетинга
ISSN: 2088-8708
IJECE Vol. 6, № 6, декабрь 2016: 2887–2890
Рис. 1. Сообщение МЧС России, отправленное мобильным пользователям с использованием
Geo Targeting
2.НОВЫЙ ПОДХОД
Сбор контактной информации из коммерческих рекламных объявлений, размещенных в Интернете пользователями, — это новый эффективный способ сбора информации о мобильном геотаргетинге
. В России Avito.ru в настоящее время является самым посещаемым и быстрорастущим сайтом продаж (
). Ежедневный трафик на этот сайт достигает более 8 миллионов посетителей. По статистике
, на сайте одновременно размещается более 33 миллионов объявлений. Чтобы зарегистрироваться на сайте и иметь возможность размещать
объявлений, пользователю необходимо ввести номер своего мобильного телефона.Этот номер необходимо подтвердить с помощью кода, отправленного по SMS
. Администрация сайта может связаться с автором любого объявления по подтвержденному номеру телефона. Итак,
этот номер должен быть актуальным. Помимо номера телефона, каждое объявление содержит контактную информацию автора
, включая географическую привязку (район города или станция метро). Наиболее вероятно, что указанный пользователем район
— это место, где он проводит большую часть своего времени, например, его место жительства или место работы
.Поскольку большинство продавцов заинтересованы в продаже своих товаров и услуг, можно утверждать, что помимо номеров телефонов
они также предоставляют актуальные контактные данные. Исходя из имеющихся данных, можно сделать вывод, что рекламный сайт avito.ru содержит объявления с правильными и актуальными номерами мобильных телефонов с привязкой
к местоположению в черте города.
Как новый пользователь на сайте, когда вы хотите искать объявления, вам нужно будет выбрать соответствующий
регион страны.Опционально на сайте есть возможность выбрать район города, метро
, станцию и категорию товара. Подробный поиск осуществляется путем выбора категорий продуктов или
поиска по добавленному заголовку. Для сбора номеров мобильных телефонов, привязанных к определенной станции метро, наиболее оптимальным является поиск по
объявлений по этой станции метро без дополнительных параметров. Например, поиск по
Москва и метро «Проспект Вернадского» выдаст список из 248 842 объявлений.Выбранная станция метро
служит информацией о текущем местоположении, а номер сотового телефона и имя владельца номера
указаны в объявлении. Таким образом, вам нужно будет получить содержимое страницы каждого объявления.
Имя автора объявления содержится в исходном коде страницы в чистом виде, поэтому
не требует дальнейших действий для сбора. Более сложный процесс — получение номера телефона. Чтобы узнать номер телефона продавца сотового
, вам нужно будет перейти по специальной ссылке «Показать телефон».Это было сделано сайтом
, чтобы он мог собирать статистику по количеству людей, просматривающих номер телефона, и сделать еще
сложных автоматических сканеров, собирающих контактные данные владельцев рекламы.
В настольной версии сайта на странице объявления при нажатии на «Показать телефон» загружается изображение
, отображающее номер телефона (рис. 2). Изображение загружается по ссылке, которая выглядит следующим образом
«https: // www.avito.ru/items/phone/{id}?pkey={pkey}
Где id — это рекламный номер в avito, pkey — это ключ, необходимый для получения изображения с номером телефона
. Эта ссылка не в открытом виде. То есть, когда вы нажимаете ссылку «показать телефон», событие
захватывает специальную функцию Javascript. Эта функция использует идентификатор объявления и уникальный хэш-код, указанный в форме
переменной. Используя эти данные, функция генерирует ключ pkey по специальному алгоритму.Функция
отправляет GET-запрос по указанной ссылке, подставляя pkey.