Главная страница

Диссертация. Основам искусственного интеллекта и анализа данных в курсе информатики на уровне среднего общего образования Научная


Скачать 4.76 Mb.
НазваниеОсновам искусственного интеллекта и анализа данных в курсе информатики на уровне среднего общего образования Научная
Дата17.10.2022
Размер4.76 Mb.
Формат файлаpdf
Имя файлаДиссертация.pdf
ТипДиссертация
#737975
страница12 из 17
1   ...   9   10   11   12   13   14   15   16   17
2.3.2. Практикум по теме Основы искусственного интеллекта и его использование в учебном процессе Для освоения темы в качестве практической части обучающимся предлагается ряд задач, требующих применения новых знаний и навыков. Задачи формулируются как ситуации, решение для которых необходимо было предложить в виде программного кода. В целом, предложенные материалы можно разделить на две больших категории – простые задачи для знакомства с новым инструментом (например, библиотекой) и более сложные, требующие смыслового погружения и комбинирования новых инструментов с уже известными. При составлении заданий практикума использовался принцип постепенно усложнения и также соответствие всем разобранным ранее в формате теории типам интеллектуальных алгоритмов по областям применения (классификация, кластеризация, регрессия, ассоциативные правила и экспертные системы. Здесь следует дополнительно обратить внимание на специфику темы Искусственный интеллект, также оказавшей сильное влияние как на содержание курса, таки на его практическую часть и выбор инструментов.
Во-первых, для знакомства с применением искусственного интеллекта в окружающей действительности предлагалось решение задач социально-

значимого характера через новые инструменты, включая популярные языки программирования и сервисы, причём упор делался на свободное программное обеспечение, доступное каждому [143]. Выбор тем практикума также связан с возрастными особенностями обучающихся данного возраста (старший подростковый возрасти юношество. Постепенный уход от сугубо учебных задач к ситуациям, описывающим окружающую действительность, не только повышает вовлеченность ребят, но и способствует обеспечению межпредметности заданий и пониманию универсальности области применения изучаемых алгоритмов.

160
Во-вторых, в усложненных задачах используются примеры сетов больших данных. Отличие использования потоковых данных и привычных таблиц заключается в нескольких пунктах, оказывающих непосредственное влияние на корректность материалов и их освоение обучающимися потоковые данные генерируются из множества разных источников, что для учебных проектов влияет на нормальное распределение в выборке, которое зачастую является необходимым требованием для работы классификатора [32]; потоковые данные доставляются по различным путям, более того, их свойства изменчивы, что позволяет со временем обратиться к тому же источнику и получить данные новой структуры (в обычной таблице данные статичны, причём часто обновление происходит в реальном времени потоковые данные не требуют доступа сразу ко всем данным, можно обращаться только к их части (предлагается дополнительно, не рассматривается в предлагаемых задачах, хотя может быть реализовано в них на стадии запроса данных по адресу многие интеллектуальные алгоритмы проявляют себя по-

разному на маленьких (частные случаи) и больших выборках данных, поэтому важно показать, как они работают в приближенных к реальным условиях. Пример с подобной работой алгоритма приводится в пункте об ассоциативных правилах также у 189]. Все задания были описаны и подавались в формате кейсов, включающих в себя описание проблемной ситуации (конкретную проблему и путь её решения должны были предложить сами обучающиеся перечень инструментов (библиотеки фреймворков); данные.

161 Особенностью предлагаемых заданий второго типа является обработка сетов больших данных, которые небыли сгенерированы или придуманы, а взяты из окружающей действительности. Таким образом, перед ребятами вставала проблема, которую нужно было решить в реальном мире. Дополнительно стоит отметить, что помимо ухода от игровых ситуаций здесь также важна возможность индивидуального решения, чтобы показать, что машина не может заменить специалиста, поскольку даже водной группе у обучающихся были разные результаты, причём каждый результат обладал собственной ценностью. Все практические задания выполняются с помощью дистрибутива
Anaconda на языке Python 3 с использованием библиотеки, модуля Apyori, пакета PyKnow и другими популярными библиотеками, часто применяемыми в Data проектах. Пошаговые инструкции и разборы задач вошли в сборник, который готовится к публикации в издательстве Просвещение [46]. Ниже приведём список основных библиотеки модулей и их назначение библиотеки с установкой в pip3: o researchpy — библиотека для научных исследований, включающая в себя много полезных метрик, статистики других инструментов анализа. Позволяет выводить понятно оформленные отчёты; o PyKnow — библиотека для работы с экспертными системами, основанная по смыслу на популярной библиотеке CLIPS, но менее требовательная к пользователю. библиотеки для импорта данных, работы с матрицами и другими форматами данных o pandas — расширяет функционал для работы с числовыми таблицами и временными рядами o numpy — для работы с многомерными массивами enum — для работы со строго ограниченными множествами

162 o textwrap — для работы с форматированным текстом o itertools — для создания собственных итераторов, в том числе бесконечных для работы с машинным обучением o sklearn, включая sklearn.neighbors, sklearn.cluster, sklearn.metrics
— для реализации интеллектуальных алгоритмов и использования готовых функций расстояний o Apyori — для работы с алгоритмом APriori; для визуализации и статистических выкладок o scipy — библиотека для научных расчётов, расширяет математические встроенные функции языка o matplotlib.pyplot — для построения графиков o mpl_toolkits.mplot3d — для вывода графиков o statsmodels — модуль работы со статистикой, также включает в себя работу со статистическими моделями, которые используются в том числе для решения задачи регрессии o statsmodels.stats.api — часть комплекса библиотек statsmodels, позволяющая проверить в том числе функции ошибки o statsmodels.compact — сворачивает данные. Также для некоторых тем были созданы практические материалы, не требующие программирования или вовсе представляющие собой игры, входе которых демонстрируются общие принципы работы интеллектуальных алгоритмов (например, при кластеризации. Такие задания решаются на доске или в тетради группой и помогают создать у обучающихся ассоциации с привычными им нецифровыми методами решения задач. Далее приведём несколько типовых примеров задачи их решения. Первая задача предполагает создание модели, классификатором в которой является алгоритм k ближайших соседей, и ограничивается этапом свободного поиска. Ключевые особенности также для удобства даны.

163 Задача №1. Новенький в классе Проведём исследование групп детей в школе. Некоторый класс взят за образец, потому что известно, какие в нём существуют компании. Требуется собрать анкету определённого образца для участников класса, поскольку описание групп, на которые обучающийся будет разделять своих одноклассников, создаёт сам исследователь. Респонденту необходимо будет выбрать один наиболее предпочтительный ответ из готового списка. Пример вопросов и ответов
1. Укажите ваш пол. Варианты ответов женский, мужской, воздержусь неважно. Какой вид спорта вам нравится Варианты ответов футбол, теннис, плавание, конный спорт, стрельба из лука, бег.
3. Ваш любимый предмет в школе Варианты ответов математика, информатика, технология, МХК, русский язык.
4. Самый сложный для вас предмет в школе Варианты ответов математика, информатика, технология, МХК, русский язык.
5. Ваш тип суточного биоритма Варианты ответов жаворонок, сова, голубь.
6. К какой группе вы принадлежите Варианты ответов заводилы, всезнайки, спортсмены, киноманы. Ответы в формате таблицы будут выглядеть примерно так женский | футбол | математика | МХК | сова | заводилы женский | плавание | информатика | математика | жаворонок | всезнайки мужской | бег | русский язык | технология | сова | киноманы Пример решения Сначала необходимо подключить библиотеки, которые будут работать сданными, в том числе проводить их нормализацию. Потребуется

164 также импортировать модуль с классификатором. Затем таблица разбивается на свойства по заголовкам как значения соответствующих переменных. Выбираются значимые свойства (features) исходных объектов и group — ответы, по которым будет учиться классификатор. Под значимыми свойствами понимают те, которые исследователь выбрал как ключевые для выявления новых полезных данных. Поскольку алгоритм работает с функцией расстояния, её подсчёт связан счисленными переменными. Воспользуемся подготовленным инструментом для преобразования названий в номера, сначала создав объект-энкодер. Энкодер присваивает числовой ярлык, соответствующий очерёдности появления нового свойства в данных. Объекты записываются как X, ответы (метки классов) как Y. На известных данных модель обучается. При запуске программа задаст несколько вопросов, и на основании ответов модель предскажет наиболее близкую группу друзей для новичка. Код решения import pandas as pd import numpy as np from sklearn import preprocessing from sklearn.neighbors import KNeighborsClassifier trans_set=pd.read_csv('my_group.csv', sep=',',header=0) gender=trans_set.values[:,0] sportHobby = trans_set.values[:,1] belovedSubject = trans_set.values[:,2] complexSubject = trans_set.values[:,3]

165 sleepCycle = trans_set.values[:,4] group = trans_set.values[:,5] enc = preprocessing.LabelEncoder() gender_encoded = enc.fit_transform(gender) sportHobby_encoded = enc.fit_transform(sportHobby) belovedSubject_encoded
= enc.fit_transform(belovedSubject) complexSubject_encoded
= enc.fit_transform(complexSubject) sleepCycle_encoded = enc.fit_transform(sleepCycle) group_encoded = enc.fit_transform(group)
X
= list(zip(gender_encoded, sportHobby_encoded, belovedSubject_encoded, complexSubject_encoded, sleepCycle_encoded))
Y = group_encoded knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X,Y) gender_dict = dict()

166 sportHobby_dict = dict() belovedSubject_dict = dict() complexSubject_dict = dict() sleepCycle_dict = dict() group_dict = dict() for i in range (len(gender_encoded)): gender_dict[gender[i]] = gender_encoded[i] sportHobby_dict[sportHobby[i]] = sportHobby_encoded[i] belovedSubject_dict[belovedSubject[i]] = belovedSubject_encoded[i] complexSubject_dict[complexSubject[i]] = complexSubject_encoded[i] sleepCycle_dict[sleepCycle[i]] = sleepCycle_encoded[i] group_dict[group[i]] = group_encoded[i]

167 newOne = Какого пола новичок ")], Какой вид спорта ему/ей нравится ")], Какой предмету него/неё любимый ")], Какой предмет для него/неё самый сложный ")], Какой у него/неё режим сна ")]]]) Скорее всего он будет дружить с группой " + list(group_dict.keys())[list(group_dict.values()).inde x(newOne)]) Проверка точности – соответствия проверки моделью с исходным файлом from sklearn import metrics
Y pred = knn.predict(X) Точность,
Y_pred)*100,"%") Поскольку для решения этой задачи используются элементы геймификации, предусматривающие групповую активность и выбор

168 вопросов непосредственно участниками, это позволяет усилить вовлеченность обучающихся и, как следствие, мотивацию в целом. Для изучения кластеризации рассматриваются две задачи и одна игра. Игра позволяет повысить мотивацию обучающихся и на примере раскрыть сложное понятие кластеризация. Игра в кластеры. Предлагается кластеризацию с помощью подручных средств. Нужно подготовить три карточки разного цвета. Группа выходит на площадку, предварительно раздав карточки участникам случайным образом. Так задаются центры кластеров (в виде кластероидов) при инициализации модели (начале игры. Игроки расходятся по площадке, больше свою позицию менять нельзя. Первая итерация Пусть каждый протянет руки к тому человеку с карточкой, который стоит ближе всех. Получается явное разбиение на кластеры, образовавшиеся вокруг центров. Теперь надо переопределить центры. Для этого карточки передаются тем, кто стоит в центре образовавшихся групп. Схематично это изображено на Рис. 20. Рис. 20. Схема игры в кластеризацию Новый раунд – это следующая итерация. Повторяются шаги вновь протягиваются руки к тому человеку с карточкой, который находится ближе других. Центры перераспределяются. Игра закончится, когда все

169 центры перестанут отдавать свои карточки, то есть центроиды стабилизируются. Таким образом, в игровом формате обучающиеся знакомятся с процессом кластеризации. Отметим, что игра может быть проведена в дистанционном формате. Так осенью 2020 года игра была проведена в рамках Урока цифры с 10 классом МАОУ Лицея г. Реутов с помощью онлайн табличного процессора “Google Таблицы. В ней обучающимся предлагалось использовать в качестве ярлыка кластера заливку ячейки, которую они выбрали как свою клетку на старте игры. Входе игры нужно перекрашивать свою клетку в цвет ближайшего центроида. В остальном правила сохраняются. Задача №2. Зоологический каталог (без визуализации. К специалисту отдела разработки пришёл дизайнер и сказал, что продумал дизайн фауны для новой игры, которую разрабатывает ваша компания. В локации, над которой сейчас работает ваш отдел, должны встретиться 9 существ около трёх точек сохранения (save points). Но дизайнер не читал техническое задание, он просто творил, как ему вздумается. Времени переделывать эскизы нет, ив общем-то, звери получились достаточно интересными на вид. Разработчику поручили разбить их на группы, которые будут охранять точки сохранения. Есть 9 записей с характеристиками особей, которые надо разбить на 3 группы, причём критериев для отнесения их к какой-либо группе нет. Записи зашифрованы загадочным списком
12,13,163 14,26,89 234,324,14 112,123,634 231,364,325 125,123,36

170 212,35,666 65,845,456 260,545,24 Решение. Можно построить для них графики попытаться отделить выбросы или проанализировать стандартное отклонение. Но так как данных мало, это не приведёт к значительному результату. При неизвестном описании групп и известном количестве кластеров, а также при работе с числами, удобнее всего будет использовать метод средних метод динамических ядер. Подключается модуль, затем импортируются данные и используется готовая модель. Останется только вывести ярлыки кластеров, к которым принадлежат объекты. from sklearn.cluster import KMeans import pandas as pd trans_set=pd.read_csv('store_data.csv', sep=',', header=None)
X=trans_set.values kmeans
=
KMeans(n_clusters=3, random_state=0).fit(trans_set) kmeans.labels_ kmeans.cluster_centers_ for i, kmeans.labels_ in enumerate (kmeans.labels_): Существо №', i+1, 'относится к типу, kmeans.labels_+1) Мы получим следующий результат

171 Существо № 1 относится к типу 1 Существо № 2 относится к типу 1 Существо № 3 относится к типу 1 Существо № 4 относится к типу 3 Существо № 5 относится к типу 1 Существо № 6 относится к типу 1 Существо № 7 относится к типу 3 Существо № 8 относится к типу 2 Существо № 9 относится к типу 1 Задача №3. Немецкие кредиты. В приведённом ранее примере использовалась слишком маленькая выборка, а также отсутствовал важнейший этап работы — визуализация. Продолжим с реальной выборкой из 1000 записей (объектов. Для следующего примера взяты статистические данные о кредитных рисках и портретах клиентов немецких банков, размещённые в свободном доступе на странице Естественнонаучного колледжа
Эберли
(Eberly
College of
Science): https://newonlinecourses.science.psu.edu/stat508/resource/analysis/gcd Варианты исследований этого dataset можно найти на страницах онлайн-курсов многих университетов и колледжей, причём каждый исследует по-своему. Допустим, банку необходимо сделать пять рекламных кампаний, чтобы привлечь новых клиентов именно в свой банк. Число кампаний выбрано здесь случайно из размышлений отдела продажи финансового состояния текущий бюджет, который могут выделить на рекламу, разделили на затраты, типичные для проведения акции. Чтобы привлечь клиентов, из имеющейся базы составят пять портретов, определяющих целевую аудиторию каждого рекламного ролика или иного рекламного продукта. Для нас, как исследователей, это означает, что потребуется

172 разбить клиентов на пять кластеров, а затем дать описание типичного представителя каждого кластера – его центра. Решение состоит из нескольких этапов предварительная работа сданными это загрузка, отделение нужных свойств визуализация
— один из важных этапов в проектах науки о данных, здесь производится визуализация по трём параметрам (длительность кредита, возраст клиента и является ли клиент резидентом Германии составление предварительных гипотез — на основе визуализации выдвигаются гипотезы, которые затем проверяются наследующем этапе анализ
— именно на этом этапе проводится кластеризация, то есть создается и обучается модель

отчёт — визуализация результатов кластеризации и печать на экран полученных фактов о выборке здесь же описывается результат проверки гипотезы проверка результата — проверка модели с помощью специальных функций, в данном случае использовался метод силуэта. Тогда код будет выглядеть следующим образом Для работы сданными Для реализации k-means from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score Для визуализации from matplotlib import pyplot as plt

173 from mpl_toolkits.mplot3d import Axes3D trans_set=pd.read_csv('german_credit.csv', sep=',',header=None)
Data=trans_set.values Визуализация (по трём свойствам) x = Data [:,2] y = Data [:,13] z = Data [:,20] def scatter3d(x,y,z,c): fig = plt.figure(figsize=(8, 8)) ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y,z,c=c) Кредиты в Германии) Длит. кредита (мес) Возраст (лет) Иностранец (нет/да)') plt.show() scatter3d(x,y,z,'blue')
Clients = Data

174
Clients = np.delete(Clients, np.s_[0:2], axis=1)
Clients = np.delete(Clients, np.s_[1:11], axis=1)
Clients = np.delete(Clients, np.s_[2:8], axis=1) Объявим и инициализируем объект-модель метода K- средних kmeans = KMeans(n_clusters=5, random_state=0).fit(Clients) portraits = kmeans.cluster_centers_ Вывод результатов для исследователя-человека: for x in range (5): if(round(portraits[x][2])==1): resident = 'Гражданин ' else: resident Приезжий ' months = int(round(portraits[x][0])) years = round((months/12),1) в возрасте '+ str(int(round(portraits[x][1])))+' лети кредит на срок '+str(months)+' месяцев ('+str(years)+' лет) Построение визуализации модели

175 labels = kmeans.labels_ color = list(range(len(Data))) for x in range(len(Data)): if labels[x] == 0: color[x]= 'red' elif labels[x]== 1: color[x] ='yellow' elif labels[x] == 2: color[x] ='green' elif labels[x] == 3: color[x] ='blue' else: color[x]='black' x = Clients[:,0] y = Clients[:,1] z = Clients[:,2] scatter3d(x,y,z,c=labels)

176 Проверка правильности выбора количества кластеров for n_cluster in range(2, 16): kmeans = KMeans(n_clusters=n_cluster).fit(Clients) label = kmeans.labels_ sil_coeff
= silhouette_score(Clients, label, metric='euclidean') Для {} кластеров, коэффициент функции силуэта {}.".format(n_cluster, round(sil_coeff,3))) Входе предварительного анализа было выяснено, что большинство берущих кредиты — граждане Германии. Если иностранец берёт кредит, то, скорее всего, это молодой человек (до 45 лет. Мы видим лишь одно исключение в виде 70 с лишним лет на верхнем уроне. Среди граждан возраста в среднем до 65 лет с небольшим увеличением долив интервале
20–30 лет. В-третьих, люди в основном берут кредиты на срок до 48 месяцев, те. до 4 лет. Предварительно мы можем сделать вывод, что в Германии кредиты чаще берут работающие молодые граждане на краткий срок. Данные выводы сделаны по Рис. 21
. На основе данных модель выявила типичных представителей гражданин в возрасте 27 лети кредит на срок 13 месяцев (1.1 лет гражданин в возрасте 59 лети кредит на срок 18 месяцев (1.5 лет гражданин в возрасте 29 лети кредит на срок 27 месяцев (2.2 лет гражданин в возрасте 42 лети кредит на срок 14 месяцев (1.2 лет гражданин в возрасте 37 лети кредит на срок 45 месяцев (3.8 лет. Группы чётко отображены на графике (см. Рис. 22):

177 Рис. 21. Диаграмма распределения кредитов в Германии

178 Рис. 22. Группы клиентов банка Исследователь может сделать поданным следующие выводы
1. Молодёжь, которая берёт краткосрочные кредиты.
2. Люди без разделения по возрасту, которые берут только долгосрочные кредиты (на срок более двух лет.
3. Люди среднего возраста, которые берут кредит на срок от года и до трёх лет.
4. Люди предпенсионного возраста, которые берут кредит на срок до двух с половиной лет.
5. Пенсионеры, которые берут кредит на срок до трёх лет. Значения при проверке числа кластеров методом силуэта

179 Для 2 кластеров, коэффициент функции силуэта 0.422. Для 3 кластеров, коэффициент функции силуэта 0.446. Для 4 кластеров, коэффициент функции силуэта 0.365. Для 5 кластеров, коэффициент функции силуэта 0.363. Для 6 кластеров, коэффициент функции силуэта 0.373. Для 7 кластеров, коэффициент функции силуэта 0.384. Для 8 кластеров, коэффициент функции силуэта 0.393. Для 9 кластеров, коэффициент функции силуэта 0.392. Для 10 кластеров, коэффициент функции силуэта 0.397. Для 11 кластеров, коэффициент функции силуэта 0.396. Для 12 кластеров, коэффициент функции силуэта 0.382. Для 13 кластеров, коэффициент функции силуэта 0.41. Для 14 кластеров, коэффициент функции силуэта 0.376. Для 15 кластеров, коэффициент функции силуэта 0.384. Таким образом, оптимальным было бы разбиение на 3 группы. АССОЦИАЦИЯ (АССОЦИАТИВНЫЕ ПРАВИЛА) Этот пункт предусматривает четыре задачи первая решается без средств автоматизации для знакомства с принципом работы алгоритма, вторая – с помощью частичной автоматизации с применением табличного процессора, третья с помощью программирования на небольшой выборке, четвёртая предусматривает анализ больших данных. Задача №4. Магазинчик При формулировке первой задачи данного блока следует предоставить обучающимся самим придумать тематику магазина, например, как кафе. Важно лишь ограничить количество возможных наименований до 5-6 пунктов, а транзакций — до 8-10, причём прослеживать, чтобы хотя бы 4 наименования встречались в транзакциях хотя бы по 3 раза. Решение может выглядеть следующим образом

180 1. Выписывается множество I (itemset). Мы решили открыть небольшой магазин в тундре недалеко от метеорологической базы, расположенной далеко от населённых пунктов (см. Таблицу 12): Таблица 12. Перечень товаров

ID
PrName
1 мясо
2 хлеб
3 соль
4 сахар
5 мука
6 спички
2. Выписывается множество T (множество всех транзакций, например (см. Таблицу Таблица 13. Множество транзакций

TID
Items
101 мясо, хлеб
102 хлеб, соль, сахар
103 мука
104 спички, хлеб, мясо
105 хлеб, спички
106 мясо, мука
107 соль, сахар
108 мясо, хлеб, соль, спички
3. Составляется нормализированную таблицу (см. Таблицу 14), где строка соответствует TID, столбец — ID. Наличие товара в конкретной транзакции

181 t отмечается в бинарном виде 0 - товар в чеке отсутствует, 1 — товар в чеке присутствует.
𝛿(𝑡) = {
0, если товар отсутствует, если товар есть в чеке
Вы должны получить матрицу вида
(
0

1

… …
1

1
) Таблица 14. Нормализованная таблица транзакций

ID
1 2
3 4
5 6
TI
D
101 1
1 0
0 0
0 102 0
1 1
1 0
0 103 0
0 0
0 1
0 104 1
1 0
0 0
1 105 0
1 0
0 0
1 106 1
0 0
0 1
0 107 0
0 1
1 0
0 108 1
1 1
0 0
1 4. Для каждого столбца подсчитывается значение поддержки товара как сумму элементов столбцов матрицы, т.к. для первого шага Y = Ø. sup(𝐼𝐷) = ∑ 𝑋 ∪ 𝑌 На первом этапе алгоритма (сейчас) кандидатами C
k являются все одноэлементные множества, те. все товары (items).

182 Сравнивается полученные значения поддержки с объявленным в условии минимальным значением поддержки minsup = 3. Элементы, у которых поддержка больше или равна минимальной, заносятся во множество часто встречающихся F
k
, где k – номер шага (см. Таблицу 15). Таблица 15. Поиск часто встречающихся на первом шаге С 1
2 3
4 5
6
Support
4 5
3 2
2 3
F
1 1
2 3
-
-
6 6. Кандидатами С считать множество всех сочетаний разных элементов F
k из предыдущего шага.
7. Подсчитывается поддержка каждого такого множества по Таблице 16. Таблица 16. Поиск часто встречающихся на втором шаге
8. Повторяются пункты 5–7 до тех пор, покат. е. пока не достигните негативной зоны (см. Таблицу 17): Таблица 17. Поиск часто встречающихся на третьем шаге С 1, 2, 6
Support
2
F
3
- С 1, 2 1, 3 1, 6 2, 3 2, 6 3,6
Support
3 1
2 2
3 1
F
2 1, 2
-
-
-
2, 6
-

183 9. Все полученные элементные часто встречающиеся наборы, где множество F имеет вид
𝐹 = ∑ Отсюда
1   ...   9   10   11   12   13   14   15   16   17


написать администратору сайта