Привет! Я уверен, что среди нас есть много студентов и, наверное, все из них признают, что на своём студенческом пути встречали такие науки, о гранит которых можно сломать зубы. Вот поэтому хочу вам рассказать о том, как хобби — наука о данных, помогло мне сдать один из самых сложных предметов в семестре на пятёрку. Если вам интересно — прошу под кат.
Предыстория
Учусь я на кафедре Вычислительной техники ИТМО, на втором курсе. В середине прошлого семестра, во время подготовки к 100500-й лабораторной, ко мне в голову пришла мысль применить своё хобби — науку о данных, чтобы как-то облегчить себе задачу. Уже через две минуты я загрузил ipython notebook и погрузился в процесс…
В итоге я сделал определённые выводы о распределении сложностей лабораторных и о корреляциях их тематик. Эти выводы показались мне весьма интересными и правдоподобными, и я попытался применить полученную информацию на практике. По итогам семестра я получил пятерку и благополучно оставил исследование в глубинах гитхаба. Но буквально пару дней назад мне удалось поделиться идеей и выводами этого мини-исследования с людьми, не относящимися напрямую к кафедре и предмету, о котором делаются выводы. И я услышал много положительных отзывов. Поэтому и решил рассказать об этом не очень большом, зато очень прикладном, исследовании на Хабре.
Где взять данные?
Начал я, как и полагается, с поиска данных, которые могут дать нам возможность сделать ценные выводы. В университете система электронного оценивания закрыта, и посмотреть оценки ни чьи, кроме своих нельзя. Устраивать опросы мне не хотелось, потому что это заняло бы много времени и сил, в общем не целесообразно. К счастью, многие преподаватели ведут открытый журнал в гугл доках. Они-то нам и помогут. Я нашёл журнал по интересующему нас предмету одного из прошлых курсов, распарсил его и получил небольшой датасет, в котором было порядка 100 оценок. На тот момент я готовился к сдаче 4-й лабораторной, которой предшествовали 3 первые лабы и одно ДЗ. Итого в датасете для каждого обьекта имелось 6 оценок:
- 1-4 лабораторные (5-бальная шкала)
- 1 ДЗ (5-бальная шкала)
- Итоговая семестровая оценка (100-бальная шкала)
Визуализация и анализ данных
Получив нужные данные, я сразу начал их визуализировать. Сначала давайте посмотрим на зависимости всех оценок друг от друга.
Из внедиагональных элементов выделить что-то особо полезное/интересное у меня не получилось. В то же время на диагонали, где отображены распределения соответствующих оценок, можно увидеть, как люди зачастую сдают эту работу. Сразу, например, видим, что 1-ю почему-то большинство людей сдают на 4. Возможно, преподаватели ещё не успели понять уровень большинства студентов, поэтому проявляют «осторожную» тактику. В последующих же лабораторных такое не проявляется.
К тому же тут мы можем судить о сложности работ. Например, мне сразу бросился в глаза факт, что 2-я лаба — единственная из всех, у которой мода оценки равна 5. Из этого можно судить, что эта лабораторная должна получиться наиболее лёгкой.
Также я отметил, что средняя итоговая оценка (нижняя строчка) явно гораздо левее оценки в 74 балла (у нас в университете <=74 это тройка). Но ведь по оценкам лабораторных большинство людей шло на 4, а значит что стоит бояться экзамена.
Таким образом по этому plot'у люди могут решить две интересные задачи:
- Проранжировать лабораторные по сложности
- Понять на какую оценку стоит ориентироваться
Идём дальше. Следующий график, как мне показалось, дал ещё более интересную информацию.
Это отображение матрицы корреляций между каждой парой оценок, а значит и между тематикой соответствующих работ.
Наибольший интерес для нас представляет последняя строка/столбец. Возьмём, например, строку. Она показывает насколько сильно коррелирует оценка за соответствующую лабораторную с итоговой семестровой оценкой. И тут можно видеть, что оценка за вторую лабораторную почти никак не влияет на итоговую. Значит ли это, что на экзамене/тестах эта тема попадается крайне редко? ДА!
В это же время 1 лаба и дз играют немного более важную роль, а значит с этой темой неплохо было бы разобраться. Ну а квадратики, отвечающие за 3-ю и 4-ю лабораторные и вовсе говорят, что в эту тему стоит вникнуть как можно лучше, чтобы получить достойную оценку.
То есть с помощью обычного heatmap'a мы, почти что смогли вскрыть экзаменационные билеты, ещё задолго до экзамена!
Таким образом с помощью этого графика мы можем решить одну из самых сложных задач студента: «какой билет перечитать 10 раз, а какой 100».
Более того, это не ограничивается лишь экзаменом. По этому графику видно, что при подготовке к сдаче домашнего задания, важнее разобраться с материалами 1-й и 2-й лабораторных, ну а 3-ей можно уделить чуть меньше внимания.
И самое интересное, что если начать вдумываться в тематику всех лабораторных, то все выводы становятся весьма объяснимыми и лишь отчасти неожиданными.
Построение предсказательной модели
Разумеется я не могу обойти стороной машинное обучение. Я пытался строить очень много моделей и в итоге наименьшую абсолютную погрешность дал sklearn'овский случайный лес +-0.2
Но мне хотелось расшарить эту модель среди заинтересованных ребят, поэтому я обучил обычную линейную регрессию, достал из неё веса и опубликовал их. Таким образом, чтобы любой человек, путём простых арифметических операций смог предсказать свою оценку за 4-ю лабораторную (MAE алгоритма составила 0.3).
Но на самом деле главную ценность этого мини-исследования несёт в себе предыдущий раздел и сделанные в нём выводы.
Выводы
Вот и всё исследование. Как видим, собрав даже не очень большую выборку, можно сделать реально полезные выводы, которые могут вам помочь. И, главная мысль, которую я хотел показать этим — это то, что анализ данных представляет из себя очень полезную штуку, даже на уровне «домохозяйских» вопросов.
Надеюсь статья была интересна, спасибо!
Автор: yurij_volkov