Курсовая по компьютерным наукам может быть посвящена алгоритмам, данным, искусственному интеллекту, графам, языкам программирования или вычислительным моделям. Общий принцип один: должно быть ясно, какой вопрос проверяется и какой эксперимент позволяет сравнить варианты.
Сильная работа не заканчивается фразой «метод показал высокую эффективность». Она объясняет, относительно чего, на каких данных, по какой метрике и при каких ограничениях получен результат.
Сформулируйте вычислительный вопрос
Плохо:
«Алгоритмы поиска».
Лучше:
- как структура графа влияет на время двух алгоритмов;
- когда хеш-таблица выигрывает у дерева;
- как размер обучающей выборки влияет на качество модели;
- какой способ индексации лучше для заданного профиля запросов.
Так тема сразу задаёт эксперимент.
Гипотеза
Например:
«При разреженном графе алгоритм A использует меньше памяти, чем алгоритм B».
Гипотеза должна быть проверяемой.
Не формулируйте её после того, как получили красивые графики.
Базовый метод
Всегда нужен baseline.
Это может быть:
- простой алгоритм;
- наивный классификатор;
- стандартная структура;
- существующая библиотечная реализация.
Без baseline невозможно понять, улучшили ли вы что-то.
Корректность
Перед сравнением производительности убедитесь, что методы решают одну и ту же задачу.
Для алгоритма создайте тесты.
Для модели машинного обучения используйте одинаковую целевую переменную и правила оценки.
Не сравнивайте качество методов на разных наборах данных.
Данные
Опишите:
- источник;
- размер;
- признаки;
- пропуски;
- целевую переменную;
- условия использования, если это важно.
Не используйте случайно найденный CSV как безымянный набор реальных данных.
Разделение выборки
Если обучается модель, данные для оценки должны быть независимыми от обучения.
Используйте подходящий train/test или кросс-валидацию.
Не оценивайте качество на тех же данных, на которых подбирались параметры.
Data leakage
Утечка может незаметно сделать метрику слишком хорошей.
Проверьте:
- нет ли целевой переменной в признаке;
- не считается ли нормализация по всему набору;
- не попадают ли записи одного объекта одновременно в train и test.
Особенно опасны временные данные.
Метрика
Выбирайте метрику под задачу.
Для классификации accuracy может быть плохой при сильном дисбалансе.
Можно использовать precision, recall, F1 или ROC-AUC, если они отвечают вопросу.
Не собирайте все метрики сразу без интерпретации.
Цена ошибки
Для прикладной задачи ошибки разных типов могут иметь разную стоимость.
Пропуск редкого события и ложная тревога иногда неравноценны.
Объясните, почему выбранная метрика отражает нужный компромисс.
Алгоритмическая сложность
Теоретическая оценка нужна, но её полезно проверить экспериментом.
Постройте время от размера входа.
Не измеряйте только один размер n.
По форме графика можно увидеть, соответствует ли поведение ожидаемой сложности.
Генератор тестов
Для алгоритма полезно создавать данные контролируемой структуры.
Например:
- случайный массив;
- почти отсортированный;
- обратный;
- много повторов.
Один алгоритм может выигрывать только на конкретном распределении.
Графы
Для графовых алгоритмов задавайте:
- число вершин;
- число рёбер;
- плотность;
- связность;
- веса.
Не сравнивайте методы на одном случайном графе.
Создайте серию разных размеров и структур.
Хеширование
Если тема про словари или индексы, анализируйте:
- функцию;
- коллизии;
- коэффициент заполнения;
- стратегию разрешения.
Среднее O(1) не означает, что каждая операция всегда имеет постоянное время.
Покажите деградацию при высокой загрузке.
