Уважаемые слушатели, добрый день. Сегодня мы переходим к новой теме наших занятий. Она посвящена подготовке данных. В прошлый раз мы с вами рассмотрели всевозможные стандарты, посвящённые анализу данных, такие как: CRISP, KDD, SEMMA. И сегодня в рамках наиболее популярного стандарта CRISP мы рассмотрим такой этап анализа, который называется именно подготовка данных. Сам по себе этот этап, напомню, связан с тем, что на предыдущих шагах мы выяснили потребности нашего бизнеса, мы уже поняли какие данные у нас имеются, выяснили, какие источники есть, какие форматы. Дальше эти данные мы каким-то образом извлекли из этих источников. И наша текущая задача эти данные попытаться как-то подготовить, очистить, преобразовать для того, чтобы можно было дальше заниматься моделированием. В принципе, сами по себе элементы, связанные с подготовкой и очисткой данных, связаны следующими вещами. Во-первых, все наши данные представлены, чаще всего, в виде многомерного куба или, в крайнем случае, в виде двухмерной таблицы. Строчка – это объект, переменная или столбик – это, соответственно, характеристика нашего объекта. Все эти переменные зачастую собирались или измерялись в совершенно разных шкалах. Шкалы – это то, что мы рассмотрим чуть дальше. Сами по себе объекты могут иметь разные характеристики, но при сборе этих данных какие-то из этих характеристик могли быть записаны неверно. Более того, при сборе этих данных, при извлечении этих данных, то что называется ETL процедуры, то есть extraction transformation and load, могли быть различные неприятности, которые ведут к тому, что часть данных может оказаться пропущенной и с этим тоже надо что-то сделать. Далее, отдельные наши переменные могут оказаться недостаточными для нашего анализа. Значит, с этими переменными тоже нужно что-то сделать, каким-то образом преобразовать. Это то, что называется в этапе машинного обучения fitch engineering, то есть преобразование исходных переменных. И далее, кроме преобразования, — попытка сделать из них какие-то новые переменные, которые помогут нам пролить свет на изучаемую проблему. Итак, кроме переменных нам требуется знать понятие гипотезы. Гипотеза, в данном случае, необязательно статистическая, гипотезой может быть всё, что угодно. В принципе, при любом анализе мы выдвигаем гипотезу, затем пытаемся её проверить. Либо, если мы занимаемся разведочным анализом, мы, собственно, эти гипотезы только и получаем на этом этапе. Дальше... Сами по себе наши переменные, сами наши данные описываются с помощью так называемых статистик. Это могут быть классические статистики – среднее, дисперсия, которые описывают все наши данные в среднем. Под статистикой также понимается статистика, связанная с проверкой уже статистических гипотез. То есть некая новая переменная, которая связана с конкретным видом того, что мы хотим проверить, распределение, например, вероятностное нашей переменной или что-то ещё. Итак, возвращаемся к нашим переменным. Все наши переменные измеряются в разных шкалах. Шкалы определяют способность наших элементов взаимодействовать друг с другом совершенно различными способами. В нашем случае это, по сути, всевозможные операции. Какие операции вообще возможны? Сравнение: равенство, неравенство. Сортировка: больше, меньше. И плюс, минус, умножить, поделить. В зависимости от того, какие именно операции нам доступны с нашими шкалами, эти шкалы можно разделить на следующие элементы. Дихотомическую шкалу, когда у нас всего есть равно, не равно между этими элементами и самих элементов два. Например, переменная типа пол: мужчины, женщины. Дальше идут номинальные шкалы, в которых нам доступны тоже только равно, не равно, однако самих значений может быть больше. Скажем, список городов, которые у нас определяют место проживания респондентов. Далее... Порядковая шкала. Это вариант номинальной шкалы. В чём её суть? В том, что между элементами этой шкалы можно сопоставить некий порядок, то есть сортировать по возрастанию или по убыванию. Например, вопрос — Какой у вас доход? — может быть представлен в виде количественном — непосредственно суммы, а может представлен быть в виде отдельных диапазонов: до 15-ти тысяч рублей, от 15-ти до 35-ти и так далее. Каждый из этих диапазонов можно закодировать какой-то цифрой: 1,2,3. И вот уже порядок этих цифр определят, что, какой доход больше, чем другой. Дальше, так называемая интервальная шкала содержит только плюс, минус, ну также сортировку и равно, не равно. Классический пример — это всевозможные бальные шкалы. Оценки в школе, оценки в институте, любые другие оценки, скажем, по шкале Лайкерта. Между этими баллами пространство не определено, нет понятия среднего балла, на самом деле, это просто несколько дискретных значений, скажем, 1,2,3,4,5. Нельзя сказать, что пять в два с половиной раза больше, чем два балла, но можно сказать, что пять больше, чем два на три балла. Соответственно, операции сложения, вычитания здесь возможны. Если же у нас есть сложение, вычитание, деление, умножение, плюс есть, естественно, и ноль, то такая шкала называется относительной. Относительная шкала — это шкала, в которой доступны все операции. Примером здесь может являться переменная возраст респондента. Возраст, который определяется числом лет, с этим числом лет можно делать всё, что угодно. В зависимости от этих операций нам доступны, вообще говоря, разные дальнейшие виды анализа с каждой из этих переменных, и это надо учитывать тоже. Итак, когда мы разобрались со шкалами дальше мы посмотрим следующий момент. Сами по себе наши данные могут содержать шумы, могут содержать пропущенные данные. Сами по себе эти пропуски с данных могут быть основаны на том, что данные собирались некорректно или данные собирались корректно, но некорректно записывались, либо они корректно собирались и записывались, но некорректно извлекались. На разном этапе может возникать всё, что угодно. Может быть даже на этапе хранения в базе данных какая-то ошибка возникает. Так или иначе, чем больше ошибок, тем более данные являются менее качественными. Скажем так, чем больше пропусков, тем менее некачественно и наоборот. Возникает вопрос, что с этим делать? Вот давайте это рассмотрим. Во-первых, рассмотрим сначала такую вещь, как восстановление пропущенных значений. Итак, у нас есть переменная в которой есть множество пропусков, что с ними делать? Первый вариант. Можно просто исключить все объекты, в которых был пропуск, хотя бы по одной переменной. То есть всю строчку из нашей таблицы, например. Это, разумеется, крайняя мера, потому что мы можем потерять из-за только одного пропуска все остальные значения, которые нам могут понадобиться. Поэтому, эту проблему пытаются решать, в основном, другими способами. Ну, например, можно заменить просто каким-то нулём, то есть некой константой это пропущенное значение. С одной стороны, мы это значение берём, в общем то, из головы, может быть, оно не на чём не основано. Константы можно назначать, конечно, из более осмысленных соображений, чаще всего они связаны с какой-то нашей предварительной или априорной информацией. Дальше... Мы можем что сделать? Мы можем попытаться предсказать это значение, пропущенное на основании других переменных. Берём какую-нибудь регрессию, по остальным переменным, которые нам доступны, делаем модель, и эта регрессия предсказывает значение данной переменной по остальным значениям, которые есть в этой строчке. Это так называемый регрессионный подход, и в принципе, его используют достаточно часто. Также есть более простые подходы, например, можно заменить наше значение пропущенное каким-нибудь средним по всему столбику, по всей переменной или, что более правильно, медианнымзначением. Дальше, мы можем пытаться наши объекты, наши пропущенные значения каким-то образом моделировать не только с помощью регрессии, но с помощью вероятностных всевозможных функций. Например, мы можем по нашему столбику построить функцию распределения, и она предсказывает, какое значение является более вероятным, какое является менее вероятным. И на основании этой вероятности с помощью функции максимального правдоподобия мы можем получить оценку этого значения. Также можно использовать методы взвешивания. Взвешивание – это подход, который позволяет исказить исходные данные так, чтобы получить некое распределение, которое мы заранее считаем правильным или которое нам нужно для целей какого-то анализа. Например, у нас было исходное распределение нашей выборки пятьдесят процентов мужчин, пятьдесят процентов женщин. Мы проводим так называемый анализ What-if, анализ «что, если», и хотим посмотреть, что будет с остальной выборкой, если мужчин было бы шестьдесят процентов, а женщин — сорок процентов. Что для этого нужно сделать? Нужно присвоить нашей каждой переменной специальный вес. Он вытекает из того, что мужчин мы должны сделать бо́льшим числом, женщин ме́ньшим. Значит каждый отдельный объект, каждый человек в данном случае, если рассматриваем такой подход, он приобретает некий вес – коэффициент, который связан с тем, что мы хотим получить цифру 60, а исходная цифра 50, 60 делим на 50. Получаем вот этот вот коэффициент взвешивания. Значит, если эти коэффициенты рассчитать, то можно отталкиваясь от них, попытаться спрогнозировать точно также значение пропущенное. В принципе, само взвешивание используется и не только для этого, оно часто используется именно для преобразования данных, что мы дальше также рассмотрим. Вот как раз об этом тоже пару слов. Когда мы занимаемся восстановлением пропущенных значений или какой-то заменой, в принципе, мы занимаемся так называемым обогащением данных. Обогащение данных – это процесс насыщения данных новой информацией. В нашем случае новая информация — это информация о пропущенных значениях, может быть, но может быть и что-то принципиально новое. Допустим, мы сделали новую переменную, которая считает по какой-нибудь площади и высоте объём. Значит это тоже обогащение данных внутреннее. То есть мы из исходных данных получили новую переменную. Зачем нам это было нужно? Ну, скажем, объём нам нужен для целей какого-то дополнительного анализа. Данные можно обогатить внешним способом. Допустим, мы взяли открытые датасеты (Data set), скачали их из каких-то источников, ну таких, как скажем, Мировой банк или другие архивы, или открытые данные правительственные, типа data.gov.ru. И дальше эти данные использовать, для того чтобы дополнить наши данные о конкретном регионе, о конкретной стране, о конкретном человеке, допустим, средним значением зарплат по этому региону, которое берётся именно из открытых источников. В исходном нашем внутреннем датасете этих данных не было, мы взяли их снаружи, таким образом данные обогатили. Значит, само по себе обогащение это процесс, в общем-то, необходимый, потому что очень часто исходные данные только позволяют начать какую-то информацию анализировать, но не позволяют ответить нам на вопрос: Почему наша гипотеза верна, как её использовать дольше, с какими гипотезами новыми она может быть связана? То есть, в принципе, этот процесс, так или иначе, всегда наступает.