MainPage/AI System/Labs
AI System
Курс состоит из двух блоков:
该课程由两个部分组成:
- Базы знаний и онтологии 知识库和本体
- Классические методы МО 经典的机器学习方法
Каждый блок включает в себя несколько лабораторных работ, для сдачи необходимо сделать R&D отчет по итогам модуля. Защита лабораторных работ происходит в таком формате:
每个模块包括多个实验室工作;要通过,您必须根据模块的结果制作研发报告。 实验室工作的辩护以以下形式进行:
- Показываете ЛР в виде рабочего проекта - если всё ок, значит можно приступать к следующему заданию. Показывать две за раз можно, но если есть замечания, то на следующей паре можно только показывать ЛР, а не защищать модуль.
以工作草案的形式向 LR 展示 - 如果一切正常,那么您可以继续下一个任务。 您可以一次显示两个,但如果有任何注释,那么在下一对上您只能显示 LR,而不能保护模块。 - Для закрытия модуля и получения оценки необходимо рассказать про блок выполненных заданий с точки зрении постановки задачи, требований, ограничений, назначения.
要关闭模块并获得成绩,您需要根据任务说明、要求、限制和目的讨论已完成的任务块。
Модуль 1. Базы знаний и онтологии
- Лабораторная 1. Создание базы знаний и выполнение запросов в Prolog
- Лабораторная 2. Создание онтологии в Protege
- Лабораторная 3. Разработка системы поддержки принятия решения на основе базы знаний или онтологии
- Лабораторная 4. Линейная регрессия
- Лабораторная 5. Метод k-ближайших соседей
- Лабораторная 6. Деревья решений
- Лабораторная 7. Логистическая регрессия
Модуль 1. Базы знаний и онтологии
Лабораторная 1. Создание базы знаний и выполнение запросов в Prolog
Требуется создать базу знаний в языке программирования Prolog и реализовать набор запросов, используя эту базу знаний. Задача направлена на развитие навыков работы с фактами, предикатами, и правилами в логическом программировании.
需要用 Prolog 编程语言创建一个知识库,并使用该知识库实现一组查询。 该任务旨在培养逻辑编程中处理事实、谓词和规则的技能。
Задание
-
Создание базы знаний:
Создайте базу знаний. База знаний должна включать в себя не менее 20 фактов с одним аргументом, 10-15 фактов с двумя аргументам, которые дополняют и показывают связь с другими фактами и 5-7 правил. Факты могут описывать объекты, их свойства и отношения между ними. Предикаты могут описывать различные атрибуты объектов, а правила - логические законы и выводы, которые можно сделать на основе фактов и предикатов.
创建知识库。 知识库应包括至少 20 个带有一个论点的事实、10-15 个带有两个论点的事实来补充并显示与其他事实的联系以及 5-7 条规则。 事实可以描述对象、它们的属性以及它们之间的关系。 谓词可以描述对象的各种属性,规则是根据事实和谓词可以得出的逻辑规律和结论。 -
Выполнение запросов:
Напишите несколько запросов для БЗ. Запросы должны быть разной сложности и включать в себя:
为知识库编写几个查询。 请求必须具有不同的复杂性,并包括:- Простые запросы к базе знаний для поиска фактов.
- Запросы, использующие логические операторы (и, или, не) для формулирования сложных условий.
- Запросы, использующие переменные для поиска объектов с определенными характеристиками.
-
Запросы, которые требуют выполнения правил для получения результата.
- 简单查询知识库以查找事实。
- 使用逻辑运算符(and、or、not)来制定复杂条件的查询。
- 使用变量来查找具有某些特征的对象的查询。
- 需要遵循规则才能获得结果的查询。
-
Документация: 文档:
В коде должны быть комментарии описания фактов, предикатов и правил.
代码应包含描述事实、谓词和规则的注释。
Критерии оценки 评估标准
- Корректность базы знаний и выполненных запросов.
- Сложность и разнообразие запросов.
-
Качество документации и комментариев к коду.
- 知识库和执行查询的正确性。
- 请求的复杂性和多样性。
- 文档和代码注释的质量。
Тематики БЗ BZ主题
Любая, связанная с играми. Например,
任何与游戏有关的东西。 例如,
- Видеоигры
- Правила настольных игр
- Профили игроков
- Игровые персонажи
- История игры
-
Игровые механики
- 视频游戏
- 棋盘游戏规则
- 玩家档案
- 游戏角色
- 游戏历史
- 游戏机制
Лабораторная 2. Создание онтологии в Protege
Целью этой лабораторной работы является знакомство со средой разработки онтологий Protege и перевод базы знаний, созданной в предыдущей лабораторной работе в онтологическую форму в Protege.
本实验的目的是熟悉 Protege 本体开发环境,并将之前实验中创建的知识库转化为 Protege 中的本体形式。
Задание
Преобразовать факты и отношения из Prolog в концепты и свойства в онтологии. Описать классы и свойства в онтологии, которые соответствуют объектам и отношениям из базы знаний. Например, если у были классы “Человек” и “Машина” и свойство “возраст”, создайте аналогичные классы и свойства в онтологии в Protege.
将 Prolog 中的事实和关系转换为本体中的概念和属性。 描述本体中与知识库中的对象和关系相对应的类和属性。 例如,如果您有类“Man”和“Machine”以及属性“age”,请在 Protege 的本体中创建类似的类和属性。
Критерии оценки
- Корректное создание онтологии в Protege на основе базы знаний в Prolog.
- Качество перевода фактов, предикатов и отношений из Prolog в онтологию.
- Определение классов, свойств и иерархии классов в Protege.
-
Тестирование онтологии и демонстрация ее функциональности (визуализация и проверка запросов).
- 基于 Prolog 中的知识库在 Protege 中正确创建本体。
- 将事实、谓词和关系从 Prolog 翻译成本体的质量。
- Protege 中类、属性和类层次结构的定义。
- 测试本体并演示其功能(查询的可视化和验证)。
Лабораторная 3. Разработка системы поддержки принятия решения на основе базы знаний или онтологии
Целью этой лабораторной работы является разработка программы, которая будет использовать базу знаний или онтологию для предоставления рекомендаций на основе введенных пользователем данных. (Knowledge-based support system) 该实验室的目标是开发一个程序,该程序将使用知识库或本体根据用户输入提供建议。(基于知识的支持系统)
Задание
- Создать программу, которая позволяет пользователю ввести запрос через командную строку. Например, информацию о себе, своих интересах и предпочтениях в контексте выбора видеоигры - на основе фактов из БЗ (из первой лабы)/Онтологии(из второй).
创建一个允许用户通过命令行输入查询的程序。 例如,关于您自己、您在选择视频游戏时的兴趣和偏好的信息 - 基于知识库(来自第一个实验室)/本体(来自第二个实验室)的事实。 - Использовать введенные пользователем данные, чтобы выполнить логические запросы к БЗ/Онтологии.
使用用户输入的数据对知识库/本体执行逻辑查询。 - На основе полученных результатов выполнения запросов, система должна предоставить рекомендации или советы, связанные с выбором из БЗ или онтологии.
根据执行查询获得的结果,系统应提供与从知识库或本体中进行选择相关的推荐或建议。
Пример
Входная строка:
Мне 13 лет, мне нравятся: RPG, инди-игры
Нужно
Спарсить строку, разбить на факты, построить запрос, используя эти предикаты. (Формат входной строки фиксированный, искать частичное соответсвие подстроки не нужно)
解析字符串,将其拆分为事实,使用这些谓词构建查询。 (输入字符串的格式是固定的,不需要搜索子字符串的部分匹配)
Критерии оценки
- Корректность и эффективность реализации системы поддержки принятия решения.
- Способность программы адекватно использовать базу знаний или онтологию для выдачи рекомендаций.
- Качество тестирования и обработка ввода пользователя.
-
Качество документации и описание работы системы.
- 决策支持系统实施的正确性和效率。
- 程序充分使用知识库或本体来提出建议的能力。
- 测试质量和用户输入处理。
- 系统操作的文档和描述的质量。
Модуль 2. Методы МО
В модуле 4 лабораторные работы. Реализовывать можно на любом языке. По каждой лабораторной необходимо сделать небольшой отчёт с результатами выполнения работы. По завершению модуля - большой отчёт.
该模块中有 4 个实验室作品。 可以用任何语言实现。 每个实验室都有必要制作一份简短的工作结果报告。 完成该模块后 - 一份大型报告。
Лабораторная 4. Линейная регрессия
Линейная регрессия. Теоретическая часть (1)
Задание
- Выбор датасетов:数据集的选择:
- Студенты с четным порядковым номером в группе должны использовать набор данных о жилье в Калифорнии Скачать тут
- Студенты с нечетным порядковым номером в группе должны использовать про обучение студентов
- Получите и визуализируйте статистику по датасету (включая количество, среднее значение, стандартное отклонение, минимум, максимум и различные квантили).
获取并可视化数据集的统计数据(包括计数、平均值、标准差、最小值、最大值和各种分位数)。 - Проведите предварительную обработку данных, включая обработку отсутствующих значений, кодирование категориальных признаков и нормировка.
执行数据预处理,包括处理缺失值、分类特征编码和标准化。 - Разделите данные на обучающий и тестовый наборы данных.
将数据分为训练数据集和测试数据集。 - Реализуйте линейную регрессию с использованием метода наименьших квадратов без использования сторонних библиотек, кроме NumPy и Pandas. Использовать минимизацию суммы квадратов разностей между фактическими и предсказанными значениями для нахождения оптимальных коэффициентов.
使用最小二乘法实现线性回归,无需使用 NumPy 和 Pandas 以外的第三方库。 利用最小化实际值与预测值之差的平方和来找到最优系数。 - Постройте три модели с различными наборами признаков.
构建具有不同功能集的三个模型。 - Для каждой модели проведите оценку производительности, используя метрику коэффициент детерминации, чтобы измерить, насколько хорошо модель соответствует данным.
对于每个模型,使用确定系数指标来评估性能,以衡量模型与数据的拟合程度。 - Сравните результаты трех моделей и сделайте выводы о том, какие признаки работают лучше всего для каждой модели.
比较三个模型的结果并得出关于哪些功能最适合每个模型的结论。 - Бонусное задание 奖励任务
- Ввести синтетический признак при построении модели
构建模型时引入综合特征
- Ввести синтетический признак при построении модели
Лабораторная 5. Метод k-ближайших соседей
Задание
Выбор датасета:
Четный номер в группе - Датасет о вине
Нечетный номер в группе - Датасет про обезьян
- Проведите предварительную обработку данных, включая обработку отсутствующих значений, кодирование категориальных признаков и масштабирование.
执行数据预处理,包括缺失值处理、分类特征编码和缩放。 - Реализуйте метод k-ближайших соседей без использования сторонних библиотек, кроме NumPy и Pandas.
实现k近邻方法,不使用NumPy和Pandas以外的第三方库。 - Постройте две модели k-NN с различными наборами признаков:
构建两个具有不同特征集的 k-NN 模型:- Модель 1: Признаки случайно отбираются.
模型1:特征是随机选择的。 - Модель 2: Фиксированный набор признаков, который выбирается заранее.
模型2:预先选择的一组固定特征。
- Модель 1: Признаки случайно отбираются.
- Для каждой модели проведите оценку на тестовом наборе данных при разных значениях k. Выберите несколько различных значений k, например, k=3, k=5, k=10, и т. д. Постройте матрицу ошибок.
对于每个模型,在不同的 k 值下对测试数据集进行评估。 选择k的几个不同值,例如k=3、k=5、k=10等。构造误差矩阵。
Лабораторная 6. Деревья решений
Деревья решений. Теоретическая часть (1)
Задание
-
Для студентов с четным порядковым номером в группе – датасет с классификацией грибов, а нечетным – датасет с данными про оценки студентов инженерного и педагогического факультетов (для данного датасета нужно ввести метрику: студент успешный/неуспешный на основании грейда)
对于组中人数为偶数的学生 - 包含蘑菇分类 的数据集和奇数 – 包含工程和教育学院学生成绩数据的数据集(对于此数据集您需要输入指标:根据成绩成功/不成功的学生)
- Отобрать случайным образом sqrt(n) признаков
随机 sqrt(n) 特征 - Реализовать без использования сторонних библиотек построение дерева решений (numpy и pandas использовать можно, использовать списки для реализации дерева - нельзя)
不使用第三方库实现决策树的构建(可以使用numpy和pandas,但不能使用lists来实现树) - Провести оценку реализованного алгоритма с использованием Accuracy, precision и recall
使用准确度、精确度和召回率评估所实现的算法 - Построить AUC-ROC и AUC-PR (в пунктах 4 и 5 использовать библиотеки нельзя)
构建 AUC-ROC 和 AUC-PR(步骤 4 和 5 中不能使用库)
Лабораторная 7. Логистическая регрессия
- Выбор датасета:
- Датасет о пассажирах Титаника: Titanic Dataset
- Датасет о диабете: Diabetes Dataset
- Загрузите выбранный датасет и выполните предварительную обработку данных.
- Разделите данные на обучающий и тестовый наборы в соотношении, которое вы считаете подходящим.
- Реализуйте логистическую регрессию “с нуля” без использования сторонних библиотек, кроме NumPy и Pandas. Ваша реализация логистической регрессии должна включать в себя:
- Функцию для вычисления гипотезы (sigmoid function).
- Функцию для вычисления функции потерь (log loss).
- Метод обучения, который включает в себя градиентный спуск.
- Возможность варьировать гиперпараметры, такие как коэффициент обучения (learning rate) и количество итераций.
- Исследование гиперпараметров:
- Проведите исследование влияния гиперпараметров на производительность модели. Варьируйте следующие гиперпараметры:
- Коэффициент обучения (learning rate).
- Количество итераций обучения.
- Метод оптимизации (например, градиентный спуск или оптимизация Ньютона).
- Проведите исследование влияния гиперпараметров на производительность модели. Варьируйте следующие гиперпараметры:
- Оценка модели:
- Для каждой комбинации гиперпараметров оцените производительность модели на тестовом наборе данных, используя метрики, такие как accuracy, precision, recall и F1-Score.
Сделайте выводы о том, какие значения гиперпараметров наилучшим образом работают для данного набора данных и задачи классификации. Обратите внимание на изменение производительности модели при варьировании гиперпараметров.