-
Notifications
You must be signed in to change notification settings - Fork 0
Home
По тренировочным данным студентов (факультет, имя, фамилия, дата рождения, основная рука (левша, правша), успеваемость по различным предметам) необходимо построить классификатор на основе стратегии «один-против-всех» с помощью модели логистической регрессии, определяющий по тестовым данным факультет, на котором учится студент.
При этом, необходимо:
-
Провести статистический анализ данных, содержащих числовые значения используя самостоятельно написанные функции (аналог desribe библиотеки Pandas)
-
Создать несколько скриптов, визуализирующих ответы на следующие вопросы:
- С помощью Гистограммы (histogram) определить, по какому учебному предмету оценки студентов имеют однородное распределение для всех четырех факультетов.
- С помощью поиска по матрице корреляции отобразить в виде Диаграммы Рассеяния (scatter plot) учебные предметы, имеющие наибольшее сходство по оценкам у студентов.
- С помощью визуализации Попарных Диаграмм Рассеяния (pair plot) для свойств в наборе данных, выбрать, какие из них будут использоваться при построении модели логистической регрессии.
- С помощью Гистограммы (histogram) определить, по какому учебному предмету оценки студентов имеют однородное распределение для всех четырех факультетов.
-
Построить, с помощью модели логистической регрессии, классификатор на основе стратегии «один-против-всех» (one-vs-all), определяющий по данным факультет на котором учится студент.
- С помощью данных из файла dataset_train.csv, используя технику градиентного спуска (gradient descent) написать программу, обучающую модель логистической регрессии. На выходе должен быть сгенерирован файл, содержащий веса, которые будут использоваться для прогнозирования.
- Написать программу, предсказывающую для тестовых данных на основе весов, полученных на предыдущем этапе, факультет, где обучается студент. Сохранить полученные данные в файл.
-
Bonus:
- Для статистического анализа (ч.1) использовать дополнительные статистические функции
- При построении модели реализовать стохастический градиентный спуск (stochastic gradient descent)
- При построении модели реализовать иные оптимизационные алгоритмы, например Batch GD/mini-batch GD
Замечание: Модель будет оцениваться с помощью accuracy из библиотеки Scikit-Learn. Результат работы должен иметь минимальную точность 98%.
Логистическая регрессия представляет собой одну из моделей, которые относятся к линейному классификатору. В методе логистической регрессии значением функции линейного классификатора является вероятность того, что данное исходное значение принадлежит к определенному классу, т.е. результат логистической регрессии всегда находится в интервале
Уравнение линейной регрессии задается формулой
где
Или, если считать регрессор
где
В двумерном случае уравнение линейной регрессии имеет вид:
Прямая, определяемая уравнением
Важно:
Уравнение прямой делит плоскость на три части:
- Если точка
$\Large{M(a,b)}$ находится под прямой, относим ее к классу$\Large{+}$ . Чем больше расстояние от функции$\Large{f(w, x)}$ до точки$\Large{M(a,b)}$ , тем выше вероятность$\Large{p_+}$ , что точка$\Large{M(a,b)}$ принадлежит классу$\Large{+}$ . Вероятность принадлежности точки$\Large{M(a,b)}$ классу$\Large{+}$ находится в диапазоне$\Large{(0.5,1]}$ .
- Если точка
$\Large{M(a,b)}$ находится над прямой, относим ее к классу$\Large{-}$ . Чем больше расстояние от функции$\Large{f(w, x)}$ до точки$\Large{M(a,b)}$ , тем выше вероятность, что точка$\Large{M(a,b)}$ принадлежит классу$\Large{-}$ . Вероятность$\Large{p_+}$ принадлежности точки$\Large{M(a,b)}$ классу$\Large{-}$ находится в диапазоне$\Large{[0, 0.5)}$ .
- Если точка
$\Large{M(a,b)}$ находится на прямой$\Large{f(w, x)}$ , относим ее к классу$\Large{0}$ . Вероятность$\Large{p_+}$ принадлежности точки$\Large{M(a,b)}$ классу$\Large{0}$ равно$\Large{0.5}$
На рисунке выше, нижняя зеленая точка имеет бОльшую вероятность принадлежности классу
От вероятности к бесконечности и обратно. Преобразования функции линейной регрессии в функцию логистического отклика
Преобразуем функцию линейной регрессии
Т.е. предстоит проделать путь Вероятность
Вероятность
Пусть
Шансы
Значения
Пример: Выражение ”Шансы 4 к 1”, эквивалентно отношению
Выведем Обратную функцию шансов:
Сначала представим Вероятность наступления события
Таким образом получили формулу представления вероятности из диапазона
Вероятность
Теперь представим Вероятности через компоненты с диапазоном
Прологарифмировав шансы
Значения
Таким образом, получен способ интерпретации результатов, подставленных в граничную функцию исходных значений. В используемой модели граничная функция определяет логарифм отношения шансов класса
Теперь в обратную сторону, от бесконечности к вероятности.
Т.е. зная значение функции
Подставляя в
Получили выражение вероятности наступления cобытия через функцию логистического отклика или сигмоид-функцию.
Для функции потерь использовать
Вместо
Наша модель
Таким образом, функцию потерь
Или, одной строкой:
Наша цель - подобрать коэффициенты (параметры)
Т.е. зафиксировав некоторые начальные коэффициенты (параметры)
Как было указано выше, ввиду выпуклости, мы гарантировали, что желанный минимум у функции потерь - единственный.
Вычислим градиент (частные производные) функции потерь, используя формулу нахождения производной сложной функции.
Запишем
Таким образом, мы ищем производную
- Считаем первый сомножитель
$\Large {\frac{\partial J}{\partial h}}$
Воспользуемся формулой
- Считаем второй сомножитель
$\Large \frac{\partial h}{\partial z}$
Вспоминаем, что
- Считаем третий сомножитель
$\Large \frac{\partial z}{\partial w}$
Поскольку
Перемножив найденные производные получим градиент по каждому из признаков
Для нахождения градиента (всех частных производных одновременно) перепишем формулу в векторной нотации:
Теперь можно переходить к Решению.
Набор статистических характеристик свойств объектов подробно описан в документации.
Ниже - статистическая информация по некоторым свойствам объектов из файла datasets/dataset-train.csv
Результат работы программы histogram.py - гистограмма распределений оценок по предметам на каждом факультете.
Анализ гистограмм позволяет сделать вывод о гомогенном распределении оценок по предметам Arithmancy и Care of Magical Creatures.
Таким образом, в дальнейшем использовать эти предметы для построения модели не имеет смысла - из-за плохой отличимости по факультетам, данные по предметам малоинформативны.
В программе scatter_plot.py подсчитывается корреляция по оценкам учебных предметов у студентов и выбирается пара с максимальной похожестью.
Наибольшее сходство отображено на представленной Диаграмме Рассеяния (scatter plot).
Т.е. отметки студентов по предметам Astronomy и Defence Against the Dark Arts оказались коллинеарны.
Для построения модели необходимы максимально независимые признаки (иначе значимость однородных признаков будет неоправданно завышаться), поэтому один из предметов в дальнейшем нужно исключить.
В программе pair_plot.py подсчитывается попарная корреляция по оценкам студентов между всеми учебными предметами и строятся графики.
Результат представлен на рисунке, где изображены все Попарные Диаграммы Рассеяния (pair plot).
По диаграммам видно, что предыдущие выводы подтверждаются - как по предметам Arithmancy и Care of Magical Creatures (диагональные рисунки), так и по предметам Astronomy и Defence Against the Dark Arts, диаграммы для которых явно выделяются среди остальных попарных диаграмм.
Для построения модели в столбце Best Hand значения меняются на числовые, исключаются столбцы, содержащие нечисловые данные (First Name, Last Name, Birthday). Также исключаются признанные неинформативными Arithmancy, Care of Magical Creatures и Astronomy (коллинеарный Defence Against the Dark Arts остается в качестве значимого признака).
В итоге, модель логистической регрессии будет строиться по оставшимся 12 признакам.
Далее, все неопределенные значения (Nan) в столбцах заменяются на медианные по имеющимся в том же столбце значениям.
И для значений каждого столбца с помощью функции minmax производится регуляризация:
Кроме того, добавляется bias - столбец
Затем, для предсказания принадлежности студентов по их данным по каждому из четырех факультету строится модель (вычисляются параметры (коэффициенты) регрессии
Перед тренировкой модели веса инициализируются небольшими случайными значениями из интервала
Данные из тренировочного набора для итеративного градиентного спуска функции логистической регрессии к минимуму могут подаваться одним из выбранных пользователей способов: с помощью batch, mini-batch, sgd.
При batch потери (loss) в зависимости от эпох уменьшаются равномерно, поскольку все градиенты обучающих данных усредняются за один шаг.
Потери (loss) при mini-batch градиентном спуске подвержены бОльшим колебаниям, поскольку одновременно усредняется небольшое количество данных.
При стохастическом градиентном спуске (SGD) рассматривается всего одно значение данных, выбранное случайно. График потерь (loss), как и в случае mini-batch гладкостью не отличаются.
Замечание: Для больших данных используются именно sgd и mini-batch, поскольку с количеством эпох сходимость функции потерь к минимуму для всех методов примерно схожа, но количество вычислений для последних двух существенно меньше.
На рисунке ниже приведен пример работы программы logreg_train.py с параметром -d отражения основных этапов работы.
Для градиентного спуска использовался batch , количество эпох epochs = 5000.
При тренировки модели использовалась стратегия «один-против-всех»: в цикле для каждого из факультетов присваиваивалась
Для каждой модели указаны промежутчные значения Loss и Accuracy, а также приведены значения получившихся весов (параметров (коэффициентов) регрессии).
По окончании работы программы, значения весов записываются в файл datasets/weights.csv. Они будут использоваться на этапе предсказания по тестовым данным факультета на котором учится студент.
Для получения предсказаний, запускается программа logreg_predict.py с параметрами файла данных и файла весов.
В переменную predictions для текущего студента записываются поочередно вычисленные с помощью различных наборов весов предсказания по каждому факультету.
Затем среди четырех получившихся значений выбирается максимальное. Название столбца, в котором это значение нашлось и есть предсказанный моделью факультет для студента.
Полученные результаты сохраняются в файл datasets/dataset_test.csv для дальнейшего анализа.
Результат оценки качества модели представлен ниже: