Как получать пятёрки с помощью анализа данных?

в 23:46, , рубрики: анализ данных, визуализация, визуализация данных, машинное обучение
Как получать пятёрки с помощью анализа данных? - 1

Привет! Я уверен, что среди нас есть много студентов и, наверное, все из них признают, что на своём студенческом пути встречали такие науки, о гранит которых можно сломать зубы. Вот поэтому хочу вам рассказать о том, как хобби — наука о данных, помогло мне сдать один из самых сложных предметов в семестре на пятёрку. Если вам интересно — прошу под кат.

Предыстория

Учусь я на кафедре Вычислительной техники ИТМО, на втором курсе. В середине прошлого семестра, во время подготовки к 100500-й лабораторной, ко мне в голову пришла мысль применить своё хобби — науку о данных, чтобы как-то облегчить себе задачу. Уже через две минуты я загрузил ipython notebook и погрузился в процесс…

В итоге я сделал определённые выводы о распределении сложностей лабораторных и о корреляциях их тематик. Эти выводы показались мне весьма интересными и правдоподобными, и я попытался применить полученную информацию на практике. По итогам семестра я получил пятерку и благополучно оставил исследование в глубинах гитхаба. Но буквально пару дней назад мне удалось поделиться идеей и выводами этого мини-исследования с людьми, не относящимися напрямую к кафедре и предмету, о котором делаются выводы. И я услышал много положительных отзывов. Поэтому и решил рассказать об этом не очень большом, зато очень прикладном, исследовании на Хабре.

Где взять данные?

Начал я, как и полагается, с поиска данных, которые могут дать нам возможность сделать ценные выводы. В университете система электронного оценивания закрыта, и посмотреть оценки ни чьи, кроме своих нельзя. Устраивать опросы мне не хотелось, потому что это заняло бы много времени и сил, в общем не целесообразно. К счастью, многие преподаватели ведут открытый журнал в гугл доках. Они-то нам и помогут. Я нашёл журнал по интересующему нас предмету одного из прошлых курсов, распарсил его и получил небольшой датасет, в котором было порядка 100 оценок. На тот момент я готовился к сдаче 4-й лабораторной, которой предшествовали 3 первые лабы и одно ДЗ. Итого в датасете для каждого обьекта имелось 6 оценок:

  • 1-4 лабораторные (5-бальная шкала)
  • 1 ДЗ (5-бальная шкала)
  • Итоговая семестровая оценка (100-бальная шкала)

Визуализация и анализ данных

Получив нужные данные, я сразу начал их визуализировать. Сначала давайте посмотрим на зависимости всех оценок друг от друга.

Как получать пятёрки с помощью анализа данных? - 2

Из внедиагональных элементов выделить что-то особо полезное/интересное у меня не получилось. В то же время на диагонали, где отображены распределения соответствующих оценок, можно увидеть, как люди зачастую сдают эту работу. Сразу, например, видим, что 1-ю почему-то большинство людей сдают на 4. Возможно, преподаватели ещё не успели понять уровень большинства студентов, поэтому проявляют «осторожную» тактику. В последующих же лабораторных такое не проявляется.

К тому же тут мы можем судить о сложности работ. Например, мне сразу бросился в глаза факт, что 2-я лаба — единственная из всех, у которой мода оценки равна 5. Из этого можно судить, что эта лабораторная должна получиться наиболее лёгкой.

Также я отметил, что средняя итоговая оценка (нижняя строчка) явно гораздо левее оценки в 74 балла (у нас в университете <=74 это тройка). Но ведь по оценкам лабораторных большинство людей шло на 4, а значит что стоит бояться экзамена.

Таким образом по этому plot'у люди могут решить две интересные задачи:

  1. Проранжировать лабораторные по сложности
  2. Понять на какую оценку стоит ориентироваться

Идём дальше. Следующий график, как мне показалось, дал ещё более интересную информацию.

Как получать пятёрки с помощью анализа данных? - 3
Это отображение матрицы корреляций между каждой парой оценок, а значит и между тематикой соответствующих работ.

Наибольший интерес для нас представляет последняя строка/столбец. Возьмём, например, строку. Она показывает насколько сильно коррелирует оценка за соответствующую лабораторную с итоговой семестровой оценкой. И тут можно видеть, что оценка за вторую лабораторную почти никак не влияет на итоговую. Значит ли это, что на экзамене/тестах эта тема попадается крайне редко? ДА!

В это же время 1 лаба и дз играют немного более важную роль, а значит с этой темой неплохо было бы разобраться. Ну а квадратики, отвечающие за 3-ю и 4-ю лабораторные и вовсе говорят, что в эту тему стоит вникнуть как можно лучше, чтобы получить достойную оценку.

То есть с помощью обычного heatmap'a мы, почти что смогли вскрыть экзаменационные билеты, ещё задолго до экзамена!

Таким образом с помощью этого графика мы можем решить одну из самых сложных задач студента: «какой билет перечитать 10 раз, а какой 100».

Более того, это не ограничивается лишь экзаменом. По этому графику видно, что при подготовке к сдаче домашнего задания, важнее разобраться с материалами 1-й и 2-й лабораторных, ну а 3-ей можно уделить чуть меньше внимания.

И самое интересное, что если начать вдумываться в тематику всех лабораторных, то все выводы становятся весьма объяснимыми и лишь отчасти неожиданными.

Построение предсказательной модели

Разумеется я не могу обойти стороной машинное обучение. Я пытался строить очень много моделей и в итоге наименьшую абсолютную погрешность дал sklearn'овский случайный лес +-0.2
Но мне хотелось расшарить эту модель среди заинтересованных ребят, поэтому я обучил обычную линейную регрессию, достал из неё веса и опубликовал их. Таким образом, чтобы любой человек, путём простых арифметических операций смог предсказать свою оценку за 4-ю лабораторную (MAE алгоритма составила 0.3).

Но на самом деле главную ценность этого мини-исследования несёт в себе предыдущий раздел и сделанные в нём выводы.

Выводы

Вот и всё исследование. Как видим, собрав даже не очень большую выборку, можно сделать реально полезные выводы, которые могут вам помочь. И, главная мысль, которую я хотел показать этим — это то, что анализ данных представляет из себя очень полезную штуку, даже на уровне «домохозяйских» вопросов.

Надеюсь статья была интересна, спасибо!

Автор: yurij_volkov

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js