MIPT, Advanced ML, Spring 2018

HW #5: Linear Models

Alexey Romanenko , alexromsput@gmail.com

Organization Info

  • Дедлайн 11 апреля 2018 02:59 для всех групп.
  • В качестве решения задания нужно прислать ноутбук с подробными комментариями ( без присланного решения результат контеста не будет засчитан ).
  • Название команды в контесте должно соответствовать шаблону: НомерГруппы_Имя_Фамилия, например, 594_Ivan_Ivanov.

Оформление дз:

  • Присылайте выполненное задание на почту 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 <Содержание вопроса>

  • PS1: Используются автоматические фильтры, и просто не найдем ваше дз, если вы неаккуратно его подпишите.
  • PS2: Просроченный дедлайн снижает максимальный вес задания по формуле, указнной на первом семинаре
  • PS3: Допустимы исправление кода предложенного кода ниже, если вы считаете

Check Questions

Ниже приводится список вопросов, с ответами на которые может быть полезно разобраться для понимания темы.

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? Что такое сингулярные числа

Contest 1 (40%)

Ссылка на контест: https://www.kaggle.com/t/68e2660e41d94d64a3c2251a1df16ab3

Критерии оценивания

Для того чтобы получить оценку нужно

  • 1) прислать код вашей модели (можно использовать только линейные модели), которая выдает один из финальных сабмиттов.
  • 2) чтобы получить
    • хор (5) и выше нужно превзойти результат benchmark_1;
    • отл (8) и выше нужно превзойти результат benchmark_2;
  • 3) Ваше имя в лидерборде должно иметь вид <НомерГруппы>_Имя_Фамилия, например: 594_Иван_Иванов. Если имя не будет соответствовать формату организаторы вправе снизить оценку.

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, у меня вот так:

Contest 2 (40%)

Критерии оценивания

Для того чтобы получить оценку нужно

  • 1) Прислать код вашей модели, которая выдает один из финальных сабмиттов.
  • 2) чтобы получить
    • хор (5) и выше нужно превзойти результат benchmark_1;
    • отл (8) и выше нужно превзойти результат benchmark_2;
  • 3) Ваше имя в лидерборде должно иметь вид <НомерГруппы>_Имя_Фамилия, например: 594_Иван_Иванов. Если имя не будет соответствовать формату организаторы вправе снизить оценку.

In [ ]:
# your code here

Теоретические задачи (20%)

Задача 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 [ ]: