Холодный старт что это

Рекомендательная система: введение в проблему холодного старта

Меня зовут Василий, уже более трех месяцев, как я работаю математиком в компании Surfingbird.

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

Постановка задачи рекомендательной системы уже описана Сергеем Николенко в статье Рекомендательные системы: постановка задачи.
В основе большинства рекомендательных систем лежат так называемые методы коллаборативной фильтрации. Наша рекомендательная система не исключение. Все алгоритмы коллаборативной фильтрации опираются только на информацию о рейтингах, проставляемых пользователями, и не анализируют контент ресурсов (в нашем случае веб-страниц). Поэтому, эти алгоритмы работают при достаточно большом количестве рейтингов, как правило это 10-20 рейтингов. Задача выдачи релевантных рекомендаций для новых пользователей и для новых сайтов называется проблемой холодного старта.

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

Холодный старт для пользователей

Холодный старт для пользователей возможен на основе демографических данных, которые сами пользователи указывают при регистрации.В рассматриваемой задаче рекомендаций веб-страниц о пользователе известны пол, дата рождения и местоположение. Эти характеристики мы и возьмем за базовые. Однако, демографических данных может быть получено и больше. С помощью API социальных сетей мы можем узнать уровень образования, социальный статус и прочие характеристики.

Существуют два основных подхода к применению в рекомендациях демографической информации о пользователе:
— Экспертным образом составляются стереотипы для различных демографических категорий. То есть эксперт сам определяет что на холодном старте показывать каждой из категорий. Очевидным минусом такого подхода является необходимость работы эксперта, при этом пользователю будут рекомендоваться только популярные сайты субъективно подобранные экспертом. Объем экспертной работы существенно возрастает с ростом числа категорий.
— Демографические категории определяются автоматически путем выявления кластеров пользователей со схожими интересами. Рекомендации строятся на основе того, какие рейтинги проставляли пользователи из той же категории, то есть того же возраста, пола, местоположения и т. д.

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

Для построения демографических категорий естественно использовать методы кластеризации. Объекты кластеризации x — это пользователи. Признаки (или характеристики) объектов — это отнормированные демографические данные пользователя: пол, возраст, местоположение, образование и другие.
Для кластеризации по демографическим данным естественно использовать метод k-средних, так как в этом случае каждый кластер определяется точкой своего центра и, в следствии этого, хорошо интерпретируется. Расстояние от объекта (пользователя) до центра кластера можно определять, вообще говоря, бесконечным числом способов. Принято использовать евклидову метрику в пространстве признаков.
Однако, в нашей задаче необходимо учесть данные о рейтингах, а не только демографические данные.
Ситуацию спасает наличие рассчитанных для всех сайтов топиков алгоритма SVD, которые можно также добавить как признаки объектов при кластеризации. В этом случае, расстояние между сайтами будет рассчитываться исходя как из сходства демографических данных, так и рейтингов пользователей.

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

Наиболее естественным является метод групповых рекомендаций (group recommendation to individual user), название которго говорит само за себя: мы подбираем новому пользователю такие рекомендации, которые нравятся большинству пользователей в его демографической категории.
Существует ряд различных стратегий, как агрегировать рейтинги разных пользователей в групповую рекомендацию. Например, групповой рейтинг можно рассчитывать так:
GR= П r_i^w_i,
где r_i – рейтинг i-го пользователя, w_i – вес i-го пользователя. Произведение берется по всем пользователям или по выделенной группе по какому-то критерию (например, возраст-пол).
Весам w_i для пользователей с тем же возрастом, полом и местоположением мы даем большее значение, остальным меньшее (подбираются вручную).

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

Холодный старт для веб-страниц

Для решения проблемы холодного старта для новых веб-страниц применяются различные методы анализа текста и другого контента страницы (картинки, видео, flash, ссылки и т.д.).
Основные методы семантического анализа текста, на которых я хотел бы остановиться – это LDA и relevance feedback.

Общая схема рекомендаций на основе текстового контента страницы приблизительно такова. Сначала по всем сайтам собирается полезный контент (отбрасывается реклама, меню и т.д.). Слова в тексте проходят предварительную обработку, то есть отбрасываются стоп-слова и производится лемматизация. Далее составляется единый словарь слов и таблица встречаемости слов в текстах веб-страниц (контент-профили страниц). Слова взвешиваются по TF-IDF и для слишком длинных текстов оставляется только top N самых весомых слов.

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

Алгоритм LDA действует по-другому. Слова из словаря слов в результате обучения вероятностной модели группируются по фиксированному количеству топиков (например, 100). Для каждой веб-страницы строится вероятностное распределение по топикам (то есть вектор из 100 фич, каждая из которых характеризует, в какой степени данная страница соответствует топику). Для предсказания вероятности лайка для каждого пользователя обучается логистическая регрессия на LDA-фичах страниц, которые смотрел пользователь, в результате чего у каждого пользователя тоже появляется вектор весов по всем LDA-топикам. При добавлении нового сайта для него сначала рассчитываются LDA-фичи, а затем он рекомендуется пользователям с максимальной предсказанной вероятностью лайка, которая легко вычисляется по известным фичам пользователя и веб-страницы.

Каждый из упомянутых в этой цепочке алгоритмов заслуживает отдельной статьи с практическими примерами, но это в будущем…

Источник

Android Vitals — Это холодный старт?

Холодный старт что это. Смотреть фото Холодный старт что это. Смотреть картинку Холодный старт что это. Картинка про Холодный старт что это. Фото Холодный старт что это

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

Холодный запуск — это запуск activity, при котором происходит старт процесса приложения с нуля в ответ на намерение запустить activity. Согласно документации по времени запуска приложения:

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

Мы рекомендуем всегда проводить оптимизацию на основе предположения о холодном запуске. Это может улучшить показатели теплого и горячего старта.

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

Холодный старт что это. Смотреть фото Холодный старт что это. Смотреть картинку Холодный старт что это. Картинка про Холодный старт что это. Фото Холодный старт что это

Как мы должны отслеживать холодный запуск, если не можем отличить его от любого другого запуска процесса?

Традиционный подход

Большинство приложений и библиотек информируют о холодном старте, если первая Activity была создана в течение минуты после запуска приложения. Это выглядит примерно так:

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

Использование результатов нашего исследования

Процесс system_server выполняет IPC-вызов для ActivityThread.bindApplication() в процессе приложения, который ставит сообщение BIND_APPLICATION в очередь сообщений основного потока.

Затем для каждой activity, которую необходимо запустить, процесс system_server выполняет IPC-вызов для ActivityThread.scheduleTransaction() в процессе приложения, который регистрирует сообщение EXECUTE_TRANSACTION в очереди сообщений главного потока.

Когда IPC вызов для ActivityManagerService.attachApplication() завершен, ActivityThread.main() затем вызывает Looper.loop(), который зацикливается и обрабатывает сообщения, отправленные в его MessageQueue.

Холодный старт что это. Смотреть фото Холодный старт что это. Смотреть картинку Холодный старт что это. Картинка про Холодный старт что это. Фото Холодный старт что это

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

Теплый запуск

Существует множество потенциальных состояний, которые могут считаться теплым запуском. Например:

Таким образом, если activity создается с сохраненным пакетом состояний инстанса, то это не должно считаться холодным стартом. Поскольку процесс должен быть перезапущен, необходимо проделать гораздо больше работы, чем просто создать activity. Назовем это «теплым стартом».

Чтобы это учесть, можно обновить наш код:

Заключение

Всех желающих приглашаем на бесплатный интенсив «Делаем упрощенный аналог приложения Notion». В рамках двухдневного интенсива мы сделаем упрощенный аналог приложения Notion для платформы Android.

Этот урок подойдет для тех, кто:
— хочет попробовать себя в качестве Андроид-разработчика
— уже знаком с программированием и знает принципы ООП
— имеет опыт программирования для других платформ

Источник

Так ли страшен «холодный» старт двигателя?

В чем причина того, не заводится на холодную машина зимой, о пользе прогрева мотора и о том, для чего нужны подогреватели.

Сколько я контактирую с автомобилями (а это уже более 20 лет), столько слышу байку про то, что старт холодного двигателя дает такой же износ, как 50-100-200-500 (кто больше?) километров пробега. Почему байку? Потому что исходит она в основном от продавцов разных подогревателей моторов, электрических, автономных и прочих систем подогрева.

И достаточно активно поддерживается и распространяется самими автолюбителями как мудрость и «опыт поколений». Но давайте попробуем разобраться, что происходит на самом деле в моторе. Хочу предупредить, что все нижеизложенное – это не догма, а исключительно «мысли вслух». Но если вы с ними не согласны – приведите контраргументы.

Где статистика? Попробуйте найти хоть какую-то достоверную статистику по сравнению двигателей, которые запускаются всегда горячие или всегда холодные. Не найдете, потому что ее попросту нет. Какой процент в общем износе двигателя занимает именно холодный старт. Вряд ли больше каких-то едва заметных долей процентов. Что нибудь вроде: «Это двигатель прошел 300.000 км, а этот только 295.000 км. Потому что его запускали холодным!». На износ двигателя влияет куда более серьезные факторы, чем разница температуры при запуске на 3-4 десятка градусов.

Аккумуляторы (их у меня 2, L200 Мицубиши) – старые, 6 лет уже. Не могут мой дизель провернуть. Почему? Потому что замерзли. Они-то остались холодными. Аккумулятор электричество вырабатывает посредством химической реакции. А на морозе химическая реакция идет просто никак. Поэтому горячий мотор или холодный разницы нет. Хороший аккумулятор (теплый аккумулятор) любой двигатель провернет. Даже при минус 40.

Когда машина не заводится, водитель не мотор снимает и греть уносит. А только аккумулятор. И этого, как правило, достаточно.

В теплом моторе масло более текучее и мотор лучше смазывается. Может быть в те времена, когда масло и было вязким и тягучим уже при нулевой температуре так и было. Но налейте в пластиковую бутылку современное масло 0W или 5W и положите на ночь морозилку. А утром сравните с маслом комнатной температуры. Посмотрите, какое масло быстрее стекает со стенок бутылки, холодное или теплое.

В современном автомобиле топливо впрыскивается в цилиндр через форсунки в виде мельчайшего аэрозоля. Уже по сути, в испаренном состоянии и независимо от температуры. И не верьте тому, что скажет, что оно там конденсируется каплями на ледяных стенках цилиндров. При сжатии (а это 10-12, а в дизеле и 20-25 атмосфер) происходят адиабатические процессы. Т.е. разогрев вплоть до самовозгорания. Топлива за рабочий цикл впрыскивается миллиграммы. Если там капли, то быстрее на сервис!

Нужно быть очень наивным или невежественным человеком, что бы думать, что подогрев мотор на несколько десятков градусов можно привести все зазоры в норму. Мы просто уменьшили эти зазоры на 5-10%. А в норму они придут спустя несколько минут работы мотора.

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

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

Источник

Что такое холодный старт у ИПБ и как его сделать?

Всем привет! Сегодня обсудим холодный старт ИБП — что это такое за функция, в чем польза для компьютера, как сделать такую фичу, если ее нет. Детальнее о том, как работает ИБП для компьютера, можно почитать здесь.

Холодный старт что это. Смотреть фото Холодный старт что это. Смотреть картинку Холодный старт что это. Картинка про Холодный старт что это. Фото Холодный старт что это

Сегодня все еще можно встретить модели UPS, которые не включаются при отсутствии напряжения на входе или когда параметры входного сигнала не соответствуют допустимым — например, не такие напряжение или частота тока.

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

Холодный старт позволяет автоматически включиться и подать напряжение на ПК, даже если отсутствует входящий электрический ток.

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

