Задание #1
В базе данных имеется три таблицы:
1. Таблица с данными о пользователях (user):
id - уникальный идентификатор пользователя (primary key)
gender - пол
age - возраст
country - страна
city - город
exp_group - экспериментальная группа
os - операционная система
source - источник трафика
2. Таблица с данными о постах (post):
id - уникальный идентификатор поста (primary key)
text - текст поста
topic - тема поста
3. Таблица с данными о действиях пользователей (feed_action):
user_id (——>) user (id) - идентификатор пользователя
post_id (——>) post (id) - идентификатор поста
action - совершенное в сети действие
time - время действия
Найдите город, пользователи которого в возрасте 36 лет 2021-12-01 числа просмотрели запись на тему `covid` меньше всего раз относительно других городов.
Задание #2
Воспользуемся доверительными интервалами, чтобы сделать более точные выводы о метриках модели.
Это задача предсказания средней цены в области на дом. Давайте оценим 95-процентный доверительный интервал на MSE Ridge-регрессии для этой выборки. Будем использовать бутстрэп для этого.
Для этого в цикле будем генерировать бутстрэп-выборки для обучения модели (то есть брать объекты из выборки с возвращением). В качестве тестовых объектов будем брать оставшиеся объекты. Каждый раз будем обучать модель и оценивать качество.
Реализуйте такой код для 95-процентного доверительного интервала на MSE.
Используйте 1000 итераций генераций выборки и обучения модели. Данные не обрабатывайте. Полезными методами будут np.random.choice для генерации индексов бутстрэп-выборок (не забудьте про «генерацию с возвращением»), np.setdiff1d для получения остатка выборки.
Задание #3
Чему равно значение метрики AUC ROC у классификатора, который для любого объекта возвращает значение 0.97, если доля положительного класса в выборке составляет 4%? Опишите свои рассуждения как можно точнее, с расчетами, если они потребуются.
Задание #4
Напишите функцию get_pretrained_model, которая принимает в качестве аргументов название архитектуры, количество классов для задачи классификации и стоит ли инициализировать модель с помощью полученных в ходе обучения на датасете ImageNet.
Она должна иметь следующую сигнатуру: def get_pretrained_model(model_name: str, num_classes: int, pretrained: bool=True):
Будем считать, что на вход могут прийти четыре различных model_name: alexnet, vgg11, googlenet и resnet18. Для каждого из них нужно вернуть соответствующую модель из зоопарка моделей torchvision.
Чтобы понять, как именно модифицировать созданные объекты, посмотрите на исходный код для моделей:
https://pytorch.org/hub/pytorch_vision_resnet/ https://pytorch.org/hub/pytorch_vision_alexnet/ https://pytorch.org/hub/pytorch_vision_vgg/ https://pytorch.org/hub/pytorch_vision_googlenet/