월간 데이콘 심리 성향 예측 AI 경진대회

마키아벨리니즘 테스트 스코어를 Feature에 추가하기

2020.10.10 08:26 11,834 Views language

안녕하세요. 
토론에 있는 Saturday.K님의 '마키아벨리즘 테스트 Score 계산법 공유' 게시물을 참고해서 해당 게시물에 나온 한계점을 해결할 수 있는 간단한 코드를 작성해보았습니다. 마키아벨리니즘 테스트 스코어가 얼마나 중요한 feature가 될지는 모르겠지만 간단한 코드이니 한번 넣어보시는 것도 좋을 것 같습니다. 감사합니다. 

Code
로그인이 필요합니다
0 / 1000
Taepungi
2020.10.10 11:00

이것이 집단지성의 힘인가요...

DACON.ZERO
2020.10.10 13:00

대단하네요...감사합니다!

sanghwi
2020.10.10 13:48

공유 감사합니다!! 

durro
2020.10.10 18:21

감사합니다.!

재빅
2020.10.10 20:27

감사합니다~ 

윤기석
2020.10.10 23:07

정성글 조아요

D아이ERD
2020.10.11 16:56

감사합니다.!!

김영민
2020.10.11 18:39

감사합니다!

okso6441
2020.10.11 22:09

와!! 감사합니다~

정재민
2020.10.12 13:18

감사합니다 ㅎㅎ

Saturday.K
2020.10.13 00:51

요즘 통계학 스터디를 하고 있는데 통계적 방법으로 답을 찾아내는 과정이 멋지네요.
제가 본 책에서는 스피어먼 상관계수는 비모수적 통계량이라 모집단이 정규분포를 따르지 않을때 사용하는 것이라고 봤는데
샤피로 윌코 검정을 통해서 정규성을 확인해보고 선택하는게 정석일까요.( 한창 공부중이라 그냥 생각해봤습니다.ㅋ)

실제 데이터에서 문항에 따라 마키아벨리즘 성향이 갈리는게 정말 흥미롭네요~ 감사합니다.

Saturday.K
2020.10.13 01:07

저는 무식하게 알려진 문항만으로 views, tactics, morality를 추가해봤는데 약간의 상승효과는 있더라고요.
공유해주신 방법으로 전체  score도 추가해봐야겠네요

jhl
2020.10.13 14:25

제 통계 지식이 그렇게 깊지 않아서 이 답변이 맞는지는 모르겠습니다. 보고 계시는 책이 저보다 훨씬 더 정확할 것입니다. 제가 통계를 배울 때 기억이 맞다면 ‘데이터가 정규 분포되어있지 않았을 때는 전제 조건에 어긋나기 때문에 피어슨 상관계수를 사용하지 못한다. 하지만 그 경우에도 스피어먼 상관계수는 사용할 수 있다’라는 말이 많았던 것 같은데 스피어먼 상관계수가 정규 분포를 따르지 않을 때만 사용할 수 있는건 아닌듯합니다. 그래서 굳이 데이터가 정규 분포를 따르지않는다는 것을 증명해줄 필요는 없어보입니다. 

jhl
2020.10.13 14:25

그리고 ‘무식하게’라뇨. 작성해주신 내용에서 영감 받아서 이렇게 코드도 쓰고 AUC도 조금씩 올려보려고 해보고 있습니다. 좋은 결과있길바랍니다! 

앵남쓰
2020.10.13 08:31

감사합니다 !! 

jhl
2020.10.13 14:26

관심 감사드립니다! 저도 아직 테스트 중인데 'Mach_Score'가 많은 분들에게 도움이 되었으면 좋겠습니다. 다들 화이팅입니다!  

센센마
2020.10.13 16:20

안녕하세요 jhl님 좋은 글 감사드립니다 ! 
혹시 이 코드대로 진행하기 전과 후 스코어 변화가 어떻게 되셨는지 궁금합니다 !
저는 Mach_Score를 reverse를 취하지 않고 전부 더해주었을 때가 스코어가 더 잘 나와서 혹시 jhl님은 변경 후에 스코어가 더 올라가셨다면, 제 방법에서 부족한 부분을 수정하려고 합니다 !
좋은 글 다시한번 감사드립니다 !! 

jhl
2020.10.14 11:40

제 기억으로는 preprocessing을 어떻게 하냐에 따라 어떨때는 스코어가 높게 나오기도하고 낮게 나오기도하고 별로 큰 차이는 없었던 것으로 기억합니다. Mach_score가 그리 대단한 predictor가 아니기 때문에 Mach_score를 추가했다고 큰 변화를 기대하지는 않았어서 다른 feature들도 추가하고 있습니다. 

jhl
2020.10.14 11:41

사실 저도 대회를 참여하고 있는 입장이기 떄문에 센센마님이 해보신대로 reverse를 시킬 경우 점수가 떨어지는 이유가 있을지도 모르겠습니다. 센센마님이 하신 방법이 부족하거나 그런건 아니었을 것 같고 preprocessing을 어떻게 하냐, 어떤 방식을 사용하냐, 어떻게 데이터를 split했냐 등등 여러가지 변수에 따라 결과가 다르게 나올 수 있을 것 같아서 여러가지 시도해보시면 좋을 것 같습니다. 

센센마
2020.10.17 09:29

감사합니다 jhl님 좋은 말씀해주셔서 도움 많이 되었습니다 !! 

dbtjdwn
2020.10.14 20:32

감사합니다

박솜
2020.10.19 23:56

이해가 잘 안가는데 점수 계산을 어떻게 한다는건가요??
그리고 항목들이 어떤 질문인지 알면 뭐를 할 수 있는건가요?

jhl
2020.10.20 00:14

두 번째 질문부터 답변을 먼저 드리면 각 항목들이 어떤 질문인지를 알면 필요에 따라 모델 훈련시에 특정 질문은 제외한다거나 의미있는 Feature (예를 들어 위에서 언급한 Morality 관련 질문들만 모아서 평균을 구해서 Feature에 추가하기)를 추가로 생성할 수 있습니다. 100%로 보장은 없지만 그러한 Feature들을 추가해주고 모델이 더 향상되었는지 혹은 그 반대인지 확인하면서 모델을 발전시키는 것이 목적이라고 생각합니다. 

jhl
2020.10.20 00:17

첫 번째 질문에 대한 답변을 드리면 주어진 데이터에는 마키아벨리니즘 테스트 관련 질문이 총 20개가 있지만 편의상 3개만 있었다고 예를 들어보겠습니다. 그 3개가 질문 A, B, C라고 하고 각각에 대한 답변이 1, 3, 5였다고 가정을 합시다. 제가 게시물에서 언급한 부호를 고려하지 않고 단순 평균값을 내었을 경우에는 3이 나올 것이고 그 3이 곧 마키아벨리니즘 스코어가 될 것입니다. 

jhl
2020.10.20 00:19

하지만 부호를 고려한다면 이야기가 달라질 수 있습니다. 예를 들어 A의 부호가 -이고 나머지 B, C의 부호가 +였다면 A의 답변값, 즉 1,을 reverse시켜 5로 만들어준뒤 평균값을 구해야합니다. 그래서 결국 5, 3, 5이 세 숫자의 평균값인 4.33333…이 마키아벨리니즘 스코어가 되는 것입니다. 제 게시물은 결국 숨겨진 질문의 부호를 판별하는 코드라고 생각하시면 될 것 같습니다. 이해가 안되시는 부분이 있다면 말씀해주세요. 

schbd_lms
2020.11.03 16:37

감사합니다.

psy.py
2020.11.05 17:51

좋은 접근 방법 알려주셔서 감사합니다!

프리만
2020.11.21 14:32

감사합니다.^^