\documentclass{article}

\input{settings/common-preamble}
\input{settings/bmstu-preamble}
\input{settings/fancy-listings-preamble}
\author{Гребенюк Елена Алексеевна}
\title{Технологии разработки информационных систем для анализа больших объёмов информации}
\date{2023-02-08}

\begin{document}
\maketitle
\tableofcontents
\newpage
\section{Введение}
\subsection{Что нужно знать}
\begin{itemize}
\item \textbf{Основы теории вероятностей и математической статистики} (случайные величины, непрерывные и дискретные случайные величины, матожидание, дисперсия, ковариация, корреляция)
\item выборка, статистика, гистограмма, смещение
\item несмещённая оценка, асимптотически несмещённая оценка, состоятельная оценка, дисперсия оценки, коэффициент корреляции Пирсона, коэффициент корреляции Спирмена, нормальное (гауссовское) распределение (одномерное и многомерное), центральная предельная
\item \textbf{основы линейной алгебры}
  \begin{itemize}
  \item Вектор, операции над векторами и их свойства, векторное пространство, аксиомы векторного пространства, размерность векторного пространства.
  \item Линейная зависимость векторов, линейная независимость векторов, методы проверки линейной независимости векторов.
  \item Матрица, операции над матрицами, умножение матрицы на вектор, умножение матрицы на матрицу, ранг матрицы, транспонирование матриц, обратная матрица.
  \item Система линейных уравнений (СЛУ), число решений СЛУ, ранг матрицы СЛУ и число ее решений.
  \item Евклидово пространство, его свойства, норма вектора, ее свойства, метрика, евклидова метрика, скалярное произведение векторов, угол между векторами.
  \end{itemize}
\item \textbf{Теория информации} Информационная энтропия (Entropy) – мера неопределённости некоторой системы
\item \textbf{Python} Библиотеки: Scikit-Learn, Numpy, Scipy, Pandas, Matplotlib, ...
\end{itemize}

\subsection{Типы задач анализа данных}
\begin{itemize}
\item Визуализация - анализ ситуации, анализ исходной информации, анализ, интерпретация и представление результатов
\item Поиск шаблонов поиск частых наборов - метод ассоциативных правил - market basket analysis
\item прогнозирование - определение нового класса или объекта, которого не было в обучающей выборке
\item кластеризация или сегментация
\end{itemize}

\textbf{Этапы решения задачи алгоритмами машинного обучения}
\begin{itemize}
\item формальная постановка задачи (кампания по привлечению кредитов, найти модель)
\item данные (признаковое описание -- бинарные, числовые, категориальные, порядковые; матрица расстояний между объектами, временные ряды скалярных или векторных наблюдений, итого 16 прпизнаков)
\item определение ответа (да/нет), но чаще всего нужен не бинарный ответ, а определение степени доверия ответу. 
\item выбор критериев качества решения (метрики оценивания используемого метода решения должны иметь интерпретацию, значимую для решаемой бизнес-задачи)
\item выбор метода решения
\item предобработка данных (если клиентов приндалежащих какому-то классу меньше 5\% выборка не сбалансирована)
\item реализация, оценка качества
\end{itemize}
Пример -- Скоринг -- определение платёжеспособности.

\begin{enumerate}
\item \textbf{Постановка задачи}. Проводилась компания по привлечению клиентов для открытия депозита. Цель маркетинговой компании: привлечь клиентов на депозит, предлагая долгосрочные депозитные заявки с высокими процентными ставками, при сокращении затрат и времени на проведение компании: контактов должно быть меньше, но число клиентов, подписавшихся на депозит не должно уменьшаться. Цель исследования: найти модель, которая может объяснить успех компании т. е., если клиент подписывает депозит. Решается задача классификации: по имеющемуся признаковому описанию клиента определить подпишет ли он депозит (успех) и нет (неудача).
\item \textbf{Данные задачи}. \textbf{Типы входных данных}: признаковое описание, каждый объект описывается набором числовых или нечисловых признаков; матрица расстояний между объектами (метод ближайших соседей); временные ряды скалярных или векторных наблюдений (сигналы); изображение или видеоряд;

\textbf{Признаковое описание} Бинарные признаки – $(0, 1)$; Числовые признаки: $x_{ik} \in R$ -- с этими признаками удобно работать, практически любой метод применим к задаче с числовыми признаками; Категориальные признаки $x_{ik} \in \{\alpha_1, ..., \alpha_k\}$ нет метрики, нет упорядочения; Порядковые признаки $x_{ik} \in \{\alpha_1, ..., \alpha_k\}$ есть упорядочение.

\textbf{Входные данные 16 признаков}
\textbf{Общие данные о клиенте}
1 - age (numeric);
2 - job : (categorical: "admin.", "unknown", "unemployed", "management", "housemaid", "entrepreneur", "student", "blue-collar", "self-employed", "retired", "technician", "services")
3 - marital (categorical: "married", "divorced", "single")
4 - education (categorical: "unknown","secondary","primary","tertiary")
\textbf{Финансовое положение}
5 - default: has credit in default? (binary: "yes","no")
6 - balance:, in euros (numeric)
7 - housing: has housing loan? (binary: "yes","no")
8 - loan: has personal loan? (binary: "yes","no")
\textbf{Данные о рекламной компании}
9 - contact: contact communication type (categorical: "unknown","telephone","cellular")
10 - day: last contact day of the month (numeric)
11 - month: last contact month of year (categorical: "jan", "feb", "mar", ..., "nov", "dec")
12 - duration: last contact duration, in seconds (numeric)
13 - campaign: number of contacts performed during this campaign (numerict)
14 - pdays: number of days that passed by after the client was last contacted (numeric)
15 - previous: number of contacts performed before this campaign and for this client (numeric)
16 - poutcome: outcome of the c (categorical: "unknown","other","failure","success")
17 - y - has the client subscribed a term deposit? (binary: "yes","no")

\item \textbf{Предварительная обработка и проверка качества исходных данных}
1. Какова доля объектов первого класса в данных? Если эта доля менее 5\% - имеем несбалансированную выборку.
2.Какова доля выбросов, пропусков в данных? Выбросы могут быть результатом: событий, которые происходят с небольшой вероятностью и большим воздействием, системной ошибки.

\item \textbf{Определение ответа} Варианты ответов: клиент подписывает контракт -- класс 1, клиент не подписывает -- класс 0;

  вектор $\{p, 1-p\} = P, p$ --степень уверенности алгоритма (вероятность) в том, что объект принадлежит классу 1 .

\item Выбор критериев: метрики оценивания используемого метода решения должны иметь интерпретацию, значимую для решаемой бизнес-задачи.

\end{enumerate}

\subsection{Работа с несбалансированными выборками}
Метрики для несбалансированных наборов данных: AUC-ROC (площадь под ROC-кривой) , f1-score.

\begin{enumerate}
\item Удаление части элементов мажоритарного класса (недостаток: потеря данных).
\item Дополнение миноритарного класса повторяющимися данными (недостаток: переобучение на элементах миноритарного класса).
\item Создание дополнительных искусственных объектов.
\item Настройка классификатора с использованием весов. В контексте кредитования потеря денег из-за незаслуживающего доверия заемщика обходится существенно выше, чем отсутствие возможности кредитования надежного заемщика. Поэтому мы можем назначать этим классам различные веса и отсечки
\end{enumerate}

Метрики Качества. Пусть имеется два класса 1 -- положительный и 0 -- отрицательный
\begin{itemize}
\item True positive TP объекты, принадлежащие положительному классу $Y_1$, определены алгоритмом как положительные
  \[ TP = \{ X_t \in Y_1 | a(X_t, g) = 1 \} \]
\item False positive FP объекты, принадлежащие отрицательному классу $Y_0$ ,определены алгоритмом как положительные
  \[ FP = \{ X_t \in Y_0 | a(X_t, g) = 1 \} \]
\item False negative FN объекты, принадлежащие положительному классу $Y_1$ , определены алгоритмом как отрицательные
  \[ FN = \{ X_t \in Y_1 | a(X_t, g) = 0 \} \]
\item True negative TN объекты, принадлежащие отрицательному классу $Y_0$ , определены алгоритмом как отрицательные
  \[ TN = \{ X_t \in Y_0 | a(X_t, g) = 0 \} \]
\end{itemize}

\subsection{Метрики качества оценки алгоритмов машинного обучения}
\begin{itemize}
\item \textbf{Accuracy} $\frac{TN + TP}{n}$ -- метрика сама по себе неприменима.
\item \textbf{Precision} $\frac{TP}{TP+FP}$ -- уровень доверия к положительным ответам модели, доля истинных положительных объектов, выделенных классификатором как положительные.
\item \textbf{Recall} $\frac{TP}{TP+FN}$ -- какая часть положительных объектов правильно определена классификатором
\item \textbf{F-мера} (F-score) -- гармоническое среднее точности и полноты. F-мера обладает важным свойством -- она близка к нулю, если хотя бы один из  аргументов близок к нулю: $F = \frac{2*precision*recall}{precision+recall}, 0\leq F \leq 1$
\item Ошибка 1 рода (Туре I Error) случается, когда объект ошибочно относится к положительному классу
\item Ошибка 2 рода (Туре II Error) случается, когда объект ошибочно относится к отрицательному классу
\end{itemize}

\subsection{Confusion Matrix}
Хорошо подходит для многоклассовой классификации. Классификация в случае двух классов:
\begin{equation*}
\begin{pmatrix}
  TP & FP \\
  FN & TN \\
\end{pmatrix}
\end{equation*}
FP, FN -- число элементов, определённых ложно.

Многоклассовая классификация, $m$ классов.
\begin{itemize}
\item $C = (c_{ij} i = 1, ..., m, j = 1, ..., m)$
\item $c_{ij} = |X_t:X_t \in i|a(X_t, g)= j|$
\item число объектов, принадлежащих классу $i$, отнесённые алгоритмом к классу $j$.
\begin{equation*}
\begin{pmatrix}
  10 & 5 & 0 & 0 \\
  3 & 12 & 0 & 0 \\
  0 & 0 & 14 & 1 \\
  0 & 0 & 0 & 15 \\
\end{pmatrix}
\end{equation*}
\end{itemize}

\subsection{Отбор признаков}
Посчитаем число вариантов признаковых описаний одного клиента. Число значений категориальных и бинарных признаков каждого клиента, не считая возраста, равно
\[N = 12 * 3 * 4 * 8 * 3 * 12 * 4 = 144 * 24 * 48 = 165888.\]
С ростом размера признакового пространства увеличивается сложность задачи и снижается достоверность решения.

\textbf{Шумовые признаки} -- это признаки, которые никак не связаны с целевой переменной. Зашумленность данных означает, что отдельные значимые объясняющие переменные, возможно, не были зарегистрированы или что дефолт произошел случайно.

\textbf{Методы отбора признаков}
\begin{itemize}
\item Обертки -- использующие для отбора признаков конкретную модель. Модель обучается на подмножестве признаков, для нее строится матрица ошибок, затем на другом и т.д.
\item Фильтры -- удаляем коррелированные данные матрица рассеяния, F-тест -- оценивает степень линейной зависимости между признаками и целевой переменной, поэтому он лучше всего подойдёт для линейных моделей. Реализован как \code{f_classif} для классификации; хи-квадрат -- оценивает степень линейной зависимости между признаками и целевой переменной.
\item Встроенные методы -- задача отбора признаков -- побочная задача (случайный лес)
  \[ IG = H(S_i) - \frac{|S_{il}|}{|S_i|} H(S_{il}) - \frac{|S_{ir}|}{|S_i|} H(S_{ir}) \to \max \]
\end{itemize}

\textbf{Отбор категориальных признаков}
Значения категориальных признаков могут быть любыми объектами, на которых определена операция сравнения (равно и не равно).

\begin{itemize}
\item \textbf{Lable encoding} -- отображение каждого признака в число позволяет использовать его в модели обучения. Недостатки: неявно задает порядок категории, не может работать с неизвестными в процессе обучения значениями категориального признака
\item \textbf{Onehot coding} -- недостатки: увеличение количества признаков
\item \textbf{Target encoding} -- кодирование с учётом целевой переменной
  \[ p_j(x \in X) = \frac{\sum_{i=1}^N[f_j(x\in X) = f_j(x_i)][y_i = 1]}{\sum_{i=1}^N[f_j(x\in X) = f_j(x_i)]} \]
где $p_j(x \in X)$ -- числовое значение $j$-го категориального признака на объекте $x, f_j(x_i)$ -- исходное значение $j$-го категориального признака на объекте $x_i$. Использование счетчиков может привести к переобучению. Модель может опираться на счетчики, если есть уверенность в том, что модель обучена по большому числу объектов. Сглаживание

  \[ p_j(x \in X) = \frac{\sum_{i=1}^N[f_j(x\in X) = f_j(x_i)][y_i = 1] + C/N \sum_{i=1}^N[y_i = 1]}{\sum_{i=1}^N[f_j(x\in X) = f_j(x_i)] + C} \]
  
Если мало объектов этой категории, то числовое значение признака приближается близко к среднему по всей выборке, а для популярных к среднему значению по категории. $p_j(X) \to 1/N \sum_{i=1}^N[y_i = 1]$, если мало объектов в категории.
  
Значение категориального признака в задаче регрессии
  \[ p_j(x \in X) = \frac{\sum_{i=1}^N[f_j(x\in X) = f_j(x_i)]*\ddot{y_i}}{\sum_{i=1}^N[f_j(x\in X) = f_j(x_i)]} \]

$\ddot{y_j}$ -- среднее значение $y_t$ для объектов с категориальным признаком.
\end{itemize}

\subsection{Permutation Importance, Feature selection}
Важность перестановки
\begin{itemize}
\item Случайным образом тасуется один столбец в валидационной выборке. Признак считается значимым, если точность модели сильно падает и вызывает увеличение ошибки и «неважным», если перетасовка его значений не влияет на точность модели.
\item Permutation Importance рассчитывается после обучения модели с использованием библиотеки ELI5. ELI5 -- это библиотека Python, которая позволяет визуализировать и отлаживать различные модели машинного обучения с использованием унифицированного API.
\item Feature selection -- отбор самых важных признаков. Оценка информативности признаков: Вычисление дисперсии: чем больше дисперсия, тем информативнее признак
  \[ Var(x_j) = \frac{1}{N}\sum_{i=1}^N(x_{ij} - \overline{x_j})^2\]
Позволяет убирать малоинформативные признаки, недостатки: никак не учитываются значения целевой переменной.
\item Вычисление корреляции между значениями признака и целевой переменной (задача регрессии)
\item Задача классификации: Подсчет процента успешной классификации для каждого из значений признака $p$. По теореме Байеса считаем $P(X_j|Y)$ -- вероятность признака $X_j$, если объект принадлежит положительному классу. Если $P(X_j|Y = 1) > 0,7 \cup P(X_j|Y = 1) < 0,3$, то считаем $X_j$ информативным признаком.
\end{itemize}

\subsection{ROC-кривая}
Число строк в квадрате справа равно числу единиц, число столбцов -- числу нулей. Стартуем из точки (0, 0)(левый нижний угол. Если значение метки класса в просматриваемой строке 1, то делаем шаг вверх; если 0, то делаем шаг вправо, если у нескольких объектов значения оценок равны, то делаем шаг в точку \textbf{а} блоков выше и \textbf{b} блоков правее, где \textbf{а} -- число единиц, \textbf{b} -- число нулей в рассматриваемой группе объектов.

Считаем сколько \% покрыто.

\begin{figure}[H]
  \centering
  \fontsize{14}{1}\selectfont
  \includesvg[scale=1.01]{pics/04-bdisdt-00-roc.svg}
\end{figure}


\textbf{Принятие решений на основе кривой.} Для того, чтобы решить, какие объекты отнести к классу 1, а какие к классу 0, нужно будет выбрать некоторый порог (объекты с оценками выше порога относим к классу 1, остальные -- 0). Выбору порога соответствует выбор точки на ROC-кривой. Здесь для порога $0.25$ выбрана точка (1/4,2/3).

  \begin{tabular}{||r|c|c||} 
    \hline
    id & $>0.25$ & класс \\ [0.5ex] 
    \hline
    4 & 1 & 1 \\ 
    1 & 1 & 0 \\
    6 & 1 & 1 \\
    3 & 0 & 0 \\
    5 & 0 & 1 \\
    2 & 0 & 0 \\
    7 & 0 & 0 \\
    \hline
  \end{tabular}

 1/4 - это \% точек класса 0, которые неверно классифицированы алгоритмом (FPR = False Positive Rate),

 2/3 - \% точек класса 1, верно классифицированых алгоритмом (TPR = True Positive Rate).

\end{document}