Это технический пост. Сравнение алгоритмов xgboost и нейронных сетей на данных нашего исследования. И это моя первая нейронная сеть, которую я настроил не на учебных данных, а на реальных данных исследования:)
Задача взята из данного поста - Прогноз психологической совместимости руководителя и подчиненного.
В нашем исследовании есть вопрос Благодарил ли Вас Ваш руководитель за достижения? с вариантами ответа:
Напротив каждого варианта ответа указано количество респондентов, которые дали тот или иной ответ и по которым у нас есть полный набор данных.
Для создания модели я выбрал следующие факторы:
И результаты тестов респондента (КТО и Большая пятерка - спасибо Лаборатории Гуманитарные Технологии за предоставленную возможность):
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9aEwgsGwdLZZqFyL9csQq9Ax_gcZYT4sYDU2WhpNAGClHNzTMoQvxvT2HXg_q6p_Oy5B6y3Hh9UfgslhaOgBHStMvSuCET4ofnrxCwN9QBLN04fDLqvnhMozX-Ckct8cCJxhD-zvBlVXw/s400/nejronnye-seti-v-chelovecheskih-otnosheniyah.png)
Если Вы спец, подскажите, что можно улучшить в модели.
Задача взята из данного поста - Прогноз психологической совместимости руководителя и подчиненного.
В нашем исследовании есть вопрос Благодарил ли Вас Ваш руководитель за достижения? с вариантами ответа:
- Нет - 307;
- Получал лишь изредка- 418;
- Если не все, то многие - 310;
- Да, практически все достижения были отмечены моим руководителем - 300.
Напротив каждого варианта ответа указано количество респондентов, которые дали тот или иной ответ и по которым у нас есть полный набор данных.
Методология
Я решил, а можем ли мы спрогнозировать ответ респондента? Можем ли мы спрогнозировать, ответит ли респондент, что руководитель все его достижения отмечает или не все, или вообще не хвалит его. Эта аналитика могла бы быть очень интересной для прогноза психологической совместимости подчиненный - руководитель, в принципе интересная аналитика для человеческих отношений.Для создания модели я выбрал следующие факторы:
- Пол респондента,
- Возраст респондента;
- Пол руководителя;
- возраст руководителя.
И результаты тестов респондента (КТО и Большая пятерка - спасибо Лаборатории Гуманитарные Технологии за предоставленную возможность):
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9aEwgsGwdLZZqFyL9csQq9Ax_gcZYT4sYDU2WhpNAGClHNzTMoQvxvT2HXg_q6p_Oy5B6y3Hh9UfgslhaOgBHStMvSuCET4ofnrxCwN9QBLN04fDLqvnhMozX-Ckct8cCJxhD-zvBlVXw/s400/nejronnye-seti-v-chelovecheskih-otnosheniyah.png)
- Общий балл;
- Вербальный интеллект;
- Числовой интеллект;
- Эрудиция;
- Обработка информации;
- Интроверсия - экстраверсия;
- Независимость - согласие;
- Импульсивность - самоконтроль;
- Тревожность- стабильность;
- Консерватизм- новаторство.
В указанном посте я использовал алгоритм xgboost, который нам дал точность модели 40 %. Т.е. мы угадаем выбор респондента только в 40 % случаев, а хочется большего. Считается, что Нейронные сети лучше применять в тех случаях, если переменные сильно коррелируют между собой, а наши переменные коррелируют между собой, см. Интеркорреляции Краткого отборочного теста и Большой пятерки (Big5). Поэтому я подумал, что нейронные сети могут дать более точный прогноз.
Для спецов покажу финальную модель
def create_model(): # create model model = Sequential() model.add(Dense(30, input_dim=26, kernel_initializer='glorot_uniform', activation='sigmoid',kernel_constraint=maxnorm(2))) model.add(Dropout(0.2)) model.add(Dense(4, kernel_initializer='glorot_uniform', activation='sigmoid')) # Compile model model.compile(loss='categorical_crossentropy', optimizer='Nadam', metrics=['accuracy']) return model # create model model = KerasClassifier(build_fn=create_model,epochs=170, batch_size=30, verbose=0)Обучал модель в Gridsearch sklearn-овской обертки Keras-а.
Если Вы спец, подскажите, что можно улучшить в модели.
Результат
Я получил общую точность модели 35 %.
Это confusion matrix. В колонках у нас прогнозные значения того, как респондент оценит отношение руководителя, в строках - реальные значения выбора респондента. В ячейках - % по колонке.
Это значит, что, например, в 36 % случаев мы угадаем выбор респондента в случае с вариантом ответа "Да, практически все достижения были отмечены моим руководителем".
Давайте сравним с точностью алгоритма xgboost
Невооруженным взглядом заметно, что xgboost точнее (40 % общая точность 'accuracy' модели против 35 у нейронной сети). Но обращаю внимание, что нейронные сети дают точность тоже выше плинтуса - выше случайного попадания.
Заметен более насыщенный цвет диагонали?
А еще хочу обратить ваше внимание на крайний правый квадрант на обеих диаграммах. 22-25 % - это ситуация, когда мы предсказываем ответ респондента "Никогда", а на самом деле руководитель по ответу подчиненного, наоборот, отмечает все заслуги подчиненного. Это интересный эффект, который хочется пояснить метафорой "От любви до ненависти один шаг" и промахнуться легко:).
Я продолжу копать в этом направлении. И надеюсь, что спецы мне подскажут, как можно улучшить нейронную сеть.
Понравился пост?
и Вы захотите выразить мне благодарность за интересные результаты, просто покликайте на директ рекламу ниже на странице - у вас это отнимет несколько секунд, а мне принесет немного денег.
Комментариев нет:
Отправить комментарий