Главная » Заметки » День 28. Знакомлюсь с наукой о данных (data science)
День 28. Знакомлюсь с наукой о данных (data science)
Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!

Перехожу к изучению науки о данных – шестой шаг плана, составленного на 15 день. Этот вопрос тоже не планирую глубоко копать, пробегусь поверхностно и выпишу основные моменты.

По этой теме (надеюсь, но не точно) поможет книга Стивена С. Скиена «Наука о данных. Учебный курс». (Update: прочитав часть книги, могу сказать, что она очень доходчивая и понятная. Такого понятного объяснения математических основ я еще не встречал).

В книге приведет интересный ресурс: https://books.google.com/ngrams. Можно проследить как часто определенные слова, фразы или какие-то тенденции упоминались в книгах.

Упоминается про нью-йоркские такси, а именно, что все данные (места посадки, высадки, цена и так далее) общедоступны согласно закону о свободе информации. Я попробовал найти эту информацию на нью-йоркском сайте, но не нашел (сильно и не искал). А нет, нашел. Такое действительно есть: https://www1.nyc.gov/site/tlc/about/tlc-trip-record-data.page.

И к чему эти два примера. А к тому, что эти данные могут помочь ответить на различные вопросы. Этому, надеюсь, будет учить автор книги.

Теперь поговорим о свойствах данных. Данные могут быть:

  • Структурированные или неструктурированные данные;
  • Количественные и качественные данные;
  • Большие и небольшие данные;

Подводя итого (про большие данные), не всегда стоит на них полагаться. Иногда требуется задать себе вопрос: а отвечают ли эти данные на заданный вопрос или стоит обратиться к меньшему, но более точному набору данных?

Проблемы в науке о данных

В науке о данных довольно часто возникают два типа проблем: классификация и регрессия. Далее процитирую близко к тексту, чтобы более точно выразить слова автора книги: «Классификация. Мы ставим метку на элемент из дискретного набора. Например, предсказание победителя: команда А или Б. Это задачи классификации (classification problem), поскольку каждая подразумевает выбор метки из нескольких возможностей».

И что касается регрессии: «Регрессия. Предсказание некоего числового значения.» Прогноз стоимости акций, это как я понял задача регрессии. А, будут ли эти акции дороже или дешевле завтра, это задача классификации.

Полезные материалы по теме

Автор предлагает посмотреть сериал, снятый по теме книги: The Quant Shop (https://www3.cs.stonybrook.edu/~skiena/quant-shop/). Конечно же на английском. Так же автор приводит ресурс Kaggle. Это некая социальная сеть для аналитиков данных с практическими заданиями.

ВТОРАЯ ГЛАВА. МАТЕМАТИЧЕСКИЕ ОСНОВЫ

Во второй главе пойдет речь о математических основах. Про вероятность и статистику. Вероятность занимается предсказанием вероятности будущих событий, а статистика основывается на частоте прошлых событий. Вероятность – теоретическая часть математики, а статистика – практическая.

Разность, пересечение и объединение я еще, вроде, помню.

Если два события коррелируются, то они зависимы друг от друга. С этим связано понятие условной вероятности. Задачи классификации сводятся к решению условных вероятностей. Здесь же теорема Байеса.

Случайные переменные могут быть представлены их функцией плотности вероятностей (probability density function – pdf). Это график, где ось x – диапазон возможных значений, а ось y – вероятность данного значения.

Так же есть кумулятивная функция плотности (cumulative density function – cdf). Это текущая сумма (нарастающий итог) вероятностей в функции pdf. Крайнее правое значение всегда равно 1. Не совсем понятна (мне на данный момент) практическая применимость cdf.

Описательная статистика

Есть два типа описательной статистики: поиск центра тенденций (фиксируемый центр, вокруг которого распределяются данные) и вариация, она же поиск дисперсии (описание распределения данных, т.е. насколько далеко показатели располагаются от центра).

С поиском центра мы еще в школе знакомились. Это поиск среднего, медианы (серединного значения набора чисел) и моды (типичности, т.е. значение, которое встречается наибольшее количество раз).

Медиана довольно близко лежит к среднему арифметическому значению в симметричных распределениях. Очень хороший пример приводит автор, чтобы объяснить различия медианы и среднего: «Билл Гейтс добавляет 250 долл. к среднему уровню благосостояния, но не к медианному».

Мерой дисперсии является стандартное отклонение сигма, вычисляемое как сумма квадратов разниц между отдельными элементами и средним.

Корреляционный анализ

Две переменные x и y коррелируют, когда значения x имеют некую степень прогнозирования значения y. Коэффициент корреляции может быть от -1 до 1. Значение -1 означает антикорреляцию, что тоже хорошо. Например, риск безработицы тем меньше, чем выше ваша квалификация. Корреляции, близкие к 0, как правило бесполезны для прогнозирования.

Коэффициент корреляции Пирсона и Спирмена

Коэффициенты Пирсона и Спирмена – два основных статистических коэффициента, для измерения корреляции.

Еще про корреляцию

Корреляция не означает причину. Например, количество действующих полицейских в районе коррелирует с местным уровнем преступности, но полиция не является причиной это преступности.

Сравнение последовательности с самой собой называется автокорреляцией.

Логарифмы

Автор показывает наглядный пример, почему в графике соотношений лучше использовать логарифмы коэффициентов, а не сами коэффициенты. Во-первых, график коэффициентов сужает пространство и не выглядит наглядно. Во-вторых, некоторые выбросы, оказываются вовсе не выбросами (пример на стр. 79, в разделе 2.4.).

Для преобразования несимметричных распределений, требуется нормализация. Здесь помогает логарифм.

ТРЕТЬЯ ГЛАВА. МАНИПУЛИРОВАНИЕ ДАННЫМИ

Под манипулированием данными понимается, в контексте изучаемой темы, поиск и очистка данных.

Спайдеринг (spidering) – процесс загрузки подходящего набора страниц для анализа. А скрепинг (scraping) – извлечение содержимого из каждой страницы, для подготовки к анализу.

Для парсинга сайта автор предлагает использовать библиотеку BeautifulSoup (Python). Как-то я ей пользовался, очень удобная.

Ошибки и артефакты

Когда результат слишком хороший, значит где-то есть ошибка. Ошибка – это информация, которая в основном теряется при получении. Артефакты – наоборот, появившиеся данные, которых не было в исходных данных. Чтобы найти артефакты, необходимо обращать внимание на аномалии в данных или на результаты, которые вы не ожидали (но не всегда, конечно). Артефакты так же возникают из-за попыток округления или усечения с целью сэкономить место.

Совместимость данных

Автор рекомендует использовать идентификаторы (уникальные значения) в качестве ключей для однозначного определения записи. Так же необходимо приводить слова к единой форме (например, уменьшительные имена приводить к нормальным; весь текст приводить к нижнему регистру и т.д.).

Все даты и время необходимо привести к одному формату. Отличным вариантов является UNIX-формат времени.

Что если в наборе данных есть пустые поля?

Их можно заполнить приблизительным (эвристическим) способом, заменить средним значением, заменить случайным значением из столбца (только необходимо запустить модель пару раз и посмотреть насколько широко варьируются результаты. Если слишком большие изменения, то не стоит использовать этот метод), заменить ближайшим соседом (такой подход более точный, нежели подстановка среднего значения, но здесь необходимо уметь применять функцию расстояния, о которой речь пойдет в последующих главах) или заменить интерполяцией (некий прогноз значения на основе линейной регрессии, но такой способ хорошо работает, если в записи пропущено только одно поле).

Обнаружение выброса

Из-за ошибок в форматировании данных возникают выбросы, которые мешают правильному анализу данных. Так, например, сноска может быть принята за цифру, что приведет к неправильной интерпретации числа, стоящего перед ней.

Необходимо проверять наибольшие и наименьшие значения на их отдаленность от среднего.

Краудсорсинг

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

ЧЕТВЕРТАЯ ГЛАВА. ОЦЕНКИ И РАНГИ

Оценки сводят многомерные данные к одной метрике. Ранжирование – это перестановки, упорядочивающие объекты по достоинству (сортировка объектов по определенной оценке).

Основным методом нормализации являются Z-оценки. Преобразование значений в Z-оценки позволяет визуализировать закономерности и корреляции, а также упростить алгоритмы машинного обучения, делая различные функции сопоставимыми.

Рейтинг Эло

Рейтинг формируется зачастую на основании соревнований между двумя сущностями. Что если не все пары игроков соревнуются между собой? На основании этого нельзя предполагать победителя по наибольшему количеству очков, так как этот участник просто-напросто мог участвовать в большем количестве соревнований.

Система Эло (Elo system) начинает с оценки всех игроков в равной степени, а затем корректирует оценку каждого игрока в соответствии с результатом каждого матча согласно формуле:

новый_рейтинг = старый_рейтинг + коэфф. * (результат_игрока_в_матче – ожидаемый_результат)

Коэфф. – это фиксированный параметр для корректировки оценки по результатам матча (чем он больше, тем сильнее колебания ранга на основе последнего матча). Результат_игрока_в_матче – обычно, если победил, то 1, иначе -1. А ожидаемый_результат от 0 до 1. Если первый игрок наверняка победит, то ожидаемый_результат будет стремиться к 1.

Как оказалось, ничего сложного. Осталось разобраться как рассчитывать ожидаемый_результат.

ожид_результат = 1 * вероятность_победы_первого + (-1) * (2 - вероятность_победы_первого)

Осталось последнее, как рассчитывается вероятность_победы_первого. Эта проблема решается при помощи математического подхода – логит-функция (logit function).

Здесь расписал без математики. Хотя она очень простая и посмотреть ее можно в разделе «4.4.1. Рейтинг Эло» в ранее озвученной книге.

Логит-функция

Чтобы получить действительную переменную x и преобразовать ее в вероятность p, необходимо использовать следующую формулу:

Формула логит-функции f(x)

Чем больше параметр c, тем более резче переход. Как правило, для начала берут параметр c равный 1. Далее наблюдают как часто данная величина приводит к неожиданностям (победа слабейшего) и корректируют ее. Далее график, на котором наглядно видно влияния параметра c на крутизну:

Форма логит-функции

Слияние рейтингов

Было бы глупо использовать рейтинг Эло для выяснения кто выше ростом. В результате это будет очевидный отсортированный список. Намного интереснее создать рейтинг по нескольким признакам.

Для решения этой проблемы необходимо определить функцию расстояния (distance function).

Метод Борда создает согласованные ранги из множества других рангов с использованием простой системы начисления баллов.

Сейчас прочитал раздел и мало что понял. Проблема вот в чем: слишком глубоко ушел в теорию без практики, поэтому пора ставит библиотеки numpy и matplotlib в Python и найти какие-нибудь данные для практики.

Для примера возьмем посещаемость безымянного сайта за несколько лет. Так же я подготовил скрипт на Python:

import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
import csv

x = []

'''
Файл CSV в формате:
"интервал времени", "значение"
и.д.
'''
with open('3.csv', encoding="utf8") as f:
    reader = csv.reader(f)
    for row in reader:
        x.append(int(row[1]))

# преобразуем в NumPy массив
x = np.array(x)

# Функция
# def normal_dist(x , mean , sd):
#     prob_density = (np.pi*sd) * np.exp(-0.5*((x-mean)/sd)**2)
#     return prob_density

# Вычисляем среднее и стандартное отклонение.
mean = np.mean(x)
sd = np.std(x)

# Выполняем функцию.
# pdf = normal_dist(x, mean, sd)
pdf = norm.pdf(x, loc = mean , scale = sd)

# Рисуем
plt.plot(x, pdf, color = 'red')
plt.xlabel('Данные')
plt.ylabel('Плотность вероятности')

plt.show()

Получилось вот что:

Например, чтобы посчитать вероятность того, что будет от 2000 до 3000 посещений, необходимо:

cdf_upper_limit = norm(loc = mean, scale = sd).cdf(3000)
cdf_lower_limit = norm(loc = mean, scale = sd).cdf(2000)

prob = cdf_upper_limit - cdf_lower_limit
print(prob)

Не получилось у меня связать это с методом Борда. Пока что перехожу к следующему пункту.

Рейтинг на основе диграфа

Направленный граф без циклов называется ориентированным ациклическим графом (DAG). Что-то здесь много отсылок к математике.

Алгоритм PageRank

Алгоритм PageRank лежит в основе поисковой системы Google.

Переходим к пятой главе.

ПЯТАЯ ГЛАВА. СТАТИСТИЧЕСКИЙ АНАЛИЗ

Суть статистики: анализ небольшой случайной выборки позволяет сделать точные выводы о всей совокупности. Каждая переменная определяет конкретную плотность распределения, отражающую частоту возникновения каждого конкретного значения.

Биномиальное распределение

Биномиальное распределение демонстрирует вероятности получения именно x событий P1 в ходе n независимых испытаний в случайном порядке. В биномиальном распределении важна независимость событий.

Нормальное распределение

Основой всех колоколообразных кривых является гауссово, или нормальное распределение. Нормальное распределение является обобщением биномиального распределения, а степень концентрации вокруг среднего значения определяется сигмой.

Экспериментальные ошибки обычно распределяются как гауссовский шум (Gaussian noise).

Распределение Пуассона

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

Распределение по степенному закону

Степенным законом хорошо моделируется богатство. Этот же закон определяет правило «80/20»: большие города становятся больше, потому что они большие и поэтому привлекают людей. Как определить степенной закон? Данные выстраиваются в прямую линию на логарифмических графиках, а также среднее значение и стандартное отклонение не имеют смысла и масштаб распределения неизменен.

Статистическая значимость

Статистическая значимость – это подтверждение различия между двумя распределениями данных. Из всех способов оценки величины эффекта мне по душе «процент перекрытия» (так как он самый понятный). Можно сравнить два распределения и по площади пересечения определить их сходство.

Статистическая значимость зависит от количества выборок, а величина эффекта – нет.

Т-критерий оценивает, отличаются ли средние значения совокупности двух выборок. Такая проблема обычно возникает при A/B-тестировании.

Критерий Колмогорова-Смирнова, в отличие от Т-критерия, сравнивает функции кумулятивных распределений (cdf) и оценивает, насколько они похожи. На графике необходимо найти такое значение x, для которого значения y двух графиков максимально отличаются. Этот критерий удобнее и нагляднее предыдущего. Так же он показывает конкретное место, в котором происходит расхождение.

Поправка Бонферрони обеспечивает баланс при оценке нашего доверия к явно значимому статистическому результату. Ведь в науке принято использовать a = 0,05 в качестве границы между статистической значимостью и случайностью. То, как мы нашли корреляцию так же важно, как и сила самой корреляции. В поправке Бонферрони говорится, что при одновременной проверке n разных гипотез результирующее значение p должно возрасти до уровня a/n, чтобы считаться значимым на уровне a.

Поправка Бонферрони спасет нас от принятия значимости единственной успешной гипотезы во многих испытаниях, но есть и другая проблема. Метод Бендамини-Хохберга для уменьшения частоты ложных открытий показывает, как разграничить интересные и неинтересные переменные на основе значимости.

Критерии перестановки и p-значения

Критерии перестановок позволяют использовать более надежный способ определения значимости. Если гипотеза подтверждается данными, то набор данных ее подтверждающий должен быть менее вероятным.

ШЕСТАЯ ГЛАВА. ВИЗУАЛИЗАЦИЯ ДАННЫХ

Без визуализации, наука о данных не наука о данных. А неправильно визуализированные данные – еще хуже, чем без визуализации.

Традиционный научный метод основан на гипотезах. То есть сначала формируется теория о чем-то, а потом подтверждается или опровергается на основе данных. В науке о данных немного не так. На основе данных находятся шаблоны, которые становятся гипотезами.

Исследовательский анализ данных

Исследовательский анализ данных – поиск закономерностей и тенденций в определенном наборе данных. С новым набором данных необходимо сделать следующее:

  • Ответить себе на основные вопросы: «Кто создал этот набор данных, когда и зачем?», «Насколько он большой?», «Что означают поля?»;
  • Найти знакомые и понятные записи;
  • Сделать статистические сводки: минимальное и максимальное значения, медиана и квартильные элементы (25% и 75%);
  • Парные корреляции: матрица коэффициентов корреляции каждого с каждым;
  • Попробовать разделить на классы;
  • Построить графики распределений, чтобы оценить наличие выбросов и найти шаблоны.

Существуют пределы того, насколько хорошо мы можем понять данные без визуализации. Речь про квартет Энскомба. Он представляет из себя четыре двумерных набора данных, каждый из которых имеет одиннадцать точек. Все наборы имеют одинаковые средние значения, отклонения и корреляцию для значений x и y. Но если визуализировать эти данные, то сразу становится понятно – они совершено разные, несмотря на одинаковую сводную статистику.

Выработка эстетики визуализации

Чтобы отличать хорошие визуализации от плохих, следует выработать определенную эстетику и необходимый словарный запас.

Например, ширина графика должна быть в 1,6 раза больше высоты, согласно золотому сечению.

Так же необходимо минимизировать неинформативные элементы.

График должен быть отмасштабирован так, чтобы полностью заполнял выделенное для него пространство.

Типы диаграмм

На странице 225 (рис. 6.11) представлены типы графиков и их применение. Вот этот рисунок:

Рисунок. Визуальное представление данных (Абела)

Какие преимущества имеют табличные данные перед другими? Они предоставляют более точную информацию, помогают лучше понять многомерную визуализацию, лучше показывают сочетания числовых и категориальных атрибутов (например, текст и метки), удобны для представления небольшого количества данных и другие преимущества.

Про точечные и линейные графики. Это наиболее распространенные виды графиков. Такие графики помогают интерполировать и подгонять график.

Про диаграммы рассеяния. Иногда мы имеем большое число точек, визуализация которых крайне проблематична. Здесь нас спасут диаграммы рассеяния (при правильном применении, конечно же). При построении таких диаграмм, следует соблюдать правильный размер точек (меньше, чем стандартный для большей детализации). Так же стоит подкрашивать точки, в зависимости от частоты появления (например, менять оттенок).

СЕДЬМАЯ ГЛАВА. МАТЕМАТИЧЕСКИЕ МОДЕЛИ

До этого момента в книге рассматривалось множество решений для манипулирования данными и их интерпретации. Теперь переходим к моделированию – то, что превращает информацию в инструмент прогноза.

Бритва Оккама –  философский принцип, согласно которому самое простое объяснение является лучшим.

Дилемма смещения-дисперсии – противоречие, связанное со сложностью модели и производительностью.

Классификация моделей

Все разделы начинают подводить к машинному обучению. Далее в книге идет углубление в тему. Мне это пока не нужно, поэтому просто быстро просмотрю.

Пока с наукой о данных достаточно. Завтра перейду к сетям.

Просмотров: 12
09.09.2022
Автор