Книга: Выразительный JavaScript
Журнал оборотня
Итак, Жак запускает свой любимый интерпретатор JavaScript и создаёт окружение, необходимое для хранения журнала.
var journal = [];
function addEntry(events, didITurnIntoASquirrel) {
journal.push({
events: events,
squirrel: didITurnIntoASquirrel
});
}
Каждый вечер, часов в десять – а иногда и назавтра утром, спускаясь с верхней полки шкафа – он записывает свой день.
addEntry(["работа", "тронул дерево", "пицца", "пробежка", "телевизор"], false);
addEntry(["работа", "мороженое", "цветная капуста", "лазанья", "тронул дерево", "почистил зубы"], false);
addEntry(["выходной", "велик", "перерыв", "арахис", "пивасик"], true);
Как только у него будет достаточно данных, он собирается вычислить корреляцию между его оборачиваниями и событиями каждого из дней, и в идеале узнать из их корреляций что-то полезное.
Корреляция – это мера зависимости между переменными величинами (переменными в статистическом смысле, а не в смысле JavaScript). Она обычно выражается в виде коэффициента, принимающего значения от -1 до 1. Нулевая корреляция обозначает, что переменные вообще не связаны, а корреляция 1 означает, что они полностью связаны – если вы знаете одну, вы автоматически знаете другую. Минус один также означает прочную связь переменных, но и их противоположность – когда одна true, вторая всегда false.
Для измерения корреляции булевских переменных хорошо подходит коэффициент фи (?), к тому же, его сравнительно легко подсчитать. Для этого нам нужна таблица, содержащая количество раз, когда наблюдались различные комбинации двух переменных. К примеру, мы можем взять события «поел пиццы» и «обращение» и представить их в следующей таблице:
? можно вычислить по следующей формуле, где n относится к ячейкам таблицы:
n01 обозначает количество измерений, когда первое событие (пицца) – false (0), а второе событие (обращение) – true (1). В нашем примере n01 = 4.
Запись n1• обозначает сумму всех измерений, где первое событие было true, что для нашего примера равно 10. Соответственно, n•0 – сумма всех измерений, где событие «обращение» было false.
Значит, для таблицы с пиццей числитель формулы будет 1?76 - 9?4 = 40, а знаменатель – корень из 10?80?5?85, или ?340000. Получается, что ? ? 0,069, что довольно мало. Непохоже, чтобы пицца влияла на обращения в белку.
- 12.5. Журналирование
- Работа с журналом версий
- 9.3.4. Журналы
- 10.3.5. Журналирование
- 12.5.2. Системные текстовые журналы
- 12.5.3. Журнал FTP-сервера
- 12.5.4. Журнал прокси-сервера squid
- 12.5.5. Журнал Web-сервера
- 12.5.8. Пользовательские журналы
- 12.6. Работа с журналами
- 12.7. Безопасность журналов
- Просмотр ранее посещенных страниц с помощью Журнала