Это весьма полезно, так как при длительном отсутствии тока в проводах от UPS можно запитать любой девайс — например, зарядить мобильный телефон.

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

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

Подписывайтесь на меня в социальных сетях, чтобы не пропустить уведомления о поступлении новых материалов. До скорой встречи!

Источник

Русские Блоги

Анализ оптимизации скорости запуска AndroidAPP, холодный старт и горячий старт

Метод запуска

Вообще говоря, есть два способа запуска приложений в Android: холодный старт и горячий старт.

особенности

1. Холодный запуск: холодный запуск, потому что система снова создаст новый процесс, назначенный ей. Следовательно, сначала будет создан и инициализирован класс Application, а затем будет создан и инициализирован класс MainActivity (включая серию измерений, макет, чертеж), и, наконец, он будет отображен в интерфейсе.

2. Горячий запуск: поскольку горячий запуск начнется с существующего процесса, горячий запуск не будет выполнять шаг приложения, а напрямую перейдет к основной деятельности (включая серию измерений, макет, чертеж). Таким образом, процесс горячего запуска должен только создать и инициализировать MainActivity. Нет необходимости создавать и инициализировать приложение, потому что приложение от создания нового процесса до уничтожения процесса. Приложение будет инициализировано только один раз.

Процесс запуска приложения

В системе Android, когда в приложении нет процесса, запуск приложения представляет собой такой процесс: при нажатии на значок запуска приложения. Система Android раскроет новый процесс из процесса Zygote и назначит его приложению. После этого класс Application, класс MainActivity, windowBackground в теме стиля темы будут созданы и инициализированы по очереди в MainActivity, а некоторые свойства на уровне Activity будут настроены. Наконец, мера / макет / отрисовка contentView отображаются на интерфейсе, поэтому пока здесь первый запуск приложения не завершен. На данный момент интерфейс, который мы видим, является первым кадром.

Итак, подведем итог: процесс запуска приложения выглядит следующим образом:

Измерение времени, необходимого для запуска приложения

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

Какое время запуска приложения

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

После успешной операции будут возвращены три измеренных времени:
1. ThisTime: обычно совпадает с TotalTime. Если при запуске приложения не будет открыта прозрачная активность, она будет заранее отображать основную активность, которая будет меньше, чем TotalTime.
2. TotalTime: время запуска приложения. В том числе процесс создания + инициализация приложения + инициализация активности для отображения интерфейса.

3. WaitTime: обычно больше, чем TotalTime, включая длительное воздействие на систему.

Ниже приводится измерение холодного запуска приложения и времени горячего запуска:
Холодный старт:

Холодный старт что это. Смотреть фото Холодный старт что это. Смотреть картинку Холодный старт что это. Картинка про Холодный старт что это. Фото Холодный старт что это

Холодный старт что это. Смотреть фото Холодный старт что это. Смотреть картинку Холодный старт что это. Картинка про Холодный старт что это. Фото Холодный старт что это

Сократить время, затрачиваемое на запуск приложения

3. Для MainActivity до получения первого кадра. Необходимо измерить операцию рисования макета в contentView, попытаться снизить уровень макета. Рассмотрим стратегию отложенной загрузки StubView. Конечно, избегайте трудоемких операций в методах onCreate, onStart и onResume.

Следующие три стратегии могут значительно улучшить скорость запуска приложения.

Оптимизируйте опыт при запуске приложения

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

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

2. Затем снова установите AppTheme в MainActivity перед загрузкой макета в MainActivity:

Таким образом, фон будет отображаться при запуске, а затем основной интерфейс будет отображаться после отрисовки интерфейса.

Холодный старт что это. Смотреть фото Холодный старт что это. Смотреть картинку Холодный старт что это. Картинка про Холодный старт что это. Фото Холодный старт что это

Наконец, добро пожаловать присоединиться к передовой группе связи Android; 964557053. Войти в группу можно бесплатно получить копию последней технической схемы и расширенную информацию Android. Пожалуйста, обратите внимание, CSDN

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *