Сбер вакансии Backend
Сбер вакансии Backend
Сбер вакансии Backend
Написать пост

Определяем уровень интеллекта по страницам в VK с помощью ИИ

В статье рассказываем, как определить уровень интеллекта человека по его данным со страницы в VK с помощью ИИ.

2К открытий4К показов

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

  1. Проводят личные исследования и реализуют свои идеи;
  2. Выступают на разного веса конференциях со своими результатами (особенно секции workshops) по типу NeurIPS, WDS, WSAIA, MLP, CVPR и другие;
  3. Публикуются в материалах конференций и выкладывают свой код-решение, с инфографикой архитектуры в виде препринтов или статей на Arxiv;
  4. Другие ребята, кто не пишут статьи, занимаются реализацией этих самых архитектур и участвуют в соревнованиях по решению задач для ИИ, как например Kaggle, IASC, Zindi и другие;
  5. Затем студенты берут некоторые самые успешные методы и пишут на их основании свои дипломы, затем расширяют их в новое исследование и см. п. 1 настоящего списка.

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

Исследования Кембриджского Университета

В исследованиях «Personality and Patterns of Facebook Usage» Бачрача и Козинского рассматривается возможность определения типа личности по профилю социальной сети. Согласно опубликованным материалам, датасет составлял 180 000 пользователей, чьи данные удалось собрать посредством приложения «Мои черты характера» (опубликованного в 2007 году), в котором предлагалось пройти короткий опросник «Большая пятерка».

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

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

  • Friends: число друзей;
  • Groups: число вхождений в группы;
  • Likes: число «лайков»;
  • Photos: число фотографий, загруженных пользователем;
  • Statuses: количество созданных статусов;
  • Tags: число раз, когда пользователь был отмечен на фотографиях.

После изучения данных и применение статистических методов анализа. Исследовательская группа получила следующие данные:

Определяем уровень интеллекта по страницам в VK с помощью ИИ 1

В таблице указана статистическая важность корреляции между чертами личности и параметрами профиля социальной сети (уровень важности p<1%)

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

Определяем уровень интеллекта по страницам в VK с помощью ИИ 2

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

Изучение данных пользователей VK

Интересная проделана работа! Я решил провести свое исследование и проверить их подход. И, так как у меня не было под рукой данных из их исследования, то взял наш Российский вариант из социальной сети VK.

Кроме того, с помощью cvcode.ru мы накопили достаточно количество данных (около 9 тыс.) ответов на IQ тест. Это позволило сформировать следующую гипотезу: «Социальные данные влияют на уровень интеллекта» и проверить ее на реальных данных.

Первая группа данных представляет собой выгрузку с cvcode.ru.

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

Определяем уровень интеллекта по страницам в VK с помощью ИИ 3

Вторая группа данных представляет собой выгрузку данных из ВК на основании открытого api по id пользователей из первого набора данных.

Определяем уровень интеллекта по страницам в VK с помощью ИИ 4

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

  1. Опросник Большая пятерка (как у Майкла);
  2. Тест интеллекта Вандерлика.

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

Проведен разведочный анализ данных двух наборов. Один из наборов представляет собой выгрузку из ВКОНТАКТЕ по колонкам: ’birthday’, ’city’, ’first_name’, ’followers’, ’friends’, ’groups’, ’last_name’, ’posts’.

Второй датасет из СИВИКОДа содержит колонки: ’Номер’, ’Фамилия’, ’Имя’, ‘Вконтакте’, ’Тест Биг5’, ’Тест IQ’.

IQ распределение результатов по всей выборке.

Определяем уровень интеллекта по страницам в VK с помощью ИИ 5

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

Визуализация распределения данных по количеству друзей

Определяем уровень интеллекта по страницам в VK с помощью ИИ 6

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

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

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

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

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

Визуализация распределения данных по количеству подписчиков

Определяем уровень интеллекта по страницам в VK с помощью ИИ 7

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

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

Визуализация облака слов из постов

Определяем уровень интеллекта по страницам в VK с помощью ИИ 8

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

При разделении пользователей по медиане интеллекта на категории

  1. Dumb = 0,
  2. Smart = 1,

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

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

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

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

  • SGDClassifier;
  • SVC;
  • RandomForestClassifier;
  • LogisticRegression;
  • DecisionTreeClassifier.

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

  • Цифровые данные: «Друзья», «Подписчики»;
  • Категориальные данные: «Посты»;
  • Целевые данные: «Уровень интеллекта».

Для решения задачи классификации, целевые данные — Уровень интеллекта были преобразованы на основании данных о среднем значении (mean):

  • IQ = 1, при 0.01 < iq, и IQ = 0, при iq < 0.01;
  • Для цифровых данных применен MinMaxScaler;
  • Для категориальных данных CountVectorizer.

В ходе тестовых запусков всех 5 моделей использованы два подхода.

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

Использовались следующие метрики:

  • Balanced accuracy;
  • Confusion Matrix;
  • F1;
  • Recall;
  • Precision.

Тестовые запуски приведены в таблице

Определяем уровень интеллекта по страницам в VK с помощью ИИ 9

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

Также, стоит применить балансировку классов, так как в самом начале классы поделены не совсем равномерно при разбиении на два класса по границе mean.

Классификация на объединенных данных c подбором гиперпараметров

Проведенными исследованиями выбрана модель DecisionTreeClassifier. Подбор гиперпараметров осуществлялся GridSearchCV.

Использованные параметры:

  • ’classifier__max_depth’: range(2, 10),
  • ’classifier__min_samples_split’: range(2, 11),
  • ’classifier__max_features’: range(2, 10).

Полученные результаты:

  • Best CV score (mean) = 0.825;
  • {’classifier__max_depth’: 5, ’classifier__max_features’: 8, ’classifier__min_samples_split’: 5};
  • Train accuracy: 0.8269137006338372;
  • Balanced accuracy: 0.503399708596406.
Определяем уровень интеллекта по страницам в VK с помощью ИИ 10

Выводы:

  1. Стоит обратить внимание на структуру данных и разделение их на тестовую и тренировочную выборки. Провести исследования векторизации категориальных данных. Изменить подход к нормализации числовых данных.
  2. На последнем этапе исследованы модели бустинга на данных социальной сети Вконтакте и данных тестов cvcode.

В ходе работы исследованы стандартные модели библиотеки Sklearn:

  • AdaBoost;
  • GradientBoostingClassifier;
  • RandomForestClassifier;
  • CatBoostClassifier;
  • XGBClassifier.

На пробном запуске каждой из модели на данных собраны следующие результаты:

Оборудование:

  1. MacBook Air (Retina, 13-inch, 2020);
  2. Процессор: 1,1 GHz 2‑ядерный процессор Intel Core i3;
  3. Память: 8 ГБ 3733 MHz LPDDR4X;
  4. Видеокарта: Intel Iris Plus Graphics 1536 МБ.

Метрики:

  1. Balanced Accuracy;
  2. ROC-AUC;
  3. f1-score.

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

Определяем уровень интеллекта по страницам в VK с помощью ИИ 11

Как видно из представленной матрицы — корреляция в наборе данных слишком слабая. Можно сказать, ее вообще нет. Информация о данных в таблице ниже.

Определяем уровень интеллекта по страницам в VK с помощью ИИ 12

Параметры запусков:

  1. Random_state = 123;
  2. Learning_rate = 1;
  3. N_estimators = 1000.

AdaBoost

Определяем уровень интеллекта по страницам в VK с помощью ИИ 13

—————————————————————————

CPU times: user 2.4 s, sys: 73.6 ms, total: 2.47 s

Wall time: 2.81 s

GradientBoostingClassifier

Определяем уровень интеллекта по страницам в VK с помощью ИИ 14

—————————————————————————

CPU times: user 1.22 s, sys: 25 ms, total: 1.24 s

Wall time: 1.34 s

RandomForestClassifier

Определяем уровень интеллекта по страницам в VK с помощью ИИ 15

—————————————————————————

CPU times: user 3.04 s, sys: 57.1 ms, total: 3.1 s

Wall time: 3.26 s

CatBoostClassifier

Определяем уровень интеллекта по страницам в VK с помощью ИИ 16

—————————————————————————

CPU times: user 2.11 s, sys: 181 ms, total: 2.29 s

Wall time: 1.2 s

XGBClassifier

Определяем уровень интеллекта по страницам в VK с помощью ИИ 17

Balanced Accuracy: 0.5020164808899074

—————————————————————————

CPU times: user 336 ms, sys: 12.8 ms, total: 348 ms

Wall time: 144 ms

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

XGBoosting model подбор

Определяем уровень интеллекта по страницам в VK с помощью ИИ 18

Выводы

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

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

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

Заключение

Определяем уровень интеллекта по страницам в VK с помощью ИИ 19

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

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

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

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий4К показов