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


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

    Предыстория


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

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

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


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

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

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


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



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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

    Выводы


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

    Надеюсь статья была интересна, спасибо!
    Поделиться публикацией
    Комментарии 17
      –6
      Я думал, вы расскажете, как правильно шпоры писать…
        0

        Шпоры нужно писать, чтобы было кратко и понятно, и можно было сформулировать ответ из выдержки. А пользоваться шпорами — плохо и недопустимо для человека, который не обмануть себя.

        0

        Seaborn+pandas?

          0
          Да, ещё numpy, sklearn и другие python пакеты
          +4
          Как-то слабо. Логика в поиске корреляций между оценками за разные работы — понятна. Однако, не изложен принцип оптимизации, которым нужно руководствоваться, чтобы получить хорошую итоговую оценку. Я, конечно, могу догадаться, но, мне кажется, это должно быть частью темы статьи.
            0
            Да, идеи оптимизации я старался выделить, но видимо сделал это не очень хорошо.
            Две основные идеи оптимизации:
            1. Проранжировав работы по степени сложности, мы можем верно расставить приоритеты
            2. Зная корреляции между работами, мы можем выделить наиболее сильно коррелирующие, и повторить материалы этих лаб при подготовке к исследуемой
              0
              Я правильно понял, что новая лаба даётся «врасплох» и заранее материалы по ней получить невозможно?
            +4
            В первый раз вижу студента, настолько серьезно подошедшего к разделу «цели и задачи курса». Респект.
              +3
              Я вот немного не понял, как прогнозирование среднестатистической оценки может помочь среднестатистическому студенту? Как был отделен субъективный подход преподавателя к постановке оценок?
                0
                Ответ на 1-й вопрос: тут я нашёл две причины:
                1. Человеку свойственно сравнивать себя с другими, а благодаря средней оценке, можно сравнить свои представления о собственном уровне с реальным положением дел.
                2. Это является способом оценить предмет на «сложность» относительно другого. Ведь если по одному предмету 80% народу получает 5, а по-другому эти же 80% получают 4, то резонно предположить, что второй предмет сложнее. А это даёт основания для расстановки приоритетов.

                2-й вопрос: Никак, это излишняя сложность и она не требовалась. К тому же «субъективные» — это трудно формализуемое понятие, возможно вы сможете конкретизировать?
                  +1
                  Ведь если по одному предмету 80% народу получает 5, а по-другому эти же 80% получают 4, то резонно предположить, что второй предмет сложнее.
                  Это, конечно, логично, но ведь для такого анализа компьютер даже включать не надо
                    –1
                    Получить распределение величины без компьютера? Да, можно это сделать на листике
                      +1
                      Да и листочка не надо. Все выводы из статьи обычно легко делаются с помощью пары вопросов старшему курсу
                      –1
                      Стоп, извиняюсь, я перечитал изначальный вопрос. «Прогнозирование среднестатистической величины». Разумеется в этом нет смысла, но я этого и не делаю. Я прогнозирую оценку конкретного студента, основываясь на его предыдущих оценках
                  +1
                  помогло мне сдать один из самых сложных предметов в семестре на пятёрку

                  О каком предмете идет речь? По моему опыту, самый сложный предмет там — это философия, и я не знаю, можно ли его сдать с помощью анализа данных...

                    0
                    А как вы получили абсолютную погрешность?
                    Делили студентов (aka объекты) на две выборки — тестовую и обучающую? использовали кросс-валидацию?

                    Пробовали ли вы строить решающее дерево? кажется, что для этой задачи оно будет очень показательным + его просто визуализировать)
                      0
                      Погрешность считал на кросс-валидации. При такой маленькой выборке, hold-out метод ненадёжен.
                      Дерево не визуализировал, хотя согласен, оно может оказаться весьма интересным, обязательно построю, спасибо.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое