228 lines
24 KiB
TeX
228 lines
24 KiB
TeX
\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} |