MIPT, Advanced ML, Spring 2018
HW #5: Linear Models
Alexey Romanenko , alexromsput@gmail.com
Оформление дз:
ml.course.mipt@gmail.com
ML2018_fall_<номер_группы>_<фамилия>
, к примеру -- ML2018_fall_495_ivanov
<фамилия>_<группа>_task<номер>.ipnb, к примеру
-- ivanov_401_task5.ipnb
Вопросы:
ml.course.mipt@gmail.com
ML2018_fall Question <Содержание вопроса>
Ниже приводится список вопросов, с ответами на которые может быть полезно разобраться для понимания темы.
1. Как выглядит решающее правило в линейной классификации? А зависимость, которой мы приближаем ответы в линейной регрессии?
2. Что такое функции потерь в задачах классификации и регрессии? Зачем они нужны?
3. Что такое регуляризаторы? Какими они бывают в задачах линейной классификации и регрессии? Зачем они нужны?
4. Как в общем виде выглядит оптимизационная задача в линейной классификации или линейной регрессии?
5. Как работает настройка весов в линейной модели с помощью SGD (Stochastic Gradient Decent)? Как выглядит правило обновления весов?
6. Учитывается ли коэффициент сдвига w0 в регуляризаторе? Почему?
7. Почему линейные модели рекомендуется применять к выборке с нормированными значениями признаков?
8. Как выглядит оптимизационная задача в логистической регрессии? А в SVM?
9. Выпишите и докажите формулу для весов в линейной регрессии (с квадратичной функцией потерь). То же самое для гребневой регрессии.
10. Выпишите SGD для логистической регрессии с $l2$-регуляризацией и для SVM с линейным ядром.
11. В чем заключается идея ядер в SVM?
12. Какие преимущества и недостатки есть у линейных моделей?
13. На какие 3 матрицы раскладывается произвольная матрица при SVD? Что такое сингулярные числа
Для того чтобы получить оценку нужно
In [87]:
# Загружаем трейновую выборку и ответы
import pandas as pd
raw_train_dataframe = pd.read_table('train.csv', sep=',')
train_dataframe = raw_train_dataframe.drop('id', axis=1)
import numpy as np
train_sample = train_dataframe.drop('label', axis=1).values
train_sample_answers = train_dataframe['label'].values
# Обучаемся
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state=42)
classifier.fit(train_sample, train_sample_answers)
# Загружаем тестовыую выборку
raw_test_dataframe = pd.read_table('test.csv', sep=',')
test_dataframe = raw_test_dataframe.drop('id', axis=1)
test_sample = test_dataframe.values
# Предсказываем
test_sample_answers = classifier.predict(test_sample).reshape(-1, 1)
# Пишем выходной файлик
submission = np.hstack([np.arange(1, len(test_sample_answers) + 1).reshape(-1, 1), test_sample_answers])
import csv
with open('submission.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile, delimiter=',')
writer.writerow(['id', 'label'])
writer.writerows(submission)
Получилось так: бенчмарк 2 на прайвате 0.88593, у меня вот так:
Для того чтобы получить оценку нужно
In [ ]:
# your code here
Задача 1 Покажите, что регуляризатор в задаче линейной классификации имеет вероятностный смысл априорного распределения параметров моделей. Какие распределения задают 𝑙1-регуляризатор и 𝑙2-регуляризатор?
Задача 2 Покажите, что в случае линейно разделимой выборки функционал, максимизируемый при обучении логистической регрессии, достигает своего максимума в бесконечности (при бесконечно больших значениях компонент вектора весов), а значит для процесса обучения необходимо добавить регуляризационный член.
Задача 3 Задана выборка объектов, каждый из которых принадлежит одному из двух классов $Y = \{1; -1\}$. В некотором спрямляющем пространстве, задаваемом ядром $K_1(x_1; x_2)$, эта выборка является линейно разделимой, а в некотором спрямляющем пространстве, задаваемом ядром $K_2(x_1; x_2)$, не является линейно разделимой. Существует ли спрямляемое пространство, задаваемое ядром $K(x_1; x_2) = K_1(x_1; x_2) + K_2(x_1; x_2)$, в котором эта выборка будет линейно разделимой?
Задача 4 Покажите, что если предварительно центрировать выборку в задаче линейной регрессии, то параметр сдвига $𝑤_0$ (коэффициент перед константой) получится равным нулю.
Решение первой задачи было в слайдах, вот оно. Не буду переписывать, а то будет у всех одинаковое, и скажете, что списал.
In [ ]: