Структурированные данные Google. Структурированные данные. Добавление тегов для фрагментов дат

Тема 4.7

Программирование алгоритмов
формирования и обработки
одномерных массивов

Структурированные данные

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

Обращение к каждой переменной последовательности по имени превращается в длинную вереницу однотипных операций с каждой переменной. Программный код становится плохо обозримым. Для размещения такой программе требуется много памяти.

Для устранения указанных проблем в алгоритмических языках используются структурированные данные. Самыми простыми структурированными данными являются массивы данных .

Массив – это совокупность однотипных переменных (элементов массива ). Имя у всех переменных одно и то же, а для доступа к конкретному элементу массива используется дополнительный идентификатор – его порядковый номер (индекс), который начинается с 0.

Кроме массивов в программировании для построения эффективных алгоритмов могут использоваться и другие стандартные структуры данных, такие структуры данных, как стеки, очереди, связанные списки и другие.

Наряду со стандартными структурами данных, могут использоваться структуры данных, определяемые пользователем. Эти структуры данных определяются средствами объектно-ориентированного программирования с помощью классов .

4.7.2. Средства описания и работы с одномерными
массивами данных

Массив – последовательность переменных одинакового типа, объединенных общим именем . Например: одномерный массив а(9) состоит из 10 элементов с общим именем а: a(0), a(1), a(2), a(3),..., a(9), упорядоченных по индексу i, который принимает значения от 0 до 9:

a(i)
i

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

При объявлении массива оператор объявления должен включать следующую информацию:

· имя массива – имя (идентификатор), которое используется для представления массива в программе;

· тип данных – тип данных, который имеют элементы массива;


· размерность (ранг) – количество измерений объявляемого массива (т.е. количество индексов при объявлении; одномерные массивы имеют одно измерение);

· количество элементов – количество элементов, которые будут содержаться в массиве.

Рассмотрим примеры некоторых описаний массивов:

В этих примерах объявлены следующие массивы:

· одномерный массив d , состоящий из 31 элемента типа Integer с индексами от 0 до 30;

· одномерный массив a, состоящий из 11 элементов типа Double с индексами от 0 до 10;

· двумерный массив b , состоящий из 14х11=151 элемента типа Single с индексами по строкам от 0 до 13 и по столбцам от 0 до 10.

Обратите внимание, что значением нижней границы массива в VB может быть только 0 .

Таким образом, массив состоит из элементов, которые могут быть доступны при помощи индексов . При обращении к элементам массива индексы записываются вслед за именем в круглых скобках и могут представлять собой любое допустимое целочислен­ное выражение. Например, d(24), a(2*i+1).

Обратите внимание, что количество индексов указывает на размерность массива. Так, в приведенном выше примере размерность массива a(10) равна единице. Массив b(2,3) имеет размерность 2.

В отличие от размерности , размер массива – это количество элементов в массиве. В нашем примере размер массива, а(10) равен 11.

Перед использованием массива в программе его необходимо объявить с помощью оператора Dim , а элементам массива присвоить конкретные значения. Оператор Dim выделяет место в памяти компьютера для размещения элементов массива, обнуляет элементы числовых массивов или заполняет элементы строковых массивов пустыми строками ("""").

Как и для простых типов, данных, при объявлении массивов, которые являются структурированными типами данных, различают два способа распределения памяти: статическое – на этапе компиляции до выполнения программы, и динамическое – в ходе выполнения программы. По умолчанию массив, границы которого заданы константными выражениями, считается статическим. Память для размещения такого массива выделяется на этапе компиляции и сохраняется за ним на весь период выполнения.

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

Инициализация элементов массива – это поэлементное присваивание значения в операторе объявления массива. В этом случае размер массива не указывается в круглых скобках после имени массива, а определяется неявно размером списка значений. Список значений начинается с элемента с индексом 0 и заключается в фигурные скобки , например:

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

Чтобы облегчить работу с массивами в процедурах, для определения верхней границы массива используется встроенная функция
Bound (ИмяМассива ).

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

Кроме того, для определения верхней границы одномерного массива можно использовать методGetUpperBound(). Поскольку массив одномерный, то в скобках следует указывать значение 0. Например:

Кроме того, известно, что ключевое слово ByVal указывает передачу аргумента-массива по значению, а ключевое слово ByRef указывает, что аргумент-массив передается по ссылке. Заметим, что если ключевые слова ByVal или ByRef опущены, то аргумент-массив переда­ется по ссылке.

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

Обратите внимание на то, что после имени массива, который является фактическим параметром, скобки отсутствуют .

Как известно, передача аргументов по значению (с помощью ключевого слова ByVal) приводит к тому, что VB передает копию данных процедуре. Поэтому не следует передавать массивы по значению, если в этом нет особой необходимости.

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

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

Принцип работы структурированных данных

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

Представьте, что прохожий по имени Пользователь – это человек, который ищет шоколадные вафли. В примере существует ещё прохожий-иностранец по имени Google и кондитерские магазины под названием Сайт и Сайт2.

Прохожий спрашивает у Googlе – где я могу купить шоколадные вафли. И тот ему указывает дорогу в магазин Сайт1. Но в магазине Сайт1 есть только вафли ванильные, а шоколадные продаются в Сайт2. Google, заведомо узнал об ассортименте магазинов, но в виду того, что он иностранец, не всё правильно понял.

Прохожий может, конечно, купить ванильные вафли, ведь это тоже вафли. Но он не останется таким же довольным, как был бы, если бы купил шоколадные. Поэтому он оставит плохой отзыв о магазине Сайт1, и вряд ли придёт сюда ещё, а о Сайт2 вообще, наверное, никогда не узнает.

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

Структурированные данные являются разметкой на страницах сайта, которые становятся более понятными для Google, и поисковик будет выдавать ваш сайт более правильно. Этот инструмент бесплатен. Разве можно упустить возможность воспользоваться им?

Как начать работать с структурированными данными Google

Что-бы начать работу со структурированными данными следует отправиться в соответствующий сервис Google, и там загрузить страницу сайта в мастер. В данном мастере можно назначить пояснительные метки, которые будут понятны Google.
Это всё равно, что сделать вывеску на магазине Сайт2 на родном языке иностранца Google, о том, что там продаются шоколадные вафли. Тогда он точно не ошибётся.

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

Простые типы данных: переменные и константы.

Языки программирования.

Лекция 4.

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

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

Тип переменной задает:

Используемый способ записи информации в ячейки памяти;

Необходимый объем памяти для ее хранения.

Если переменные присутствуют в программе, на протяжении всего времени ее работы – их называют статическими . Переменные, создающиеся и уничтожающиеся на разных этапах выполнения программы, называют динамическими .

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

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

Массивом называется упорядоченная совокупность однотипных величин, имеющих общее имя, элементы которых адресуются (различаются) порядковыми номерами (индексами).

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

Одномерный массив предполагает наличие у каждого элемента только одного индекса. Примерами одномерных массивов являются арифметическая и геометрическая последовательности, определяющие конечные ряды чисел. Количество элементов массива называется размерностью . При определении одномерного массива его размерность записывается в круглых скобках, рядом с его именем. Например, массив, состоящий из элементов а1, а2… а10 записывается в виде А(10). Ввод элементов одномерного массива осуществляется поэлементно, в порядке, необходимом для решения конкретной задачи. Процесс ввода элементов массива можно изобразить в виде блок-схемы следующим образом:



Для примера рассмотрим алгоритм вычисления среднего арифметического положительных элементов числового массива А(10). Алгоритм решения задачи будет содержать подсчет суммы (обозначим S), включающей положительные элементы массива (ai>0), и количества (обозначим N) ее слагаемых.

Запись алгоритма в виде псевдокода :

1.Повторить 10 раз (для i=1,10,1)

1.1.Ввод ai.

2.Начальное значение суммы: S=0.

3.Начальное значение счетчика: N=0.

4.Повторить 10 раз (для i=1,10,1):

4.1.Если ai>0, то S=S+ai и N=N+1.

5.Если N>0, то вычисление среднего арифметического SA=S/N; вывод SA. Иначе: вывод «Положительных элементов в массиве нет».

Запись алгоритма в виде блок-схемы:

Двумерный массив предполагает наличие у каждого элемента двух индексов. В математике двумерный массив (или таблица чисел) называется матрицей. Каждый элемент имеет два индекса aij, первый индекс i определяет номер строки, в которой находится элемент (координата по горизонтали), а второй j – номер столбца (координата по вертикали). Двумерный массив характеризуется двумя размерностями N и М, определяющими число строк и столбцов соответственно.

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

Внешний цикл определяет номер вводимой строки (i), внутренний – номер элемента по столбцу (j).

Информатика 2017

Учитель: Махно К.В.

Тема урока: «Файлы и их обработка. Структурированные данные»

Цель: познакомить учащихся с понятием массива, рассмотреть приемы работы с данными типами массивов.

Задачи урока:

    Воспитательная – развитие познавательного интереса, логического мышления.

    Учебная – познакомить с понятием массива, изучить и закрепить основные навыки работы с массивами.

    Развивающая – развитие логического мышления, памяти, внимательности, расширение кругозора.

Тип урока : урок – изучение нового материала.

Вид : урок – лекция.

Технология : проблемно – исследовательская.

Оборудование : плакаты с изображением синтаксиса массивов на всех трех используемых языках программирования, интерактивная доска, проектор.

План урока

    Организационный момент.

    Изучение новой темы.

    Этап обобщения, систематизация знаний и закрепление изученного.

    Подведение итогов, домашнее задание.

Ход урока

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

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

В процессе выполнения программы исходные данные преобразуются в результаты.

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

Структурированные типы данных определяют упорядоченную совокупность скалярных переменных и характеризуются типом своих компонентов.

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

Существует несколько методов структурирования. По способу организации и типу компонентов в сложных типах данных выделяют следующие разновидности: регулярный тип (массивы); комбинированный тип (записи); файловый тип (файлы); множественный тип (множества); строковый тип (строки); в языке Турбо Паскаль версии 6.0 и старше введен объектный тип (объекты).

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

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

Строки. Строка (string) – это последовательность символов кодовой таблицы персонального компьютера. Количество символов в строке может изменяться от 0 до 255.

Массивы. Простые типы определяют различные множества неразделимых значений. В отличие от них структурированные типы задают множества сложных значений, каждое из которых образует совокупность нескольких значений другого типа. В структурных типах выделяют регулярный тип (массивы - array). Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.

Множества. Множество (set) – это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в множестве называется элементом множества . Все элементы множества должны принадлежать одному из скалярных типов, кроме вещественного.

Записи. Для записи комбинации объектов разных типов в Паскале применяется комбинированный тип данных – запись (record). Например, товар на складе описывается следующими величинами: наименование, количество, цена, наличие сертификата качества и т.д. В этом примере наименование – величина типа string, количество – integer, цена – real, наличие сертификата – boolean.

Запись представляет собой наиболее общий и гибкий структурированный тип данных, так как она может быть образована из неоднотипных компонентов и в ней явным образом выражена связь между элементами данных, характеризующими реальный объект.

Файлы. Большие совокупности данных удобно иметь записанными во внешней памяти в виде последовательности сигналов. В Паскале для этих целей предусмотрены специальные объекты – файлы (file). Файлом называется совокупность данных, записанная во внешней памяти под определенным именем.

Рассмотри задачи на объявление переменных и констант скалярного типа.

Приступая к решению задач на объявление данных скалярного типа, следует помнить, что:

·каждая переменная программы должна быть объявлена;

·объявление переменных помещают в раздел, который начинается словом var; константы помещают в раздел, который начинается словом const; переменные пользовательских типов (перечисляемые и интервальные) объявляют по особой схеме;

В имени переменной можно использовать буквы латинского алфавита и цифры (первым символом должна быть буква);

·инструкция объявления констант выглядит так: ИмяКонстанты = значение константы;

Пример :

min=1; {минимальное значение}

max=54; {максимальное значение}

//инструкция объявления переменных выглядит так: имя ИмяПеременной: тип;

k1: integer; {количество тетрадей}

k2: byte; {количество карандашей}

c1: real; {цена одной тетради}

//инструкция объявления переменных интервального типа помещается в двух разделах type, var и выглядит так:

days=1..31 ; {дни месяца}

rabotday: days; {рабочие дни}

vihodday: days; {выходные дни}

//инструкция объявления переменных перечисляемого типа помещается в двух разделах type, var и выглядит так:

days=(monday, muesday, wednesday, thursday, friday, saturday, sunday) ; {дни }

day: days; {днинедели}

season: (may, april, juin); {дниотпуска}

Домашнее задание:

Подготовить сообщение о любой прикладной программе.

На каждом предприятии существует множество различных баз данных, которые пополняются от источников структурированных данных. Структурированные данные – данные, которые вводятся в базы данных в определенной форме, например, таблиц Excel, со строго определенными полями. Совокупность баз данных предприятия называется в англоязычной литературе Enterprise Data Warehouse (EDW) – буквально «склад данных». В русскоязычной литературе мне пока не встречалось аналога этого термина, поэтому назовем это «склад данных предприятия». Для красоты будем использовать английскую аббревиатуру EDW.

Источники структурированных данных – это приложения, которые снимают данные различных транзакций. Например, это могут быть CDR в сети оператора, извещения об авариях на сети (trouble tickets), финансовые транзакции по банковским счетам, данные системы ER (Enterprise Resource Planning), данные прикладных программ, и др.

Бизнес-аналитика BI (Business Intelligence) – компонент обработки данных. Это различные приложения, инструменты и утилиты, которые позволяют анализировать собранные в EDW данные и принимать решения на их основе. Это системы генерации операционных отчет, выборочные запросы, приложения OLAP (On-Line Analytical Processing), т.н. «дисруптивная аналитика», системы предиктивного анализа и визуализации данных. Попросту говоря, менеджер должен видеть бизнес-процесс в удобной для восприятия форме, лучше всего графической и анимационной, чтобы быстро принимать оптимальные решения. Первый закон бизнеса: правильное решение – это решение принятое вовремя. Если правильное решение для вчерашнего дня принято сегодня, не факт, что оно еще остается правильным.

А что делать, если источники данных – неструктурированные, разнородные, полученные из разных источников? Как будут работать с ними аналитические системы? Попробуйте выделить мышкой несколько ячеек с данными в таблице Excel и вставить в простой текстовый редактор (например, Notepad) и вы увидите, что такое «неструктурированные данные» (Unstructured Data). Примеры неструктурированных данных: электронная почта, информация из соцсетей, данные XML, файлы видео-, аудио- и изображений, данные GPS, спутниковые изображения, данные с сенсоров, веб-логи, данные о перемещении мобильного абонента в хендовере, тэги RFID, документы PDF…

Для хранения подобной информации в центрах обработки данных (ЦОД) используется распределенная файловая система Hadoop, HDFS (Hadoop Distributed File System). HDFS может хранить все типы данных: структурированные, неструктурированные и полу-структрированные.

Приложения Big Data для бизнес-аналитики – компонент не только обработки, но и с данными, как структурированными, так и нет. Они включают приложения, инструменты и утилиты, помогают анализировать большие объемы данных и принимать решения, на основе данных Hadoop и других нереляционных систем хранения. Он не включают традиционные приложения BI-аналитики, а также инструменты расширения самого Hadoop.

Кроме того, важным компонентом Hadoop является система MapReduce. Она предназначена для управления ресурсами и обработкой данных в Hadoop, чтобы обеспечить надежность хранения и оптимизированное размещение данных в географически распределенных ЦОД. Система MapReduce состоит из двух основных компонетов – Мар, которая распределяет дубликаты блоков неструктурированных данных по различным узлам системы хранения (с целью надежности сохранения информации), и Reduce – компонента удаления идентичных данных, как с целью уменьшения требуемого общего объема хранения, так и повышения корректности последующих действий над данными. MapReduce примечательна тем, что обрабатывает данные там, где они и хранятся (т.е. в HDFS), вместо того, чтобы их куда-то перемещать для обработки, а потом ещё куда-то записывать результаты, что обычно и делается в обычных EDW. MapReduce также имеет встроенную систему восстановления данных, т.е. если один узел хранения отказывает, MapReduce всегда знает, куда надо лезть за копией потерянных данных.

Хотя скорость обработки данных MapReduce на порядок превосходит традиционные методы обработки с «выемкой» данных, все же, вследствие несравнимо больших объемов данных (на то они и Big Data), в MapReduce обычно используют параллельную обработку потоков данных (batch mode). В версии Hadoop 2.0 функция управления ресурсами выделена в отдельную функциональность (называется YARN), поэтому MapReduce более не является «бутылочным горлышком» в Big Data.

Переход на системы Big Data вовсе не означает, что традиционные EDW надо отправить в утиль. Напротив, их можно использовать совместно, чтобы использовать преимущество тех и других, а также извлекать новые ценности бизнеса за счет их синергии.

Для чего это все нужно.

Среди потребителей ИТ- и телеком-оборудования широко бытует мнение, что все эти эффектные иностранные слово- и буквосочетания – Cloud Computing, Big Data и разные прочие IMS с софтсвитчами придумываются хитрыми поставщиками оборудования, чтобы поддерживать свою маржинальность. То есть, чтобы впаривать, впаривать и впаривать новые разработки. А иначе не будет выполнен план по продажам и Билл Джобс Чемберс скажет «ай-яй-яй». И «накрылась премия в квартал».

Поэтому поговорим о нужности этого всего и тенденциях.

Наверное, многие еще не забыли страшный вирус гриппа H1N1. Были опасения, что он может оказаться даже сильнее испанки 1918 года, когда счет жертв шел на десятки миллионов. Хотя врачи должны были регулярно сообщать об участившихся случаях заболеваний (и они таки сообщали), однако анализ этой информации запаздывал на 1-2 недели. И сами люди обращались, как правило, через 3-5 дней после начала болезни. Т.е., меры принимались, по большому счету, задним числом.

Зависимость ценности информации в от времени обычно имеет вид U-образной кривой.

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

Компания Google, хранящая многолетнюю историю запросов, решила проанализировать 50 миллионов наиболее популярных запросов из мест очага предыдущих эпидемий гриппа, и сравнить их с данными медицинской статистики во время этих эпидемий. Была разработана система установления корреляции между частотой определенных запросов и найдено 40-50 типичных запросов. Коэффициент корреляции достигал 97%.

В 2009 году и удалось избежать серьезных последствий эпидемии H1N1, именно потому, что данные были получены сразу, а не спустя 1-2 недели, когда в поликлиниках в местах эпидемии уже было бы не протолкнуться. Это было, пожалуй, самое первое использование технологии «больших данных», хотя в то время они еще так не назывались.

Хорошо известно, что цена авиабилета – вещь очень непредсказуемая, и зависящая от многих факторов. Недавно я оказался в ситуации, когда можно было купить один и тот же билет экономкласса, одной и той же авиакомпании в один и тот же город в двух возможных вариантах. На рейс, улетающий вечером через три часа, билет стоил 12 тыс. рублей, а на раннее утро завтрашнего дня – 1500 рублей. Повторю, авиакомпания – одна и даже самолет на обоих рейсах одного типа. Обычно цена на билет тем дороже, чем ближе время вылета. На цену билета влияют еще много разных факторов – как-то раз агент по бронированию объяснял мне суть этого сонма тарифов, но я так ничего и не понял. Возможны случаи, когда цена на билет, наоборот, падает, если при приближении даты вылета остается много непроданных мест, в случае проведения каких либо акций и пр.

Однажды, Орен Энциони, директор программы искусственного интеллекта в Университете штата Вашингтон, собрался лететь на свадьбу брата. Поскольку свадьбы обычно планируются заранее, то и билет он купил сразу же, задолго до вылета. Билет действительно был недорогой, гораздо дешевле, чем обычно, когда он покупал билет для срочной командировки. В полете он похвастался соседу, как дешево ему удалось купить билет. Оказалось, что у соседа билет ещё дешевле, а покупал он его позже. Мистер Энциони с досады устроил импровизированный социологический опрос прямо в салоне самолета о ценах на билеты и датах их покупки. Большинство пассажиров заплатило меньше, чем Энциони, и почти все купили билет позже него. Это было очень странно. И Энциони, как профессионал, решил заняться этой проблемой.

Приобретя выборку из 12 тысяч транзакций на сайте одного из туристических агентств, он создал модель прогнозирования цен на авиабилеты. Система анализировала только цены и даты, не учитывая никаких факторов. Только «что» и «сколько», без анализа «почему». На выходе получалась прогностическая вероятность снижения или повышения цены на рейс, на основе истории изменений цен на другие рейсы. В результате ученый основал небольшую консультационную фирму Farecast (игра слов: Fare — тариф, цена; Forecast — прогноз) по прогнозированию цен на авиабилеты, на основе большой базы данных по бронированию рейсов, которая, конечно, не давала 100%-ную точность (что указывалось в пользовательском соглашении), но с достаточной степенью вероятности могла ответить на вопрос, покупать билет прямо сейчас, или подождать. Чтобы еще больше обезопаситься от судебных исков, система также выдавала «оценку доверия самой себе» примерно в таком виде: «С вероятностью 83,65% цена на билет будет ниже через три дня».

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

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

Что же это все-таки такое — Big Data?

Для «больших данных» нет строгого определения. По мере появления технологий для работы с большими объемами данных, для которых уже не хватало памяти одного компьютера и их приходилось где-то хранить, (MapReduce, Apache Hadoop), появилась возможность оперировать намного бóльшими объемами данных, чем прежде. При этом данные могли быть неструктурированными.

Это дает возможность отказаться от ограничений т.н. «репрезентативных выборок», на основе которых делаются более масштабные заключения. Анализ причинности заменяется при этом анализом простых корреляций: анализируется не «почему», а «что» и «сколько». Это в корне меняет устоявшиеся подходы о том, как принимать решения и анализировать ситуацию.

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

Еще в 2000 году количество оцифрованной информации, составляло лишь 25% общего количества информации в мире. К настоящему времени количество хранимой информации в мире составляет величину порядка зетабайт, из которых на нецифровую информацию приходится менее 2%.

По данным историков, с 1453 по 1503 год (за 50 лет) напечатано около 8 миллионов книг. Это больше всех рукописных книг, написанных писцами с Рождества Христова. Другими словами, потребовалось 50 лет, чтобы приблизительно вдвое увеличить информационный фонд. Сегодня это происходит каждые три дня.

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

Однако результат по большому счету один – изображение человека. Но есть и различия. В рукописном портрете точность сходства весьма относительна и зависит от «видения» художника, неизбежны искажения пропорций, добавление оттенков и деталей, которых в «оригинале», т.е. в человеческом лице, не было. Фотография точно и скрупулезно передает «ЧТО», оставляя «КАК» на заднем плане.

С некоторой аллегорией можно сказать, что фотография – это Big Data для рукописного портрета.

А теперь будем фиксировать каждое движение человека через строго определенные и достаточно малые интервалы времени. Получится кинофильм. Кинофильм – это «большие данные» по отношению к фотографии. Увеличили количество данных, соответствующим образом их обработали – получили новое качество – движущееся изображение. Изменяя количество, добавляя алгоритм обработки, мы получаем новое качество.

Теперь уже и сами видео-изображения служат пищей для компьютерных систем Big Data.

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

Ну, и кратко о еще двух аспектах больших данных.

Точность .

Системы Big Data могут анализировать огромное массивы данных, а в некоторых случаях - все данные, а НЕ их выборки. Используя все данные, мы получаем более точный результат и можем увидеть нюансы, недоступные при ограничении выборочного анализа. Однако, при этом приходится довольствоваться общим представлением, а не пониманием явления вплоть до мельчайших деталей. Однако, неточности на микро-уровне позволяют при большом количестве данных позволяют делать открытия на макро-уровне.

Причинность .

Мы привыкли во всем искать причины. На этом, собственно, и основан научный анализ. В мире больших данных причинность не так важна. Важнее – корреляции между данными, которые могут дать необходимые знания. Корреляции не могут дать ответ на вопрос «почему», но хорошо прогнозирует «что» произойдет, в случае обнаружения тех или иных корреляций. И чаще всего именно это и требуется.

***

Понравилась статья? Поделиться с друзьями: