Файл: Российской федерации федеральное государственное автономное образовательное учреждение высшего образования.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.12.2023
Просмотров: 351
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
МЕТОДЫ ОЦЕНКИ КАЧЕСТВА РАБОТЫ БИНАРНЫХ И
МУЛЬТАКЛАССОВЫХ КЛАССИФИКАТОРОВ
Михайличенко А. А.
ФГАОУ ВО «Южный федеральный университет»,
Институт математики, механики и компьютерных наук
им. И. И. Воровича
E-mail: alexey.a.mikh@gmail.com
Существуют различные способы оценки производительности алго- ритмов машинного обучения, большинство из которых основаны на ис- пользовании матрицы ошибок (confusion matrix), которая содержит в себе количество корректно и некорректно классифицированных примеров для каждого класса [1]. В данной работе приводится подробный обзор основ- ных методов численной оценки качества работы классификаторов с анали- зом преимущества тех или иных метрик и особенностями их применимо- сти для различных задач.
Рассмотрим матрицу ошибок для некоторого бинарного классифика- тора (рис. 1). Зеленая диагональ матрицы обозначает количество верно предсказанных примеров для обоих классов, остальные значения – количе- ство ошибочных предсказаний. Ошибка распознавания позитивного класса как негативного (False Negative, FN) называется ошибкой второго типа, распознавание негативного класса как позитивного (False Positive, FP) – ошибкой первого типа [2]. Значения матрицы ошибок используются для вычисления большого количества метрик оценки классификатора.
Рис. 1. Пример матрицы ошибок для бинарной классификации:
P – позитивный класс, N – негативный класс
199
Accuracy. Наиболее распространенным эмпирическим методом оцен- ки точности классификации является процент корректно классифициро- ванных примеров – правильность (или accuracy):
Данная мера оценивает ситуацию в целом и не акцентирует внимание на каком-то конкретном классе. В случаях, когда датасет не сбалансиро- ван (т.е. количество примеров одних классов в датасете значительно пре- вышает количество примеров других), данная оценка может вводить в за- блуждение.
Sensitivity и specificity. Для оценки классификатора по разным клас- сам используют метрики специфичность (specificity, или true negative rate,
TNR) и чувствительность (sensitivity, или true positive rate, TPR):
Таким образом, специфичность – это процент примеров негативного класса, которые были корректно распознаны, а чувствительность – часть корректно классифицированных позитивных примеров. Другими словами, в целом чувствительность и специфичность можно рассматривать как мет- рику accuracy для образцов позитивного и негативного классов.
Данные метрики обычно используют в ситуациях, когда количество примеров, принадлежащих одному классу, существенно ниже, чем общее количество примеров – в классификации текстов, обработке естественного языка, биоинформатике, а именно в тех случаях, когда среди всех классов есть класс, представляющий особый интерес, а остальные классы либо объединены в один (бинарная классификация), либо оставлены как есть [1].
False positive и false negative rate. По аналогии с TPR и TNR в некото- рых приложениях бывает полезно значение FPR (false positive rate), кото- рое представляет собой отношение неправильно классифицированных от- рицательных образцов к общему количеству отрицательных образцов и
FNR (false negative rate) – доля примеров положительного класса, которые были неправильно классифицированы. При этом FNR дополняет меру
sensitivity, а FPR дополняет метрику specificity [2]:
200
И FPR, и FNR не чувствительны к особенностям распределения дан- ных, и поэтому могут использоваться в задачах с несбалансированными датасетами.
Precision и recall. Существуют метрики, которые позволяют оценить корректность классификации примеров для разных классов. Наиболее ин- формативными среди них являются точность (precision) и полнота
(recall), которая эквивалентна чувствительности:
Является ли более важным precision или recall – зависит от специфики конкретной задачи классификации. К примеру, для задачи обнаружения болезни важным является способность классификатора корректно обнару- жить как можно больше больных из общего набора, и в этом случае более важным параметром является recall. С другой стороны, важной характери- стикой классификатора также можно назвать его чувствительность к не- верной классификации, т. е. способность обнаруживать как можно больше примеров наличия заболевания, даже за счет ложно-положительных сраба- тываний – в таком случае важной характеристикой будет precision.
В большинстве случаев приходится идти на компромиссы при выборе между precision и recall.
F-мера. В некоторых случаях бывает удобно каким-либо образом объединить точность и полноту в одно число, т. е. получить своеобразный агрегированный критерий точности работы алгоритма. В этом случае ис- пользуют F-меру, которая является средним гармоническим точности и полноты вместо среднего арифметического, что позволяет сглаживать рас- чѐты за счет исключения экстремальных значений. В общем виде F-мера выглядит так: где β – вес точности в метрике, который в большинстве работ принимается равным 1. F-мера достигает максимума при полноте и точности, равными единице, и близка к нулю, если один из аргументов близок к нулю.
Мультиклассовая классификация. Матрица ошибок может быть со- ставлена не только для бинарного, но и для мультиклассового классифика- тора. Пример такой матрицы ошибок для случая трех классов A, B и C представлен на рис. 2.
Здесь, по аналогии с матрицей для бинарного классификатора, зеленая диагональ (значения
,
,
) обозначает количество верно предска-
201 занных примеров для каждого из классов, а оставшиеся ячейки матрицы – ошибочные предсказания.
Рис. 2. Пример матрицы ошибок для бинарной классификации
Например,
– количество примеров, являющихся классом A, но предсказанных как B,
– количество примеров, являющихся классом A, но предсказанных как C и т.д. Ложно-положительной (false positive) ошиб- кой для класса A будет сумма
=
, т.е. количество примеров, которые были классифицированы как класс A, но таковым на самом деле не являются. Ложно-отрицательной (false negative) ошибкой для класса A будет сумма
=
, которая показывает количество примеров класса A, ошибочно классифицированных как класс B или C. Таким обра- зом, матрица ошибок размера содержит ячеек корректных клас- сификация, и ячеек с ошибочными результатами [2]. Характери- стики
, , , для всего классификатора вычисляются как сумма соответствующих характеристик по всем классам, т. е.
= и т. д.
В случае подсчета метрик для мультиклассового классификатора воз- можны различные варианты подсчета метрик классификатора, не привя- занных к конкретным классам:
– микро: вычисление глобальных метрик путем подсчета общего ко- личества ложно-негативных (
), ложно-позитивных ( ) и других пара- метров (вместо подсчета индивидуальных метрик для каждого класса);
– макро: вычисление метрики для каждого класса и определение их невзвешенного среднего – в данном случае не учитывается сбалансирован- ность датасета и вес каждой метрики среди всего набора;
– взвешенное среднее: вычисление метрики для каждого класса и определение их взвешенного среднего, опираясь на процентное соотноше- ние количества образцов каждой метрики среди общего количества приме- ров в датасете – обычно используется в случае сильно несбалансирован- ных наборов данных.
202
ROC-кривая и площадь под этой кривой. Одним из информатив- ных методов визуализации качества бинарного классификатора считается кривая ошибок, или ROC-кривая (Receiver Operating Characteristic). Изна- чально ROC-кривая использовалась в теории обнаружения сигналов для описания компромисса между показателями угадывания и ложного сраба- тывания классификатора [3]. Одной из первых работ по машинному обу- чению, в который упоминается ROC-кривая, считается [4], где кривая ошибок используется для оценки и сравнения алгоритмов. С развитием машинного обучения упоминание ROC-кривой в литературе растет высо- кими темпами. Так, если в 1990 году было всего 50 упоминаний данного инструмента в научной литературе в год, то в 2002 это число достигло
1000, а в 2018 году зафиксировано более 8000 упоминаний кривой ошибок в год [6]. Стоит отметить, что ROC-кривая не зависит от распределения классов, что делает ее полезной для оценки классификаторов, прогнозиру- ющих редкие события (болезни [6], стихийные бедствия и т. п.).
ROC-кривая – это двумерный график, на котором по оси Y отклады- ваются значения TPR (или recall), а по оси X – значения FPR (или
). График показывает относительный компромисс между выго- дами (true positives) и затратами (false positives). Подробный алгоритм по- строения ROC-кривой можно найти в работе [3]. Рассмотрим рис. 3, на ко- тором показаны четыре важные точки ROC-кривой – A, B, C и D.
Рис. 3. Иллюстрация ROC-кривой с указанием важных для оценки классификатора точек, а также оптимистичный, пессимистичный и ожидаемый сегменты
Точка A (с координатами (0, 0)) представляет собой классификатор, который ошибочно классифицирует все позитивные образцы, но в то же время корректно классифицирует все негативные (
). Точ- ка С с координатами (1, 1), наоборот, представляет классификатор, кото-
203 рый корректно классифицирует позитивный класс и все время ошибается на классе негативном.
Точка D в правом нижнем углу олицетворяет классификатор, который ошибается как на негативных, так и на позитивных примерах, а точка B – левый верхний угол – является идеальным классификатором, который кор- ректно классифицирует и позитивные, и негативные образцы.
Помимо самой ROC-кривой, для сравнения нескольких классификато- ров в различных исследованиях еще используют значение площади под этой кривой – area under curve, AUC [17]. Чем выше значение AUC – тем более качественней тестируемый классификатор, при этом значение 0,5 соответствует случайному угадыванию и означает, что классификатор не- пригоден для использования.
Подводя итоги, отметим, что в работе приведен обзор наиболее ис- пользуемых метрик для оценки качества классификаторов, и представлены типичные примеры задач, в которых применяются те или иные метрики.
Описанного набора метрик достаточно для использования в самом широ- ком круге задач как для бинарных, так и для мультиклассовых классифи- каторов.
Литература
1. Sokolova M., Japkowicz N., Szpakowicz S. Beyond Accuracy, F-Score and
ROC: A Family of Discriminant Measures for Performance Evaluation // Ad- vances in Artificial Intelligence. AI 2006. Lecture Notes in Computer Sci- ence. – 2006. – Vol. 4304 2. Tharwat A. Beyond Accuracy, F-Score and ROC: A Family of Discriminant
Measures for Performance Evaluation // Applied Computing and Informatics.
– 2021. – Vol. 17. – P. 168–192.
3. Fawcett T. ROC Graphs: Notes and Practical Considerations for Researchers
// Machine Learning. – 2004. – Vol. 31. – P. 1–38.
4. Spackman K. A. Signal Detection Theory: Valuable Tools for Evaluating In- ductive Learning // Machine Learning. – 1989. – P. 160–163.
5. Gneiting T., Vogel P. Receiver Operating Characteristic (ROC) Curves // arXiv: Methodology. – Vol. abs/1809.04808. – 2018.
6. Tharwat A., Gabel T., Hassanien, A. E. Classification of Toxicity Effects of
Biotransformed Hepatic Drugs Using Optimized Support Vector Machine //
Proceedings of the International Conference on Advanced Intelligent Systems and Informatics 2017. – 2018. – P. 161–170.
7. Donoghue C. Analysis of MRI for Knee Osteoarthritis using Machine Learn- ing // PhD Thesis of Imperial College London. – 2013.
204
ПЕРВОЕ СООБЩЕНИЕ О МОДУЛЕ НЕВИДИМОЙ
АВТОМАТИЧЕСКОЙ ПРОВЕРКИ ЗАДАНИЙ ПО
ПРОГРАММИРОВАНИЮ В СРЕДЕ PASCALABC.NET
Михалкович С. С.
ФГАОУ ВО «Южный федеральный университет»,
Институт математики, механики и компьютерных наук
им. И. И. Воровича
E-mail: miks@sfedu.ru
Среда программирования PascalABC.NET активно развивается в по- следние 7 лет [1, 2]. Связано это в основном с плавным изменением мето- дики обучения школьников в Воскресной компьютерной школе Института математики, механики и компьютерных наук [3]. Поскольку разработчики
PascalABC.NET активно преподают в Воскресной компьютерной школе, новые идеи в этой области генерируются, реализуются и внедряются непо- средственно во время учебного процесса. Проверка реализованных серви- сов может охватывать до 300 школьников в год – именно такое количество учеников компьютерной школы осваивает программирование каждый год.
Одним из широко используемых средств является электронный задач- ник Programming Taskbook, разработанный Абрамяном М. Э. и встроенный в среду PascalABC.NET. Он содержит более 2000 автоматически проверя- емых задач по различным разделам программирования от элементарных задач до файлов, динамических структур данных, параллельного програм- мирования и паттернов объектно-ориентированного проектирования.
Электронный задачник кардинально превосходит известные олимпиадные системы проверки по многим параметрам. Это прежде всего проверка ти- пизированных данных вместо проверки текстового вывода в файл, деталь- ные сообщения о причинах ошибки, значительно более лѐгкая разработка заданий и отсутствие необходимости разворачивать удалѐнную олимпиад- ную систему проверки. Эффективность электронного задачника в учебном процессе была доказана более чем 20-летним опытом использования в
Детской компьютерной школе.
Электронный задачник имеет и определенные недостатки. Это, преж- де всего, жѐстко заданный набор задач, изменение которого требует созда- ния нового дистрибутива PascalABC.NET. В реальности подобное измене- ние происходит не чаще раза в год. С другой стороны, для учебного про- цесса к каждому занятию разрабатываются новые задачи, для которых хо- телось бы обеспечить легкую автоматическую проверку.
В настоящей работе представлен модуль невидимой проверки про- стых задач по программированию, некоторые идеи которого заимствованы
205 из работы [4]. Новый модуль обладает следующими уникальными возмож- ностями:
новые задания, предлагаемые к уроку, можно обеспечивать системой автоматической невидимой проверки с помощью написания специального модуля – время разработки такого модуля сопоставимо с временем разработки самих заданий к уроку;
ввод данных по заданию может осуществляться учеником из различных источников: с клавиатуры или генерацией случайных чисел;
вывод данных можно осуществлять в разной последовательности, предусмотренной заданием;
можно вводить и выводить данные различных типов: например, в рамках одного задания можно вводить и выводить либо только целые, либо только вещественные значения.
Рассмотрим пример простого задания и способ его проверки.
{ Задание. Напишите программу, в которой вводятся числа x,y и выводятся их минимум и максимум
}
uses LightPT,Tasks;
begin
end.
Обратим внимание на подключение двух модулей: LightPT – общие функции проверки заданий (стандартный модуль), Tasks – модуль провер- ки заданий из текущей папки (хранится в текущей папке). Тело программы
– пустое, в него ученик записывает решение. Например, решение может выглядеть так:
var (x,y) := ReadInteger2;
Print(Min(x,y),Max(x,y));
После запуска такая программа, находящаяся под управлением моду- ля проверки, выведет:
5 2 2 5
Задание выполнено
Наиболее интересной здесь является возможность неявного подклю- чения модулей LightPT и Tasks при запуске программы из определенного каталога. Таким образом, итоговая программа для ученика будет выглядеть вообще без дополнительных модулей:
begin
var (x,y) := ReadInteger2;
Print(Min(x,y),Max(x,y));
end.
Проверка задания таким образом для ученика будет полностью неви- димой.
206
Следующей интересной возможностью здесь является изменение типа вводимых и выводимых данных – ученик может вводить вещественные значения вместо целых, при этом и выходные значения тоже станут веще- ственными:
var (x,y) := ReadReal2;
Print(Min(x,y),Max(x,y));
Задание тем не менее будет считаться выполненным, поскольку в функции автоматической проверки заложена возможность разных типов данных.
Не менее интересной возможностью является изменение источника ввода с ввода с клавиатуры на генерацию случайных чисел. Если ученик напишет такую программу
var (x,y) := Random2(1,10);
Print(Min(x,y),Max(x,y));
то задание будет по-прежнему расценено как правильно решенное.
Наконец, данные могут выводиться в другой последовательности и перемежаться с поясняющим выводом:
var (x,y) := ReadInteger2('Введите x,y:');
Print('Максимум =',Max(x,y),' Минимум =',Min(x,y));
Удивительно, но и в этом случае проверка выведет, что задание успешно выполнено.
Многие задания в своей постановке предусматривают некоторый ввод
– в этом случае проверка будет проще. Например, рассмотрим задание на массивы:
{ Отфильтруйте и выведите чётные элементы целого массива }
begin
var a := new integer[10];
for var i:=0 to a.Length-1 do
a[i] := Random(1,99); a.Println;
// Напишите вывод отфильтрованных элементов
end.
Ученику достаточно написать решение после комментария:
for var i:=0 to a.Length-1 do
if a[i] mod 2 = 0 then
Print(a[i]); и задание будет считаться выполненным. Здесь после заполнения случай- ными данными элементы массива выводятся для контроля с помощью a.Println
. Однако можно не делать такой вывод – проверяющая програм- ма сочтет решение правильным в обоих случаях.
Рассмотрим, что должен написать преподаватель для проверки реше- ния в модуле Tasks. В функции
МУЛЬТАКЛАССОВЫХ КЛАССИФИКАТОРОВ
Михайличенко А. А.
ФГАОУ ВО «Южный федеральный университет»,
Институт математики, механики и компьютерных наук
им. И. И. Воровича
E-mail: alexey.a.mikh@gmail.com
Существуют различные способы оценки производительности алго- ритмов машинного обучения, большинство из которых основаны на ис- пользовании матрицы ошибок (confusion matrix), которая содержит в себе количество корректно и некорректно классифицированных примеров для каждого класса [1]. В данной работе приводится подробный обзор основ- ных методов численной оценки качества работы классификаторов с анали- зом преимущества тех или иных метрик и особенностями их применимо- сти для различных задач.
Рассмотрим матрицу ошибок для некоторого бинарного классифика- тора (рис. 1). Зеленая диагональ матрицы обозначает количество верно предсказанных примеров для обоих классов, остальные значения – количе- ство ошибочных предсказаний. Ошибка распознавания позитивного класса как негативного (False Negative, FN) называется ошибкой второго типа, распознавание негативного класса как позитивного (False Positive, FP) – ошибкой первого типа [2]. Значения матрицы ошибок используются для вычисления большого количества метрик оценки классификатора.
Рис. 1. Пример матрицы ошибок для бинарной классификации:
P – позитивный класс, N – негативный класс
199
Accuracy. Наиболее распространенным эмпирическим методом оцен- ки точности классификации является процент корректно классифициро- ванных примеров – правильность (или accuracy):
Данная мера оценивает ситуацию в целом и не акцентирует внимание на каком-то конкретном классе. В случаях, когда датасет не сбалансиро- ван (т.е. количество примеров одних классов в датасете значительно пре- вышает количество примеров других), данная оценка может вводить в за- блуждение.
Sensitivity и specificity. Для оценки классификатора по разным клас- сам используют метрики специфичность (specificity, или true negative rate,
TNR) и чувствительность (sensitivity, или true positive rate, TPR):
Таким образом, специфичность – это процент примеров негативного класса, которые были корректно распознаны, а чувствительность – часть корректно классифицированных позитивных примеров. Другими словами, в целом чувствительность и специфичность можно рассматривать как мет- рику accuracy для образцов позитивного и негативного классов.
Данные метрики обычно используют в ситуациях, когда количество примеров, принадлежащих одному классу, существенно ниже, чем общее количество примеров – в классификации текстов, обработке естественного языка, биоинформатике, а именно в тех случаях, когда среди всех классов есть класс, представляющий особый интерес, а остальные классы либо объединены в один (бинарная классификация), либо оставлены как есть [1].
False positive и false negative rate. По аналогии с TPR и TNR в некото- рых приложениях бывает полезно значение FPR (false positive rate), кото- рое представляет собой отношение неправильно классифицированных от- рицательных образцов к общему количеству отрицательных образцов и
FNR (false negative rate) – доля примеров положительного класса, которые были неправильно классифицированы. При этом FNR дополняет меру
sensitivity, а FPR дополняет метрику specificity [2]:
200
И FPR, и FNR не чувствительны к особенностям распределения дан- ных, и поэтому могут использоваться в задачах с несбалансированными датасетами.
Precision и recall. Существуют метрики, которые позволяют оценить корректность классификации примеров для разных классов. Наиболее ин- формативными среди них являются точность (precision) и полнота
(recall), которая эквивалентна чувствительности:
Является ли более важным precision или recall – зависит от специфики конкретной задачи классификации. К примеру, для задачи обнаружения болезни важным является способность классификатора корректно обнару- жить как можно больше больных из общего набора, и в этом случае более важным параметром является recall. С другой стороны, важной характери- стикой классификатора также можно назвать его чувствительность к не- верной классификации, т. е. способность обнаруживать как можно больше примеров наличия заболевания, даже за счет ложно-положительных сраба- тываний – в таком случае важной характеристикой будет precision.
В большинстве случаев приходится идти на компромиссы при выборе между precision и recall.
F-мера. В некоторых случаях бывает удобно каким-либо образом объединить точность и полноту в одно число, т. е. получить своеобразный агрегированный критерий точности работы алгоритма. В этом случае ис- пользуют F-меру, которая является средним гармоническим точности и полноты вместо среднего арифметического, что позволяет сглаживать рас- чѐты за счет исключения экстремальных значений. В общем виде F-мера выглядит так: где β – вес точности в метрике, который в большинстве работ принимается равным 1. F-мера достигает максимума при полноте и точности, равными единице, и близка к нулю, если один из аргументов близок к нулю.
Мультиклассовая классификация. Матрица ошибок может быть со- ставлена не только для бинарного, но и для мультиклассового классифика- тора. Пример такой матрицы ошибок для случая трех классов A, B и C представлен на рис. 2.
Здесь, по аналогии с матрицей для бинарного классификатора, зеленая диагональ (значения
,
,
) обозначает количество верно предска-
201 занных примеров для каждого из классов, а оставшиеся ячейки матрицы – ошибочные предсказания.
Рис. 2. Пример матрицы ошибок для бинарной классификации
Например,
– количество примеров, являющихся классом A, но предсказанных как B,
– количество примеров, являющихся классом A, но предсказанных как C и т.д. Ложно-положительной (false positive) ошиб- кой для класса A будет сумма
=
, т.е. количество примеров, которые были классифицированы как класс A, но таковым на самом деле не являются. Ложно-отрицательной (false negative) ошибкой для класса A будет сумма
=
, которая показывает количество примеров класса A, ошибочно классифицированных как класс B или C. Таким обра- зом, матрица ошибок размера содержит ячеек корректных клас- сификация, и ячеек с ошибочными результатами [2]. Характери- стики
, , , для всего классификатора вычисляются как сумма соответствующих характеристик по всем классам, т. е.
= и т. д.
В случае подсчета метрик для мультиклассового классификатора воз- можны различные варианты подсчета метрик классификатора, не привя- занных к конкретным классам:
– микро: вычисление глобальных метрик путем подсчета общего ко- личества ложно-негативных (
), ложно-позитивных ( ) и других пара- метров (вместо подсчета индивидуальных метрик для каждого класса);
– макро: вычисление метрики для каждого класса и определение их невзвешенного среднего – в данном случае не учитывается сбалансирован- ность датасета и вес каждой метрики среди всего набора;
– взвешенное среднее: вычисление метрики для каждого класса и определение их взвешенного среднего, опираясь на процентное соотноше- ние количества образцов каждой метрики среди общего количества приме- ров в датасете – обычно используется в случае сильно несбалансирован- ных наборов данных.
202
ROC-кривая и площадь под этой кривой. Одним из информатив- ных методов визуализации качества бинарного классификатора считается кривая ошибок, или ROC-кривая (Receiver Operating Characteristic). Изна- чально ROC-кривая использовалась в теории обнаружения сигналов для описания компромисса между показателями угадывания и ложного сраба- тывания классификатора [3]. Одной из первых работ по машинному обу- чению, в который упоминается ROC-кривая, считается [4], где кривая ошибок используется для оценки и сравнения алгоритмов. С развитием машинного обучения упоминание ROC-кривой в литературе растет высо- кими темпами. Так, если в 1990 году было всего 50 упоминаний данного инструмента в научной литературе в год, то в 2002 это число достигло
1000, а в 2018 году зафиксировано более 8000 упоминаний кривой ошибок в год [6]. Стоит отметить, что ROC-кривая не зависит от распределения классов, что делает ее полезной для оценки классификаторов, прогнозиру- ющих редкие события (болезни [6], стихийные бедствия и т. п.).
ROC-кривая – это двумерный график, на котором по оси Y отклады- ваются значения TPR (или recall), а по оси X – значения FPR (или
). График показывает относительный компромисс между выго- дами (true positives) и затратами (false positives). Подробный алгоритм по- строения ROC-кривой можно найти в работе [3]. Рассмотрим рис. 3, на ко- тором показаны четыре важные точки ROC-кривой – A, B, C и D.
Рис. 3. Иллюстрация ROC-кривой с указанием важных для оценки классификатора точек, а также оптимистичный, пессимистичный и ожидаемый сегменты
Точка A (с координатами (0, 0)) представляет собой классификатор, который ошибочно классифицирует все позитивные образцы, но в то же время корректно классифицирует все негативные (
). Точ- ка С с координатами (1, 1), наоборот, представляет классификатор, кото-
203 рый корректно классифицирует позитивный класс и все время ошибается на классе негативном.
Точка D в правом нижнем углу олицетворяет классификатор, который ошибается как на негативных, так и на позитивных примерах, а точка B – левый верхний угол – является идеальным классификатором, который кор- ректно классифицирует и позитивные, и негативные образцы.
Помимо самой ROC-кривой, для сравнения нескольких классификато- ров в различных исследованиях еще используют значение площади под этой кривой – area under curve, AUC [17]. Чем выше значение AUC – тем более качественней тестируемый классификатор, при этом значение 0,5 соответствует случайному угадыванию и означает, что классификатор не- пригоден для использования.
Подводя итоги, отметим, что в работе приведен обзор наиболее ис- пользуемых метрик для оценки качества классификаторов, и представлены типичные примеры задач, в которых применяются те или иные метрики.
Описанного набора метрик достаточно для использования в самом широ- ком круге задач как для бинарных, так и для мультиклассовых классифи- каторов.
Литература
1. Sokolova M., Japkowicz N., Szpakowicz S. Beyond Accuracy, F-Score and
ROC: A Family of Discriminant Measures for Performance Evaluation // Ad- vances in Artificial Intelligence. AI 2006. Lecture Notes in Computer Sci- ence. – 2006. – Vol. 4304 2. Tharwat A. Beyond Accuracy, F-Score and ROC: A Family of Discriminant
Measures for Performance Evaluation // Applied Computing and Informatics.
– 2021. – Vol. 17. – P. 168–192.
3. Fawcett T. ROC Graphs: Notes and Practical Considerations for Researchers
// Machine Learning. – 2004. – Vol. 31. – P. 1–38.
4. Spackman K. A. Signal Detection Theory: Valuable Tools for Evaluating In- ductive Learning // Machine Learning. – 1989. – P. 160–163.
5. Gneiting T., Vogel P. Receiver Operating Characteristic (ROC) Curves // arXiv: Methodology. – Vol. abs/1809.04808. – 2018.
6. Tharwat A., Gabel T., Hassanien, A. E. Classification of Toxicity Effects of
Biotransformed Hepatic Drugs Using Optimized Support Vector Machine //
Proceedings of the International Conference on Advanced Intelligent Systems and Informatics 2017. – 2018. – P. 161–170.
7. Donoghue C. Analysis of MRI for Knee Osteoarthritis using Machine Learn- ing // PhD Thesis of Imperial College London. – 2013.
204
ПЕРВОЕ СООБЩЕНИЕ О МОДУЛЕ НЕВИДИМОЙ
АВТОМАТИЧЕСКОЙ ПРОВЕРКИ ЗАДАНИЙ ПО
ПРОГРАММИРОВАНИЮ В СРЕДЕ PASCALABC.NET
Михалкович С. С.
ФГАОУ ВО «Южный федеральный университет»,
Институт математики, механики и компьютерных наук
им. И. И. Воровича
E-mail: miks@sfedu.ru
Среда программирования PascalABC.NET активно развивается в по- следние 7 лет [1, 2]. Связано это в основном с плавным изменением мето- дики обучения школьников в Воскресной компьютерной школе Института математики, механики и компьютерных наук [3]. Поскольку разработчики
PascalABC.NET активно преподают в Воскресной компьютерной школе, новые идеи в этой области генерируются, реализуются и внедряются непо- средственно во время учебного процесса. Проверка реализованных серви- сов может охватывать до 300 школьников в год – именно такое количество учеников компьютерной школы осваивает программирование каждый год.
Одним из широко используемых средств является электронный задач- ник Programming Taskbook, разработанный Абрамяном М. Э. и встроенный в среду PascalABC.NET. Он содержит более 2000 автоматически проверя- емых задач по различным разделам программирования от элементарных задач до файлов, динамических структур данных, параллельного програм- мирования и паттернов объектно-ориентированного проектирования.
Электронный задачник кардинально превосходит известные олимпиадные системы проверки по многим параметрам. Это прежде всего проверка ти- пизированных данных вместо проверки текстового вывода в файл, деталь- ные сообщения о причинах ошибки, значительно более лѐгкая разработка заданий и отсутствие необходимости разворачивать удалѐнную олимпиад- ную систему проверки. Эффективность электронного задачника в учебном процессе была доказана более чем 20-летним опытом использования в
Детской компьютерной школе.
Электронный задачник имеет и определенные недостатки. Это, преж- де всего, жѐстко заданный набор задач, изменение которого требует созда- ния нового дистрибутива PascalABC.NET. В реальности подобное измене- ние происходит не чаще раза в год. С другой стороны, для учебного про- цесса к каждому занятию разрабатываются новые задачи, для которых хо- телось бы обеспечить легкую автоматическую проверку.
В настоящей работе представлен модуль невидимой проверки про- стых задач по программированию, некоторые идеи которого заимствованы
205 из работы [4]. Новый модуль обладает следующими уникальными возмож- ностями:
новые задания, предлагаемые к уроку, можно обеспечивать системой автоматической невидимой проверки с помощью написания специального модуля – время разработки такого модуля сопоставимо с временем разработки самих заданий к уроку;
ввод данных по заданию может осуществляться учеником из различных источников: с клавиатуры или генерацией случайных чисел;
вывод данных можно осуществлять в разной последовательности, предусмотренной заданием;
можно вводить и выводить данные различных типов: например, в рамках одного задания можно вводить и выводить либо только целые, либо только вещественные значения.
Рассмотрим пример простого задания и способ его проверки.
{ Задание. Напишите программу, в которой вводятся числа x,y и выводятся их минимум и максимум
}
uses LightPT,Tasks;
begin
end.
Обратим внимание на подключение двух модулей: LightPT – общие функции проверки заданий (стандартный модуль), Tasks – модуль провер- ки заданий из текущей папки (хранится в текущей папке). Тело программы
– пустое, в него ученик записывает решение. Например, решение может выглядеть так:
var (x,y) := ReadInteger2;
Print(Min(x,y),Max(x,y));
После запуска такая программа, находящаяся под управлением моду- ля проверки, выведет:
5 2 2 5
Задание выполнено
Наиболее интересной здесь является возможность неявного подклю- чения модулей LightPT и Tasks при запуске программы из определенного каталога. Таким образом, итоговая программа для ученика будет выглядеть вообще без дополнительных модулей:
begin
var (x,y) := ReadInteger2;
Print(Min(x,y),Max(x,y));
end.
Проверка задания таким образом для ученика будет полностью неви- димой.
206
Следующей интересной возможностью здесь является изменение типа вводимых и выводимых данных – ученик может вводить вещественные значения вместо целых, при этом и выходные значения тоже станут веще- ственными:
var (x,y) := ReadReal2;
Print(Min(x,y),Max(x,y));
Задание тем не менее будет считаться выполненным, поскольку в функции автоматической проверки заложена возможность разных типов данных.
Не менее интересной возможностью является изменение источника ввода с ввода с клавиатуры на генерацию случайных чисел. Если ученик напишет такую программу
var (x,y) := Random2(1,10);
Print(Min(x,y),Max(x,y));
то задание будет по-прежнему расценено как правильно решенное.
Наконец, данные могут выводиться в другой последовательности и перемежаться с поясняющим выводом:
var (x,y) := ReadInteger2('Введите x,y:');
Print('Максимум =',Max(x,y),' Минимум =',Min(x,y));
Удивительно, но и в этом случае проверка выведет, что задание успешно выполнено.
Многие задания в своей постановке предусматривают некоторый ввод
– в этом случае проверка будет проще. Например, рассмотрим задание на массивы:
{ Отфильтруйте и выведите чётные элементы целого массива }
begin
var a := new integer[10];
for var i:=0 to a.Length-1 do
a[i] := Random(1,99); a.Println;
// Напишите вывод отфильтрованных элементов
end.
Ученику достаточно написать решение после комментария:
for var i:=0 to a.Length-1 do
if a[i] mod 2 = 0 then
Print(a[i]); и задание будет считаться выполненным. Здесь после заполнения случай- ными данными элементы массива выводятся для контроля с помощью a.Println
. Однако можно не делать такой вывод – проверяющая програм- ма сочтет решение правильным в обоих случаях.
Рассмотрим, что должен написать преподаватель для проверки реше- ния в модуле Tasks. В функции
1 ... 16 17 18 19 20 21 22 23 ... 28