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

85712e71db3f4cd0ac1854bdc09af6cc.jpg

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

Предыстория


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

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

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


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

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


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

80a8d443d57049328998124e60e5e756.jpg

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

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

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

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

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

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

2a66c06d3e8f403f9ce3b55d530f0b5a.jpg
Это отображение матрицы корреляций между каждой парой оценок, а значит и между тематикой соответствующих работ.

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

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

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

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

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

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

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


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

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

Выводы


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

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

Комментарии (2)

  • 10 февраля 2017 в 03:15

    –3

    Я думал, вы расскажете, как правильно шпоры писать…
  • 10 февраля 2017 в 08:33 (комментарий был изменён)

    0

    Seaborn+pandas?

© Habrahabr.ru