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

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

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

Экстраполяция отдельных графиков времени

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

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

Самый простой метод - это линейная экстраполяция, которая заключается в вычислении среднего интервала между самыми последними событиями. (10 + 14 + 8) / 3 = 10,7 в этом случае. Но нет предела точности, сложности или размаху этой экстраполяции. Другие временные шкалы на графике, а также далекое прошлое той же временной шкалы могут даже внести свой вклад. Это похоже на упрощенную форму линейной регрессии, одной из основ машинного обучения.

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

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

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

Привлечение графа

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

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

Глобальный взгляд

Допустим, мы всегда движемся от корня графа, сосредоточивая внимание на узле «Жизнь». Это дает нам глобальный взгляд на предстоящие события. Оценка каждой временной шкалы, независимо от того, насколько далеко, подробно, близко или абстрактно, будет включена в список. Давайте работать с простым примером графа.

Глобальный список может выглядеть так:

Truck  -> Add Oil               0.80
Work   -> Email Status Update   0.65
Dinner -> Pasta                 0.60
Work   -> Server Maintenance    0.50
Fun    -> Volleyball            0.46
Truck  -> Check Tire Pressure   0.43
Work   -> Testing               0.25
Dinner -> Rice & Beans          0.20
Truck  -> Oil-change            0.15
Fun    -> Mountain Biking       0.05

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

Контекстный вид

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

Я был бы признателен за прогнозы , связанные с работой: скоро отправим обновление статуса, на сервере произойдет сбой, пора встать на перерыв и т. Д. И было бы замечательно, если бы прогнозы были адаптированы как к конкретной задаче, над которой я работаю, так и к глубине этого внимания.

Вместо того, чтобы начинать наш обход с корня, мы можем начать с узла «Работа» для этого примера, сделав его своим фокусом. Смещая фокус таким образом, имеет смысл записывать расстояние на графике между фокусом и каждым из других узлов. Расстояние графика не имеет смысла в глобальном представлении, так как все узлы всегда включены.

Смещение фокуса на узел «Работа» означает, что все расстояния графа изменяются, поскольку они относятся к текущему фокусу.

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

                                 Old  Divisor  New
Work   -> Email Status Update    0.65    1     0.65
Work   -> Server Maintenance     0.50    1     0.50
Truck  -> Add Oil                0.80    3     0.27
Work   -> Testing                0.25    1     0.25
Dinner -> Pasta                  0.60    3     0.20
Fun    -> Volleyball             0.46    3     0.15
Truck  -> Check Tire Pressure    0.43    3     0.14
Dinner -> Rice & Beans           0.20    3     0.07
Truck  -> Oil-change             0.15    3     0.05
Fun    -> Mountain Biking        0.05    3     0.02

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

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

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

Поскольку моя «открытость» к замене масла теперь количественно определена и оцифрована, я мог бы даже опубликовать ее вместе с набором критериев через API на местном рынке, и моя потребность будет удовлетворена автоматически. Очень похоже на ордер на акции на фондовом рынке. Но только на моих условиях; эта информация слишком ценна, чтобы публиковать ее.

Далее, дополнительный пользовательский интерфейс.

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

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

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

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

Ознакомьтесь с Частью 3 для получения подробной информации о пользовательском интерфейсе.