
- •Задание.
- •План работы.
- •О реализации.
- •Общие данные.
- •Анализ глубины просмотра по каждой категории и в целом.
- •Гипотеза нормальности. Модифицированный критерий χ2.
- •Гипотеза экспоненциальности. Критерий Колмогорова-Смирнова.
- •Гипотеза симметричности. Быстрый критерий Кенуя.
- •Результат выполнения программы на Python:
- •Результат анализа данных в пакете Statgraphics.
- •Сводная таблица по разделам:
- •Выводы:
- •Регрессионные модели.
- •Сводный результат выполнения программы на Python.
- •Категория 14.
- •Линейная модель.
- •Мультипликативная модель.
- •Обратная по X модель.
- •Выводы:
- •Анализ связи между категориями. Корреляционный анализ.
- •Пример.
- •Приложение. Исходный код.
Задание.
Источником данных является файл с анонимыми данными о посещениях сайта msnbc.com (американский кабельный телеканал) за один день 28.09.1999.
Данные представлены в виде текстового файла msnbc990928.seq.
Каждая строка (последовательность) в файле соответсвует отдельному пользователю и описывает разделы, посещённые этим пользователем.
Разделов 17:
frontpage,
news,
tech,
local,
opinion,
on-air,
misc,
weather,
health,
living,
business,
sports,
summary,
bulletin board service,
travel,
msn-news,
msn-sports
В качестве примера начало файла и комментарий к первым трём строкам:
1 1 – дважды посетил главную страницу
2 – посетил раздел «новости»
3 2 2 4 2 2 2 3 3 – трижды посетил «технологии», пять раз «новости» и один раз местный раздел.
5
1
6
1 1
6
6 7 7 7 6 6 8 8 8 8
6 9 4 4 4 10 3 10 5 10 4 4 4
1 1 1 11 1 1 1
12 12
1 1
8 8 8 8 8 8
6
2
9 12
3
9
3
12
5
13 13 13
6 9 9 9 9 9 9
План работы.
Разделим работу на три части:
Общие данные о файле.
Анализ глубины просмотра по всему сайту в целом и по каждому разделу в отдельности. Глубина просмотра – количество страниц, которые посетил пользователь, одна из ключевых характеристик для веб-данных.
Здесь же построим регрессионные модели для глубины просмотра.
Данные по сайту в целом можно представить в виде массива длины N (количество строк в исходном файле), заполненного длинами соответствующих строк. Для примера выше данные примут вид:
2,
1,
9.
Данные по каждому из разделов можно представить в виде массива длины N, состоящего из словарей, соответствующих каждой строке в файле. Словарь ставит в соответствие каждому ключу (номер раздела) количество страниц, посещённых в данном разделе.
Для примера выше данные примут вид:
{"1": 2},
{"2": 1},
{"2": 5, "3": 3, "4": 1}
Анализ корреляции в посещении разных разделов сайта.
Тут количество просмотров не играет роли, поэтому в массиве будем хранить список уникальных категорий, посещённых каждым пользователем.
Для примера выше данные примут вид:
[1]
[2]
[2, 3, 4]
На основе этого можно посчитать связь между посещением каждого из разделов.
О реализации.
Вычисления производятся с помощью программы на языке Python 3.4 с использованием библиотеки math.
Программа выгружает из файла msnbc990928.seq все строки и преобразует их к виду, указанному выше.
Итоги вычислений дублируются в стандартный консольный вывод и в файлы в папке results.
Исходный код программы и пример одного из таких файлов – в приложении.
Совокупное время вычисления всех заданий ниже:
93.426779985427856 seconds
Программу можно оптимизировать и сократить время выполнения минимум на 25%, но постарадает читаемость кода.
Общие данные.
Количество пользователей:
989 818
Количество просмотренных страниц:
4 698 794
Список всех категорий:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
Количество пользователей в каждой категории:
1: 313 181
2: 175 286
3: 121 948
4: 121 719
5: 24 987
6: 217 101
7: 80 514
8: 95 615
9: 90 192
10: 50 606
11: 57 597
12: 112 183
13: 76 948
14: 119 138
15: 29 200
16: 2 082
17: 11 006
Количество просмотренных страниц в каждой категории:
1: 940 469,
2: 452 387,
3: 207 479,
4: 386 217,
5: 151 409,
6: 414 928,
7: 305 615,
8: 439 398,
9: 196 614,
10: 131 760,
11: 96 817,
12: 264 899,
13: 216 125,
14: 395 880,
15: 56 576,
16: 25 249,
17: 16 972