Similar presentations:
Кластеризация GitHub проектов: анализ жизненного цикла репозиториев
1.
Кластеризация GitHubпроектов: анализ жизненного
цикла репозиториев
Современные платформы для совместной разработки, такие как GitHub,
являются основным источником открытых данных о программных проектах.
GitHub позволяет исследователям анализировать динамику развития
репозиториев, оценивать популярность проектов и выявлять закономерности
протекания их жизненных циклов.
Кластеризация таких проектов по стадиям развития (библиотека, прототип,
инструмент) позволяет глубже понять, как проекты эволюционируют, и
предоставляет возможность оптимизировать процессы поддержки и развития
open source программного обеспечения.
Автор: Тихонов Н.А.
Научный руководитель: Ильичев В.Ю.
2.
Цель исследования итеоретическая база
Основная цель
Этапы работы
Разработка методики
Обработка данных,
кластеризации GitHub
применение алгоритма
проектов с использованием
датасета с Kaggle.com
KNN для классификации
проектов и визуализация
результатов
Теоретическая основа
Исследования, посвященные анализу репозиториев и их
эволюции во времени
3.
Обзор существующихисследований
Статистические метрики
Анализ распределения
Большинство исследований
Оценка распределения активов
опираются на статистические
по экосистемам, выживаемости
метрики и сводную статистику
проектов в зависимости от типа
для оценки активности и
(личные против
жизненного цикла проектов
организационных)
Выживаемость проектов
Более половины проектов умирает в первые четыре года, а
вероятность выживания падает ниже 50% после пятого года
4.
Ограничения статистического анализаОбщие тенденции
Статистика показывает только общие тренды
Отсутствие детализации
Не позволяет понять динамику на уровне отдельных репозиториев
Качественные стадии
Не дает возможности выделить качественные стадии
развития
Несмотря на полезность статистических исследований, они имеют существенные ограничения. Именно здесь кластеризация
оказывается более прогрессивным и полезным инструментом для глубокого анализа репозиториев.
5.
Преимущества кластеризацииВыделение скрытых
закономерностей
Адаптивная обработка
данных
Наглядная
визуализация
Группировка проектов по
Учет евклидова расстояния
Графики с цветной заливкой
схожим характеристикам,
между признаками,
для определения границ
выявление различных стадий
корректное распределение
классов и оценки
развития
проектов при высокой
распределения репозиториев
дисперсии
Практическая
применимость
Прогнозирование
жизненного цикла,
оптимизация поддержки,
принятие решений об
инвестировании
6.
Описание признаков и типов проектовБиблиотеки (Library)
Высокий уровень звёзд (>175000)
Инструменты (Tool)
Большое число форков (>20000)
Прототипы (Prototype)
Остальные проекты
Кластеризация репозиториев позволяет выявлять стадии развития проектов, что имеет практическое значение для анализа
трендов, планирования развития и оценки потенциала. Применение алгоритма k ближайших соседей (KNN) позволяет
эффективно разделить проекты на кластеры, используя евклидово расстояние между парами признаков.
7.
Датасет и предобработкаИсточник данных
Датасет из Kaggle с информацией о
GitHub репозиториях
Классификация
Присвоение типа проекту на основе
выбранных признаков
Признак 1
stars_count - отображает рейтинг
проекта
Признак 2
forks_count - отображает количество
заимствований
Для проведения экспериментального исследования использован датасет, содержащий информацию о GitHub репозиториях.
Из базы данных для решения задачи классификации проектов были выбраны два ключевых признака, на основе которых
каждому проекту присваивается определенный тип.
8.
Методика кластеризации kNNПрисвоение меток
Каждый репозиторий получает метку типа в зависимости от количества звёзд и форков
Выборка репозиториев
Из каждого кластера выбирается определенное количество репозиториев для анализа
Применение алгоритма
Используется алгоритм k ближайших соседей для классификации тестовой выборки
Визуализация результатов
Построение цветной сетки, отражающей границы классов
9.
Реализация, визуализация и выводы3
10
3
Библиотеки Python
Экземпляров
Типа кластеров
Pandas, Numpy, Random, Math и Matplotlib
Отобрано для каждого типа репозиториев для
Library, Tool и Prototype с четкими границами
для визуализации
сбалансированной выборки
на визуализации
Алгоритм был реализован на языке Python с использованием специализированных библиотек. Визуализация результатов кластеризации показала
четкие границы между типами репозиториев. Применение кластеризации, в частности алгоритма KNN, является прогрессивным методом,
позволяющим выделить скрытые закономерности и качественно оценить стадии развития GitHub проектов.
biology