Как, используя возраста друзей, определить возраст пользователя?

Есть в формате csv база пользователей следующего вида:
возраст_человека;возраст_его_друга_n1;возраст_его_друга_n2;возраст_его_друга_n3;возраст_его_друга_n...
Проблема первая - преобразование данных к общему виду.
Друзей, как известно, всегда различное число. Можно строить гистограммы, но это тупиковый путь для малого числа друзей. Можно оперировать медианами, средними и т.д., но точность получается плохой.

Хочется иметь алгоритм, определяющий по возрастам друзей - возраст пользователя. Вопрос - как лучше подойти к построению алгоритма и извлечению правил из набора данных.
  • Вопрос задан
  • 1031 просмотр
Пригласить эксперта
Ответы на вопрос 6
myfirepukan
@myfirepukan
Жарим поиск
1. Определим величину отклонений.
Есть люди у которых куча друзей самых разных возрастов а есть те у кого приблизительно одного возраста.

2. Определим количество отклонений.
Пользователь, у него 100 друзей в возрасте 15-17 лет + ещё 10 в возрасте от 30. Прогноз: это школьник, а 10 сильно выбивающихся из средних это двое родителей + учителя допустим.

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

Ну а вообще, одного параметра (возраст друзей) маловато для определения, нужно что-то ещё.
Ответ написан
2ord
@2ord
Из статьи на Хабре "Анализ данных мира Facebook"
имеются такие данные:
98cddfb8d738c3217b78a5f43fff5f0f.png
То есть чем выше возраст, тем шире разброс возрастов друзей.

Дополнено

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

Другие входные данные для анализа
Помимо полученных гистограмм возрастов дополнительными параметрами могут служить:
  • облако категорий интересов пользователя: книги, фильмы, дискотека
  • облако категорий групп пользователя: общество панков, частный бизнес, служу отчизне и т.д.
  • облако категорий посещаемых мероприятий пользователя: музеи, стадионы, учебные заведения, развлекательные учреждения
Ответ написан
angrySCV
@angrySCV
machine learning, programming, startuping
как же всё запущенно.
никаких усреднений, у вас куча разных пользователей, с разными возрастами, поэтому усреднения приведут к каким-то странным результатам, ГАРАНТИРОВАННО не к тому возрасту который нужно предсказать.

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

Наиболее адекватным вариантом мне видится просто найти среднее число среди всех возрастов. Это максимальная возможная точность, ибо задачка выше немногим отличается от вашей)
Ответ написан
Комментировать
viktorvsk
@viktorvsk
При такой постановке задачи самым оптимальным вариантом действительно кажется просто брать среднее, т.к. точности особой не достигнешь формулой - слишком много факторов.

Если есть ресурсы, можно попробовать подойти со стороны машинного обучения: разметить какую-то выборку (или взять готовые данные из соцсетей), накинуть дополнительных параметров (пол, мин.\макс. возраст, диапазон возрастов, количество друзей и т.д., все что имеется в наличии) и попробовать обучить сеть. Хотя,конечно, и тут нет никаких гарантий т.к. задача, особенно с такими исходными данными - довольно нетривиальна.
Ответ написан
Комментировать
viktorvsk
@viktorvsk
При такой постановке задачи самым оптимальным вариантом действительно кажется просто брать среднее, т.к. точности особой не достигнешь формулой - слишком много факторов.

Если есть ресурсы, можно попробовать подойти со стороны машинного обучения: разметить какую-то выборку (или взять готовые данные из соцсетей), накинуть дополнительных параметров (пол, мин.\макс. возраст, диапазон возрастов, количество друзей и т.д., все что имеется в наличии) и попробовать обучить сеть. Хотя,конечно, и тут нет никаких гарантий т.к. задача, особенно с такими исходными данными - довольно нетривиальна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы