Курсовая работа

Курсовая по компьютерным наукам: как превратить алгоритмическую идею в воспроизводимый эксперимент и сравнение методов

Как написать курсовую по компьютерным наукам: сформулировать вопрос, сравнить алгоритмы, поставить эксперимент, измерить качество и сделать вывод.

Содержание +

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

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

Сформулируйте вычислительный вопрос

Плохо:

«Алгоритмы поиска».

Лучше:

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

Так тема сразу задаёт эксперимент.

Гипотеза

Например:

«При разреженном графе алгоритм A использует меньше памяти, чем алгоритм B».

Гипотеза должна быть проверяемой.

Не формулируйте её после того, как получили красивые графики.

Базовый метод

Всегда нужен baseline.

Это может быть:

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

Без baseline невозможно понять, улучшили ли вы что-то.

Корректность

Перед сравнением производительности убедитесь, что методы решают одну и ту же задачу.

Для алгоритма создайте тесты.

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

Не сравнивайте качество методов на разных наборах данных.

Данные

Опишите:

  • источник;
  • размер;
  • признаки;
  • пропуски;
  • целевую переменную;
  • условия использования, если это важно.

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

Разделение выборки

Если обучается модель, данные для оценки должны быть независимыми от обучения.

Используйте подходящий train/test или кросс-валидацию.

Не оценивайте качество на тех же данных, на которых подбирались параметры.

Data leakage

Утечка может незаметно сделать метрику слишком хорошей.

Проверьте:

  • нет ли целевой переменной в признаке;
  • не считается ли нормализация по всему набору;
  • не попадают ли записи одного объекта одновременно в train и test.

Особенно опасны временные данные.

Метрика

Выбирайте метрику под задачу.

Для классификации accuracy может быть плохой при сильном дисбалансе.

Можно использовать precision, recall, F1 или ROC-AUC, если они отвечают вопросу.

Не собирайте все метрики сразу без интерпретации.

Цена ошибки

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

Пропуск редкого события и ложная тревога иногда неравноценны.

Объясните, почему выбранная метрика отражает нужный компромисс.

Алгоритмическая сложность

Теоретическая оценка нужна, но её полезно проверить экспериментом.

Постройте время от размера входа.

Не измеряйте только один размер n.

По форме графика можно увидеть, соответствует ли поведение ожидаемой сложности.

Генератор тестов

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

Например:

  • случайный массив;
  • почти отсортированный;
  • обратный;
  • много повторов.

Один алгоритм может выигрывать только на конкретном распределении.

Графы

Для графовых алгоритмов задавайте:

  • число вершин;
  • число рёбер;
  • плотность;
  • связность;
  • веса.

Не сравнивайте методы на одном случайном графе.

Создайте серию разных размеров и структур.

Хеширование

Если тема про словари или индексы, анализируйте:

  • функцию;
  • коллизии;
  • коэффициент заполнения;
  • стратегию разрешения.

Среднее O(1) не означает, что каждая операция всегда имеет постоянное время.

Покажите деградацию при высокой загрузке.

Деревья

Для дерева важна форма.

Обычное бинарное дерево может выродиться в список.

Сбалансированное поддерживает другую сложность.

Не сравнивайте структуры без понимания условий.

Динамическое программирование

Объясните:

  • состояние;
  • переход;
  • базовый случай;
  • порядок вычисления.

Не просто вставляйте таблицу.

Покажите, почему задача имеет перекрывающиеся подзадачи.

Жадный алгоритм

Жадный выбор должен быть доказан или хотя бы обоснован для конкретной задачи.

То, что алгоритм дал хороший ответ на нескольких примерах, не доказывает оптимальность.

Ищите контрпример.

Машинное обучение

Сначала создайте простой baseline.

Не начинайте с глубокой нейросети на небольшой табличной выборке.

Сравните более простые модели.

Сложность должна давать измеримый выигрыш.

Подбор гиперпараметров

Не выбирайте лучший вариант по test set.

Используйте валидацию.

Если перебрано сотни комбинаций, укажите пространство поиска.

Не скрывайте число экспериментов.

Воспроизводимость

Зафиксируйте:

  • seed;
  • версии библиотек;
  • данные;
  • конфигурацию;
  • код.

Один и тот же запуск должен давать сопоставимый результат.

Если алгоритм стохастический, покажите распределение по нескольким seed.

Статистическая устойчивость

Разница 0,1% по одной выборке может быть случайной.

Для близких методов используйте несколько повторов или кросс-валидацию.

Покажите среднее и разброс.

Не объявляйте один метод лучше другого по минимальной разнице без оценки вариативности.

Вычислительная стоимость

Качество - не единственный критерий.

Сравните:

  • время обучения;
  • время инференса;
  • память;
  • размер модели.

Метод с небольшим выигрышем качества и в 100 раз большим временем может быть нерациональным для заданной задачи.

Профилирование

Если алгоритм медленный, найдите узкое место.

Не переписывайте весь проект.

Измерьте, где тратится время.

Оптимизация должна быть направленной.

Абляционный эксперимент

Если метод состоит из нескольких улучшений, отключайте их по одному.

Так видно, что реально даёт прирост.

Иначе невозможно понять, какая часть системы полезна.

Негативный результат

Если новая идея не улучшила baseline, это тоже результат.

Объясните:

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

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

Графики и таблицы

Не делайте график только ради визуализации.

Каждый должен отвечать на один вопрос.

Например:

  • время vs n;
  • качество vs размер выборки;
  • память vs плотность графа.

Подписывайте условия эксперимента.

Защита

Покажите:

1. вопрос;
2. baseline;
3. метод;
4. эксперимент;
5. метрику;
6. разброс;
7. ограничение.

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

Ещё по теме