Алгоритм социальной сетевой игры

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.09.2018
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Оглавление

  • Введение
  • Глава 1. Теоретические предпосылки исследования
    • 1.1Классификация психотипов в онлайн-играх
    • 1.2Классификация игроков в покер
    • 1.3Основные игровые метрики
    • 1.4Статистические тесты
    • 1.5Алгоритмы кластеризации
  • Глава 2. Инструментальные средства и технологии
    • 2.1 Обоснование выбора программного обеспечения
    • 2.2 Подготовка данных для кластеризации пользователей
  • Глава 3. Анализ данных
    • 3.1 Кластеризация пользователей
    • 3.2 Описание результатов кластеризации
    • 3.3 Построение таблицы приоритетов для посадки игроков
  • Заключение
  • Список литературы
  • Приложение 1.

Введение

Видеоигры с каждым годом входят в жизнь людей все прочнее и прочнее. По прогнозам компании Newzoo [1], которая ежегодно оценивает размер игрового бизнеса по всему миру, к 2020 году международный рынок составит около 130 млрд долларов, при этом средний ежегодный рост на протяжении 2016-2020 годов составляет 6.2%. Однако, некоторые части рынка растут быстрее: благодаря повсеместному проникновению широкополосного доступа в сеть интернет и развитию мобильных технологий, игры для смартфонов и телефонов уже сейчас занимают около 1/3 всего рынка, тогда как, согласно прогнозу, к 2020 году их доля увеличится до 40%. В последнее время растет количество игр, распространяемых по модели free-to-play, когда пользователь не платит за саму игру единоразово, но имеет возможность многократно приобретать различные товары во внутриигровом магазине. Преимущество данной модели: более высокий доход с каждого платящего пользователя. Согласно исследованию аналитической компании verto analytics [2], приложениям необходимо увеличивать показатель возврата (retention) в игру для повышения монетизации игроков, так как, чем больше игрок провел времени внутри игры, тем больше вероятность, что он заплатит. Чем больше понравилась игра, тем более вероятно, что игрок вернется в следующий день, особенно это важно в первые дни жизни нового пользователя. В социальный casual покер (к casual-играм относятся те игры, в которых нельзя вывести деньги) удовлетворенность от игры достигается, в первую очередь, благодаря действиям соперников. Так как пользователи в покер обладают высоким lifetime (время жизни в игре: между первым и последним заходом), то можно проанализировать накопленные данные и понять, с кем следует сажать игрока, чтобы он провел в игре как можно больше времени. Разрабатываемый алгоритм посадки игрока за стол (матчмейкинг) должен учитывать различное игровое поведение, что определяет актуальность данного исследования.

Объектом исследования является социальный casual покер, а предметом - алгоритм адаптивной рассадки игроков. Цель работы - разработать алгоритм, который будет подсаживать игрока за покерный стол наиболее оптимальным образом. Соответственно, исходя из цели, можно выделить задачи исследования:

· выбрать целевую переменную, которая отвечает за «наиболее оптимальную» рассадку, и методику оценки результатов;

· выбрать основные игровые и неигровые показатели пользователей;

· очистить данные от выбросов и некорректно записанной информации;

· кластеризовать пользователей по выбранным показателям;

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

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

Для выполнения исследования был использован язык программирования Python 2.7 с IDE Jupyter. Данная среда совместно с Python используется различными data-аналитиками по всему миру и зарекомендовала себя как отличный инструмент для анализа Big Data.

Работа выполнена в 3 главах. В первой главе дан обзор литературы, рассмотрены психологические аспекты игры в видеоигры в общем и в покер в частности, описаны основные игровые метрики и определены различные методы кластеризации. Во второй главе сформированы технические требования, объяснен исходный датасет и определены требования к датасету для кластеризации пользователей. Третья глава - это реализация алгоритма на языке программирования Python, которая включает в себя первичный анализ и очистку данных, проведение кластерного анализа с обнаружением значимых различий между кластерами и определение наиболее подходящих столов для пользователей.

Глава 1. Теоретические предпосылки исследования

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

1.1 Классификация психотипов в онлайн-играх

В области игровой разработки предложено множество видов классификации пользователей, учитывающие различные аспекты. Одна из наиболее распространенных, посвященная психотипам игроков, была предложена Ричардом Бартлом, профессором искусственного интеллекта Эссекского университета, где он разработал игру Многопользовательский мир (MUD) для своего исследования.

Для того, чтобы понять мотивацию игроков, Р. Бартл в работе 1999 года [3] предложил матрицу интересов - что мотивирует игроков проводить время в разработанном приложении. Р. Бартл предположил, что оставаться в игре человека может мотивировать несколько вещей: сфера интересов и как он с ней вовлечен. Таким образом, в матрице Бартла по оси абсцисс отложена сфера интересов пользователей: игроки или мир, а по оси ординат - степень вовлечения: действие или взаимодействие (см. Рис. 1). В данной двумерной оси координат четвертями будут чистые психотипы игроков.

Рис.1. Влияние при взаимодействии между группами Бартла

· Карьеристы (Achievers): действие, мир. Их целью является освоить игру, часто они накапливают большое количество внутриигровой валюты, различные блага и ресурсы, представленные в игре. Карьеристы гордятся своим высоким положением в рейтинге и сроком, за который они смогли это достичь.

· Исследователи (Explolers): взаимодействие, мир. Для данного психотипа другие игроки совершенно не добавляют интереса в игре. Единственный вариант, при котором исследователи действительно захотят видеть других игроков: возможность посетить их собственные миры. Главная цель - изучение игровой вселенной и раскрытие ее тайн. Большинство исследователей могут с легкостью набирать ресурсы, но им это неинтересно. Исследователи гордятся своими знаниями игрового мира.

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

· Убийцы (Killers): действие, игроки. Мотивация - продемонстрировать свое превосходство над другими. Чаще всего они совершают такие действия, которые незаконны в реальном мире, но разрешены в игровой вселенной. Все полученные знания, по их мнению, бесполезны, если они не могут повлиять на соперника. Убийцы гордятся своей репутацией и боевыми навыками.

В зависимости от классов, к которым принадлежат те или иные игроки, различается их поведение, круг общения и ожидания от других игроков. При проектировании системы матчмейкинга, нужно учесть те факторы, которые могут вносить негативный user experience. В зависимости от принадлежности к типам, Р. Бартл заметил, что игроки совершенно по-разному влияют друг на друга (см. Рис. 1).

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

Карьеристы и исследователи. Карьеристы считают исследователей проигравшими, особенно, если те играли нечестно: использовали баги или «дыры» в игре. Наиболее успешные исследователи могут быть возвышены до гуру и использованы карьеристами в случае, если необходимо преодолеть трудности.

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

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

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

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

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

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

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

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

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

Социальщики и убийцы. Между данными классами существует сильная ненависть, которая объясняется абсолютно противоположными взглядами в их целях в игре. По мнению социальщиков, у убийц совершенно антиобщественные мотивы, когда как у них самих гораздо более дружелюбное отношение к жизни.

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

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

Убийцы и социальщики. Очень любят нападать на социальщиков, так как те испытывают боль, что особенно нравится убийцам.

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

Принимая во внимание данные взаимодействия между группами, можно улучшить баланс игры. Исследователи из Mail.ru Group [4], отметили взаимосвязь ключевых метрик игр и психотипа. Так, убийцы являются самой монетизируемой аудиторией, но их ретеншн (показатель удержания пользователей в игре, рассчитывается как % пользователей, вернувшихся в игру на N-ый день, по отношению к числу пользователей на 0-ой день) средний; исследователи мало платят в игре, но у них очень высокий ретеншн; социальщики имеют минимальный ретеншн, сложно монетизируются, но приводят в игру друзей; карьеристы хорошо платят и обладают хорошим показателем возврата в игру.

На основе анализа собственных игр, представители Mail.ru Group выделили 3 основных принципа поддержания баланса: убийцы должны играть изолированно от всех остальных, социальщики должны иметь возможность привлекать пользователей в проект, и в игре должно быть большое количество разнообразных активностей.

Позже, Р. Бартл расширил свою классификацию [5], добавив еще одну ось - осознанность поведения. Убийца, который действует осознанно, превращается в «политика», не осознанно - «скорбящего». При убийстве у политика всегда есть цель, он является очень сильным игроком. Скорбящий, напротив, убивает других просто так.

Осознанные карьеристы - «планировщики», не осознанные - «оппортунисты». Первые продумывают каждое действие, вторые действуют по ситуации.

Осознанные исследователи - «ученые», не осознанные - «хакеры». Ученые выстраивают логику, ищут, за счет чего можно получить преимущество в игре и как сформировать единую картину знания. Хакер же ищет баги в игре и рассказывает о них разработчикам, так как хочет получить их признание.

Осознанные социальщики - «общественники», не осознанные - «друзья». Общественники получают максимум преимуществ от других игроков, а друзья используют игру как дополнительную площадку для общения на любые темы.

Помимо классификации игроков Р. Бартла существует ряд других способов сегментации пользователей в видеоиграх на основе поведенческих и платежных показателей. Модель BrainHex, предложенная компанией International Hobo Ltd., является результатом изучения нейробиологических работ и привязки их результатов к области разработки и дизайна игр [6]. Исследователи ставят перед собой задачу - определить, как и почему люди играют не только в игры для компьютеров или телефонов, но и в игры, в целом. Целью этого исследования является создание лучших игр для всех, исследование барьеров, которые мешают некоторым игрокам наслаждаться видеоиграми, и оценить множество разных причин, по которым игроки наслаждаются времяпрепровождением в одних играх и ненавидят другие. Благодаря учету психотипов по данной методологии, можно улучшить user experience, в том числе, в компьютерных и видеоиграх. Согласно данной модели, пользователей можно разделить на 7 психотипов по целям в игре:

· Seeker. Данному классу пользователей нравится находить как странные, так и знакомые вещи в игровом мире. В поведении проявляется любопытство. Предполагается, что основная часть мозга - гиппокамп и различные сенсорные коры.

· Survivor. Получает удовольствие от ухода от страдания. Например, в играх на выживание - «был на грани смерти, но удалось спастись». Поведение проходит на краю страха - игроки данного типа любят бояться, а затем чувствовать себя в безопасности. Основная часть мозга - миндалина, которая контролирует страх.

· Daredevil. Любят быстрое развитие событий. Поведение сосредоточено на поиске острых ощущений, волнении и риске. Основная область мозга - миндалина.

· Mastermind. Им нравится решать головоломки и разрабатывать стратегии. Поведение сосредоточено на принятии наиболее эффективных решений. Основная область мозга - орто-лобная кора и «центр удовольствия».

· Conqueror. Получают удовольствие от доминирования над врагами. Испытывают сильные эмоции от победы. Основная область мозга - «центр удовольствия» и гипоталамус.

· Socialiser. Любят общаться с людьми и помогать им. Поведение игроков в игре подразумевает доверие к другим игрокам, поэтому при злоупотреблении их доверием бывают крайне расстроены. Основная область мозга - гипоталамус.

· Achiever. Данный тип игроков собирает все предметы, которые только может собрать, любит накапливать внутриигровую валюту. Поведение в игре подразумевает выполнение заданий и сбор коллекций. Основная область мозга - «центр удовольствия».

Как и в классификации Р. Бартла, в BrainHex игроки часто относятся одновременно к нескольким психотипам. Согласно официальным данным [6], исследование собрало более 50 тысяч респондентов. Каждый пользователь может определить свой психотип на официальном сайте исследования с помощью ответов на вопросы теста. Наиболее популярными классами оказались:

· Conqueror-Mastermind 8.6%

· Mastermind-Conqueror 7.5%

· Conqueror-Socialiser 6.1%

· Mastermind-Seeker 4.8%

· Seeker-Mastermind 4.7%

1.2 Классификация игроков в покер

Так как в данном исследовании разрабатывается алгоритм адаптивной посадки для покера, то при формировании переменных необходимо учитывать особенности классификации игроков в данную карточную игру. Наиболее популярная модель [7] учитывает 2 основных аспекта: стартовые карты и агрессивность поднятия ставок. На основе данной классификации можно сделать первые выводы касательно уровня игры пользователей.

По первому аспекту - стартовым картам - можно разбить пользователей на два класса: tight и loose. К tight относят игроков, которые обычно играют небольшое количество раздач, но только с определенными (чаще всего - очень хорошими) картами. Loose-игроки не заостряют свое внимание на начальные карты и могут играть с любой «рукой». Второй аспект - passive и aggressive - определяет степень риска игрока. Пассивные игроки стараются не повышать свои ставки и играют со страхом потери, когда как агрессивные, наоборот, повышают ставки значительно чаще, чем поддерживают, и не боятся рискнуть фишками.

Таким образом, принимая во внимания эти два аспекта, можно сформировать 4 основных стиля игры (Рис.2).

Рис.2. Стили игры в покер

Loose Passive - данный тип игроков будет с радостью поддерживать повышение ставок соперниками в начале игры, чтобы увидеть флоп (состояние стола, когда открыты 3 карты на столе. Данное состояние важно, чтобы определить потенциал карт и шансы на победу). Однако, они редко рискуют, самостоятельно повышая ставки. Данные игроки могут попасть в ловушку call-call-call, особенно в играх с низким вступительным взносом. Против loose passive практически бессмысленно блефовать, но, при наличии хорошей руки, их с легкостью можно обыграть.

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

Tight Aggressive (TAG) - представители класса обычно не играют много раздач, избирательны и входят в игру только с лучшими стартовыми руками. В отличии от пассивных игроков, агрессивный игрок будет играть свои карты, сильно повышая ставки. Они терпеливы и ждут лучших возможностей для удара, но они не боятся рисковать. Большинство наблюдательных противников избегают столкновения с Tight Aggressive, ведь TAG играет только с лучшими картами и оказывает мощное давление на остальных игроков, поэтому возникает большой риск потерять много.

Loose Aggressive (LAG) - игроки данного класса нередко поднимают ставки на префлопе, и очень часто делают ставки на флопе. Основная особенность - они делают это, обладая любыми картами. Данный тип игроков часто блефует, поэтому против него тяжело играть. Однако, в долгосрочной перспективе другие классы побеждают Loose Aggressive.

На основе базовой классификации была создана расширенная модель, определяющая 7 различных типов игроков в покер [8], и которая хороша известна среди профессиональных игроков.

Calling Station/Fish. Некоторые игроки из типа Loose Passive подходят к данному типу. Представители данного класса играют с любой картой, будь то либо пара или даже один туз на руке, и при этом практически не повышают ставки - чаще всего коллируя их. Иногда calling station выигрывают благодаря везению и подходящим общим картам, но в большинстве случаев эта стратегия проигрышная.

Nit/Rock. Полная противоположность Calling Station - играет только имея очень хорошие карты в верхнем диапазоне: когда на руке тузы, короли или дамы. Представители данного класса обладают терпением, они могут долго дожидаться отличной стартовой карты, сбрасывая недостаточно хорошие.

Noob/Newbie. Группа, в которую попадают практически все начинающие игроки в покер, что подтверждает необходимость учета время игры в карточную игру. Новичок обладает энтузиазмом и интеллектом, но не имеет достаточно опыта. Чаще всего проигрыш данных игроков можно объяснить тем, что они слишком наивны, но рано или поздно они выбывают из группы, переходя в более совершенные. Noob, напротив, обладает плохой хваткой для покера или совершенно не хочет развиваться самостоятельно, поэтому находится в группе постоянно.

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

Mr. ABC Poker. Данный тип игроков играет «по учебнику». Представители класса знают основные стратегии игры в покер, однако применяют их слишком прямолинейно, что дает возможность соперникам с легкостью их обыгрывать.

The Coffee Houser. Игроки, которые желают ввести своих соперников в заблуждение за счет показательной реакции на свои карты. Например, получив пару из тузов на «руку», они могут сказать: «Можно попробовать сыграть» (делая вид, что «рука» слабая). Данное игровое поведение в некоторых странах является плохим этикетом (например, в Великобритании), когда как в других - абсолютно нормальным (США).

Sharks. Самые хитрые и опытные игроки, которые хороши во всех аспектах игры и могут подстраиваться под любые вышеперечисленные классы соперников. Кроме этого, они достаточно хорошо скрывают свою стратегию, что создает большие проблемы для других игроков. Они знают, как необходимо выглядеть и какие делать ставки, чтобы соперники думали, что они обладают лучшей рукой. Акулы являются наиболее серьезным противником любого агрессивного игрока благодаря их способности легкого чтения блефа.

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

1.3 Основные игровые метрики

Специфика игровой индустрии позволяет собирать различные метрики, с которыми в последствии работают аналитики. Инструменты контроля за показателями являются незаменимы в онлайн-играх, так как они показывают общее состояние проекта. Ларри Меллон [9] определяет 3 основных типа метрик: игровые, производительные и процессные.

К игровым метрикам относятся такие показатели, которые связаны с людьми, причем с двух сторон: как с клиентами, так и с внутриигровыми персонажами. Первый аспект заключается в анализе денежных потоков, например, ARPU (средний доход на одного пользователя), ARPPU (средний доход на одного платящего пользователя), DAU (количество активных игроков в день), и в близких областях: churn-rate (показатель оттока), retention (метрика удерживания пользователей) и другие. Второй же аспект включает в себя показатели, описывающие, как игроки ведут себя в игровой вселенной: среднее время игры, количество друзей внутри игры, количество сыгранных партий. Совокупная оценка данных метрик позволяет сказать о финансовой стабильности и успешности игры.

Метрики, относящиеся ко второму классу, эффективности - это показатели, которые позволяют описать текущее состояние со стороны технической и программной инфраструктуры. Данный класс метрик отвечает, в первую очередь, за стабильность и работоспособность игры. Сюда относятся fps (частота кадров на клиентском устройстве), количество выданных персональных предложений на сервере, количество найденных багов в час/день/неделю/…

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

В данной работе разрабатывается алгоритм адаптивного матчмейкинга, который будет влиять на все метрики проекта, но наиболее важный класс - это игровые показатели, поэтому рассмотрим их более подробно. Andres Drachen в [10] предлагает классификацию игровых метрик на 3 уровня, учитывающих их применимость:

· общие - одинаковы для всех видеоигр (общее время, проведенное в игре, количество сессий);

· специфичные для жанра - метрики, которые подходят только для определенных жанров (покер: количество сыгранных раздач, количество all-in…);

· специфичные для игры - показатели, уникальные для той или иной игры (например, уровень loyalty-программы, количество покупок VIP-статуса…).

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

Наиболее важные метрики, которые используются и ежедневно отслеживаются всеми заинтересованными лицами в социальном покере: ARPU, DAU, average online (так как покер - это игра, сильно зависящая от наличия оппонентов в определенное время, что соответствует метрике онлайна), total matches (количество сыгранных раздач за определенной промежуток времени или в расчете на одного игрока), total revenue (общее количество денег, принесенных проектом). Данные показатели позволяют однозначно определить общее состояние дел в проекте, когда как остальные являются более специфичными и требуются лишь в случае обнаружения проблем на основных.

Согласно исследованию [11], 80% пользователей прекращают использовать приложения уже в течение 3-х дней после их установки. Один из ключевых показателей, насколько игра хорошая - это тот уровень заинтересованности игроков, который она обеспечивает. Один из наиболее простых способов измерить данный показатель - это посмотреть на кривую retention (кривая, отражающая средний процент активных пользователей в определенном временном промежутке по отношению к их начальному уровню).

Увеличение уровня пользовательского ретеншена - это ключевая задача любой игры, решение которой позволяет сформировать базу лояльных и заинтересованных пользователей, обеспечивающих устойчивый рост проекту. Бизнес, в задачи которого входит улучшение данной метрики, показывает более высокие финансовые результаты быстрее, чем другие проекты [12]. Ретеншн влияет на все наиболее важные игровые метрики проекта: количество активных пользователей, LTV (доход, полученный с пользователя за бесконечное время), PP (payback period) и другие.

В исследовании от Amplitude [12] было найдено различие в retention в зависимости от позиции приложения в рейтинге. Так, например, приложения TOP10 обладают ~75% возвратом в первый день, приложения TOP11-50 - 65%, TOP51-150 - 49%. Так как пользователи, не вернувшиеся в приложение, уже не могут заплатить, то данные цифры прямо коррелируют с финансовыми результатами приложений: из-за различий в ретеншене в 10% разница в выручке может быть около 20%. Особенно это заметно для покупного трафика, где данный разрыв может оказать существенное влияние на окупаемость трафика и возврат инвестиций.

Рис.3. Соотнесение retention и основных фаз жизни в игре

Работу над показателем возврата игроков требуется вести на любом этапе жизни проекта. Данную задачу можно разделить на несколько фаз, соответствующих этапам жизни пользователя в игре: новичок и активных игрок (см. Рис. 3). В зависимости от фазы меняется цель проекта: на первом этапе нужно провести погружение, на втором - улучшать геймплей и качество игры. Основная задача проекта на первой фазе - добиться максимально «высокой» кривой (сократить отвал пользователей в первые дни) за счет правильного on-boarding игрока. На второй же фазе основная цель - добиться максимально плоского «хвоста», что будет означать минимальный отток в long-term периоде. Это можно сделать только благодаря постоянному анализу и улучшению продукта.

Таким образом, основные метрики, которые интересны с точки зрения бизнеса в покере - это денежные поступления, а также некоторые общие игровые показатели: DAU, matches played, registrations. Однако, денежные поступления (как в общем, так и ARPU) - это сильно флуктуирующая величина, которая зависит от множества факторов, то в данной работе она не может быть выбрана в качестве основной целевой метрики, но она по-прежнему остается побочной. Наиболее подходящий показатель, который измеряет user experience и от которого зависят все остальные более низкоуровневые метрики - это показатель retention.

1.4 Статистические тесты

В работе были использованы различные статистические тесты.

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

Нулевая гипотеза данного теста, что математические ожидания двух случайных величин равны (). Тогда, формула t-статистики равна:

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

Для расчета доверительного интервала была использована асимптотика Агрести-Коула (20). Даны X успешных результатов в n попытках, тогда обозначим:

В таком случае, доверительный интервал будет равен

,

где квантиль стандартного нормального распределения. Например, для 95% доверительного интервала , тогда . Для расчета p-value используется нулевая гипотеза равенства вероятностей ().

Тест Дики-Фуллера. Для расчета стационарности временного ряда был использован тест Дики-Фуллера на наличие единичных корней. Используется авторегрессионное уравнение AR(1). Запишем уравнение, как

,

тогда, в такой записи проверяется равенство коэффициента нулю (). Тест является односторонним, поэтому альтернативная гипотеза - коэффициент . Для тестирования используется обычная t-статистика для проверки значимости коэффициентов линейной регрессии, но при распределении Дики - Фуллера (выражается через винеровский процесс).

1.5 Алгоритмы кластеризации

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

Наиболее популярный алгоритм для кластеризации - k-means clustering (метод k-средних). Данный метод был открыт Гуго Штейнгаузом, но набрал популярность благодаря работе Маккуина. K-means кластеризация - это итеративный алгоритм, который изменяет положение центров кластеров с целью минимизации суммарного квадратичного отклонения точек кластеров до центра масс:

Первоначальный алгоритм кластеризации имел проблему выбора начальных центров масс - они выбирались случайным образом из-за чего результаты определения кластеров были неустойчивыми, поэтому был разработан алгоритм, оптимизирующий изначальное определение значений центров масс - k-means++ [13].

В данном алгоритме первоначальные k-средние вычисляются с учетом расстояния между точками - выбираются такие наблюдения, имеющие максимальный квадрат расстояния. Инициализация центров масс выглядит следующим образом:

1) Первое k-среднее выбирается случайным образом из массива наблюдений.

2) Вычисляется расстояние от выбранного центра масс до каждого наблюдения.

3) Для каждого элемента вычисляется вероятность выбора: квадратичное расстояние, деленное на сумму квадратичных расстояний от кластера до всех наблюдений.

4) В зависимости от метрики качества выбирается следующий центр кластера.

5) Повторяются шаги 2-4, пока не будут выбраны все центры масс (их число задается заранее, как и в стандартном k-means алгоритме).

Следующие шаги модели повторяют стандартную k-means кластеризацию. Наиболее популярный алгоритм был предложен Стюартом Ллойдом (известен также как Voronoi iteration) [19]. Для каждого наблюдения необходимо найти кластер, к которому оно принадлежит, используя некоторую «функцию подобия». Для k-means, по версии Ллойда, данная функция является Евклидовым расстоянием, то есть алгоритм пытается минимизировать квадрат расстояния между точкой и ее самым близким кластером. Целевую функцию можно представить, как:

Далее происходит изменение положения центра масс кластера - он передвигается к среднему арифметическому всех точек (в d-мерном пространстве). Данный шаг объясняется тем, что минимизация расстояния между точками в Евклидовом пространстве - это срединная точка данных.

Алгоритм завершает свою работу, когда общая сумма метрики Cost становится неизменной, и, соответственно, присвоение точек не меняется. Стоит учесть, что, в теории, функция будет всегда изменяться, поэтому требуется выбрать некий уровень точности, меньше которого изменения будут считаться незначимыми. Средняя сложность алгоритма , где n - количество наблюдений, k - количество кластеров, T - количество итераций. Максимальная сложность была достигнута в работе [14] - . На практике, благодаря применению асимптотики, k-means является очень быстрым алгоритмом (один из наиболее быстрых среди всех моделей).

Некоторые реализации алгоритма используют другие метрики расстояния. Например, Hausner использовал манхэттенское расстояние. В работе [15] приведены различные ситуации, в которых следует использовать то или иное расстояние:

· Евклидово расстояние. Стандартный, наиболее распространенный критерий. Является геометрическим расстоянием в многомерном пространстве.

· Квадрат евклидова расстояния. Используется при необходимости придать большие веса отдаленным друг от друга объектам.

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

· Расстояние Чебышева. Требуется добавить вес в случае, если дальность между наблюдениями в n-мерном пространстве определяется по одной максимальной координате.

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

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

Так как алгоритм k-means является довольно-таки простым, поэтому получаемые результаты чаще всего далеки от идеальных. Например, форма кластера в k-средних является сферой, однако реальные данные редко, когда ложатся в такую фигуру. Спектральная кластеризация позволяет использовать более сложные многообразия фигур в d-мерном пространстве [16].

Алгоритм позволяет определить группы на основе того, насколько наблюдения друг на друга похожи. Для этого необходимо ввести меру «похожести». В спектральной кластеризации такой мерой является отрицательный квадрат расстояния:

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

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

· Нечеткий алгоритм - определяет вероятность того, что точки лежат в данном кластере.

· Алгоритм выделения связных компонент - определяется входной параметр, который является мерой отделения ребер (например, мера «похожести» меньше параметра х).

· Алгоритм минимального покрывающего дерева - строит на графе минимальное покрывающее дерево, а потом удаляет ребра с наименьшим весом.

· Послойная кластеризация - выделяет связные компоненты графа на заданном уровне расстояний между вершинами.

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

Одной из таких метрик является индекса Дунна (DI). Чем выше данная метрика, тем, считается, лучше кластеризация (кластеры являются компактными и легко отделимыми). DI равен минимальному интеркластерному расстоянию деленному на максимальный размер кластера. Таким образом, высокие интеркластерные дистанции (отвечающие за хорошее разделение) и меньшие размеры кластеров (отвечающие за компактность) приводит к высокому значению Dunn index.

,

где - размер кластера , - расстояние между кластером и j.

Еще одной метрикой, позволяющей оценить качество кластеризации, является силуэт - величина, рассчитываемая по формуле:

,

где - среднее расстояние от наблюдения до объектов из того же кластера, - среднее расстояние от наблюдения до объектов ближайшего кластера.

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

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

При построении дендрограммы алгоритм агломерации сначала определяет максимально похожие между собой объекты (на основе той или иной метрики). Далее происходит укрупнение кластеров, объединяющие максимально похожие группы. И так происходит до тех пор, пока все объекты не будут отнесены в один кластер. Чаще всего объединения происходят скачкообразно. Существует общее правило - следует выбирать количество кластеров равное разности количества наблюдений и количества шагов до скачкообразного увеличения значений коэффициентов агломерации [17].

Выводы

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

Глава 2. Инструментальные средства и технологии

2.1 Обоснование выбора программного обеспечения

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

· Информация о игроках для кластеризации - содержит информацию о всех раздачах 5 тысяч пользователей в игре за полгода (порядка 4.5 миллионов строк).

· Информация о раздачах для таблицы приоритетов - содержит информацию о всех раздачах в течение месяца (порядка 140 миллионов строк).

Как видно, в связи с большим объемом данных, для анализа требуется подготовленный для этого язык программирования. Наиболее популярные инструментарии для анализа данных - это специальные статистические программы (SPSS, Stata) и полноценные языки программирования для ученых (Python и R).

На текущий день наиболее гибким и производительным языком программирования является Python. Кроме этого, данный язык обладает рядом преимуществ:

· Python был спроектирован так, чтобы код был понятен людям, а его написание занимало минимальное количество времени.

· Сообщество программистом, использующих Python, со временем растет - около 80% высших учебных заведений включают экзамены по данному языку программирования при поступлении на computer science факультеты [18].

· Возможности языка не ограничиваются в анализе данных - это язык программирования общего назначения, что его выгодно отличает от R. Различные задачи, начиная от сбора данных и заканчивая созданием отчетности, можно решить в одной среде.

· Python имеет преимущества в производительности и оптимальности использования ресурсов по сравнению с другими языками, например, R или Matlab, а дополнительные надстройки позволят его ускорить до скоростей C или Fortran, что на порядок быстрее R или нативный Python.

Таким образом, для решения задачи анализа данных был выбран Python. Наиболее удобным IDE (Integrated Development Environment) для data analysis является Anaconda и Jupyter , позволяющая запускать часть кода отдельно от всей программы. Также код, написанный в Anaconda, совместим и с другими средствами разработки. Одни из основных библиотек, которые были использованы - это Pandas, Numpy, Scipy, Sklearn для аналитики и Seaborn и Matplotlib для визуализации полученных результатов.

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

2.2 Подготовка данных для кластеризации пользователей

Так как алгоритм матчмейкинга должен учитывать поведение пользователя в игре - казуальном социальном покере, то следует воспользоваться различными видами классификации пользователей. Исходный датасет включает в себя информацию о 140 млн раздач в реальной игре и о действиях пользователей (одна запись соответствует одной раздачи одного «активного» игрока, присылается для всех игроков за столом).

Ширина датасета - 51 колонка:

· age - возраст игрока;

· allin_cnt - количество игроков, пошедших в all-in за раздачу,

· avg_move_time - среднее время хода за раздачу,

· call_cnt - количество call за раздачу,

· check_cnt - количество check за раздачу,

· date - время и дата раздачи,

· fold_cnt - количество fold за раздачу,

· user_fold_loop - на каком раунде игрок сбросил карты: префлоп, флоп, терн, ривер,

· level - уровень игрока после завершения раздачи,

· match_cnt - порядковый номер игры для игрока за все время жизни,

· match_time - длительность раздачи в секундах,

· msg_cnt - количество сообщений в чате за раздачу,

· user_percent_by_last_pot - сколько % от блайнда или прошлой ставки был all-in,

· players_avg_lvl - медиана уровней игроков за столом, исключая активного игрока,

· poker_type - hold'em/Omaha,

· raise_cnt - сколько raise сделано за игру,

· raise_loop - на каком кругу было первое поднятие ставок - префлоп, флоп, терн, ривер,

· regage - срок жизни игрока в игре (текущая дата минус дата регистрации),

· regdate - дата регистрации игрока,

· session - номер сессии игрока

· session_win_rate - процент побед за сессию на момент завершения раздачи,

· table_blind_big - уровень блайнда стола,

· table_players_cnt - количество игроков за столом,

· uid - user ID

· user_agree_daise - игрок поддерживает или сам поднимает ставки,

· user_allin - пошел ли игрок в all-in,

· user_avg_move_time - среднее время хода активного игрока в раздаче,

· user_call_cnt - сколько пользователь сделал call за раздачу,

· user_cash_start - сколько фишек игрок взял за стол,

· user_cash_end - сколько фишек у игрока осталось за столом,

· user_check_cnt - сколько пользователь сделал check за раздачу,

· user_chips_start - сколько фишек у игрока есть (всего) на момент начала раздачи,

· user_chips_end - сколько фишек у игрока осталось (всего) на момент завершения раздачи,

· user_coins_start - сколько монет у игрока есть (всего) на момент начала раздачи,

· user_coins_end - сколько монет у игрока осталось (всего) на момент завершения раздачи,

· user_crupie_tips - давал ли игрок чаевые диллеру,

· user_fold_cnt - сколько пользователь сделал fold за раздачу,

· user_lvl - уровень игрока до старта раздачи,

· user_msg_cnt - количество сообщений от игрока,

· user_perc_by_cash - процент количества фишек у игрока за столом от общего числа фишек у игроков за столом,

· user_perc_by_chips - процент количества фишек игрока от общего числа фишек у всех игроков,

· user_pot - сколько игрок поставил фишек за игру,

· user_prob_win - сколько фишек в банке на момент последней ставки пользователя перед фолдом либо перед вскрытием карт,

· user_raise_cnt - сколько пользователь сделал raise за раздачу,

· user_rate_by_cash - место игрока за столом по количеству фишек за столом,

· user_rate_by_chips - место игрока за столом по количеству фишек (всего),

· user_respects_end - сколько респектов (внутриигровая валюта служит для выражения симпатии) осталось в конце раздачи у игрока,

· user_respects_gift - сколько респектов подарили игроку за раздачу,

· user_respects_present - сколько респектов подарил игрок за раздачу,

· user_respects_start - сколько респектов у игрока было на начало раздачи,

· win_rate - процент побед игрока за всю историю.

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

Таблица 1. Список независимых переменных для кластеризации

Название

Описание

Модели классификации

raise_to_allin

% сессий, в которых пользователь идет в all-in первыми

· Классификация Бартла:

убийцы

· BrainHex:

survivor/daredevil

· Модель для покера:

passive-aggressive

· Расширенная модель для покера:

the maniac

fold_on_allin

% сессий, в которых пользователь фолдит на all-in

· Классификация Бартла:

карьеристы

· Модель для покера:

passive-aggressive

· Расширенная модель для покера:

calling station

msg_percent

% сообщений в чате текущим пользователем

· Классификация Бартла:

социальщики

· BrainHex:

Socialiser

· Расширенная модель для покера:

the coffee house

user_pot_prob_win

Медианное соотношение суммы ставок к возможному выигрышу

...

Подобные документы

  • Изучение ведущих технологий шифрования и обмена данными. Выбор и разработка архитектуры сетевой технологии управления ключами пользователей. Разработка логической модели базы данных, основных форм и интерфейсов, основных алгоритмов обработки информации.

    курсовая работа [586,6 K], добавлен 18.12.2011

  • Функции пользователей в локальной вычислительной сети, анализ и выбор организации ресурсов. Выбор сетевой операционной системы. Сервисное программное обеспечение. Выбор протокола, сетевой технологии и кабеля. Резервирование и архивирование данных.

    дипломная работа [2,0 M], добавлен 22.02.2013

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

    статья [16,7 K], добавлен 15.11.2013

  • Логическая организация информационной системы специального назначения, её состав и задачи. Назначение комплекса программ "Эксплуатационное обслуживание" и его компонентов. Архитектура подсистемы автоматического резервирования данных пользователей.

    дипломная работа [1,5 M], добавлен 13.04.2014

  • Разработка средствами языка PHP и Фреймворка Yii системы регистрации и аутентификации пользователей на сайте. Проектирование приложения с помощью языка UML, построение диаграммы прецедентов. База данных приложения. Страница регистрации пользователей.

    отчет по практике [1,1 M], добавлен 15.09.2014

  • Разработка базы данных "Студенты", которая позволяет производить операции с данными: регистрацию студентов в базе данных, а также удаление, изменение, резервное копирование информации о студентах. Алгоритм работы программы и вспомогательных процедур.

    курсовая работа [27,5 K], добавлен 06.02.2013

  • Создание автоматизированной системы обработки заявок пользователей. Анализ требований к информационному, техническому и программному обеспечению. Проектирование интерфейса системы. Выбор средств реализации. Модель базы данных системы обработки заявок.

    курсовая работа [1,6 M], добавлен 22.12.2014

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

    презентация [57,8 K], добавлен 14.10.2013

  • Анализ системы управления базами данных, основные задачи: обработка информации, организация работы пользователей. Access как функционально полная система, имеющая мощные средства для работы программы. Этапы разработки базы данных торговой организации.

    контрольная работа [458,0 K], добавлен 05.01.2013

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

    лабораторная работа [1,4 M], добавлен 23.07.2012

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

    курсовая работа [1,6 M], добавлен 09.03.2022

  • Идентификация пользователей. Проверка полномочий и их представлений. Защита базы данных. Контроль параллельной обработки. Обслуживание и восстановление базы данных. Источники отказов и сбоев. Резервное копирование данных. Процедуры восстановления.

    презентация [135,6 K], добавлен 19.08.2013

  • Понятие безопасности данных. Базовые технологии сетевой аутентификации информации на основе многоразового и одноразового паролей: авторизация доступа, аудит. Сертифицирующие центры, инфраструктура с открытыми ключами, цифровая подпись, программные коды.

    курсовая работа [861,3 K], добавлен 23.12.2014

  • Организация офисной сети, настройка шлюза для обеспечения выхода пользователей в "Интернет". Организация DNS+DHCP, файлового сервера FTP/SMB для хранения конфиденциальных и общедоступных данных, защита и информационное обеспечение пользователей.

    курсовая работа [5,6 M], добавлен 18.08.2009

  • Особенности технологий создания и работы с базами данных. Реализация структуры базы данных в MS Visio и MS SQL Server. Виды манипуляций над данными, создание сложных запросов. Суть и характеристика прав пользователей, разработка клиентских приложений.

    учебное пособие [2,2 M], добавлен 16.05.2013

  • Разработка игры, реализующей алгоритмы искусственного интеллекта, позволяющие играть в одиночку. Анализ обрабатываемой информации и структур данных для ее хранения. Разработка интерфейса пользователя, форм вывода данных. Выбор стратегии тестирования.

    курсовая работа [896,5 K], добавлен 19.06.2013

  • Ключевые потребности пользователей. Работа с учетными записями пользователей. Регистрация заказа. Обработка электронных платежей. Выявление технически подготовленных автомобилей. Разработка диаграмм вариантов использования. Проектирование базы данных.

    курсовая работа [664,0 K], добавлен 31.10.2014

  • Содержание исходного набора данных. Основные причины возникновения выбросов. Главные алгоритмы кластеризации. Обработка и очистка файла. Описание его полей. Прямоугольная вещественнозначная матрица. Метрика Минковского. Математическое определение объекта.

    курсовая работа [1,4 M], добавлен 25.10.2016

  • Понятие, задачи и требования к разработке базы данных. Типы моделей данных, их преимущества и недостатки и обоснование выбора модели. Процесс учета студентов в больнице, описание структуры базы данных, перечень групп пользователей и доступа к данным.

    курсовая работа [45,1 K], добавлен 09.03.2009

  • Проверка подлинности пользователя путём сравнения введённого им пароля с паролем в базе данных пользователей. Контроль и периодический пересмотр прав доступа пользователей к информационным ресурсам. Построение трехмерной модели человеческого лица.

    презентация [1,1 M], добавлен 25.05.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.