갓 등재한 내 논문이 인용될 수 있을까?

다음 두 분과 함께 한  작은 프로젝트였음을 밝힙니다: wooes23(gmail), hwuis6468(gmail)

서문

데이터 분석의 기초를 배우는 과정에서 그리 어렵지는 않으면서도 조금이나마 흥미가 있는 주제로 프로젝트를 해보고 싶었다. 생물학과 연관이 있으면서 본격적인 생물정보 분석을 요하지는 않는 그런 주제가 없을까? 이런 고민을 하던 와중 불현듯 머릿 속을 스치고 지나간 주제가 있었다.

‘저자, 저널 등 조건변수를 입력하면 지금 갓 출간된 논문의 향후 2년간 피인용수를 대략적으로 예측해주는 모델을 만들어 보면 어떨까?’

그렇게 무모한 생각으로 시작하게 된 프로젝트가 바로 아래의 논문인용예측 프로젝트 되시겠다.

결론부터 이야기하자면 아주 성공적인 결과를 내지는 못했다. 유감스럽게도 논문 피인용수를 예측하는 것 자체가 물리적으로 거의 불가능에 가까운 일이었던데다, 막 분석의 기초를 배우고 있던 그당시엔 큰 데이터를 모으는 데만에도 상당한 시간과 노력이 필요했었기 때문이다. (스택오버플로우가 없었다면 곱절은 더 걸렸을듯..)

난생 처음 데이터 분석 프로젝트를 바닥에서부터 진행하면서 많은 우여곡절을 겪었다. 시작할 때엔 “지금 갓 등재한 논문의 향후 2년간 피인용수를 예측하자!”였던 패기넘치는 주제가, 프로젝트를 끝마칠 즈음엔 “지금 갓 등재한 의/생명과학 분야 논문의 향후 2년간 피인용 여부를 예측하자”로 사뭇 바뀌어있기도 했다.

어쨌든, 객관적으로는 아쉬운 결과일지라도 주관적으로는 꽤나 쓸만한 결론이 도출되었기에 간단하게나마 그 과정과 결과를 공개해본다. 결국 최종 분석 주제는 지금 갓 등재된 의/생명과학 분야 논문의 향후 2년간 피인용 여부 예측이었다.

분석 과정에서 쓰인 모든 정보의 출처는 다음과 같다.

  • Elsevier API에서 논문의 citation overview를,
  • MEDLINE/PubMed에서 2013년 12월에 출간된 거의 모든 생명과학/의학 분야 논문의 abstract와 기본정보를,
  • ScimagoJR에서 주요 저널의 H-index, Cites/Doc., Ref./Doc.를,
  • 한국학술지인용색인에서 제공하는 Scopus list에서 저널의 SJR 정보를 가져왔다.

자료를 구하는 과정에서 많은 도움을 주신 Elsevier API 문의 담당자님께 특히 감사의 말씀을 드리고 싶다.

분석에 사용된 코드 및 더욱 자세한 내용은 여기서 볼 수 있다.

거두절미하고, 결론

논문 피인용 여부 예측 모형

사용한 전체 독립변수는 다음과 같다.

  • SJR: 저널 임팩트 팩터의 여러 문제점을 어느정도 해결하기 위해 등장한 인덱스인 듯 하다. 저널 인용 네트워크에서의 중요도를 기반으로 한다고 한다.
  • H-index: 전체 기간동안 *h*번 이상 인용된 논문이 *h*개 이상 있으면 H-index는 *h*가 된다. 통상적으로 사용되는 H-index가 아닌 **저널의** H-index이다. 주의.
  • cite/docs: 최근 2년간 논문당 평균 피인용수
  • ref/docs: 2015년 기준 논문당 평균 인용 논문수

article type과 journal type도 넣고 돌려볼까 했지만, 그다지 연관이 없어서 제외했다.

크게 다섯 가지의 모델을 사용해봤다: 로지스틱 회귀분석, 커널 서포트 벡터 머신(SVM), 랜덤 포레스트, 그래디언트 부스트, 다수결 분류기.

테스트셋 하나에서 각각의 성능은 다음과 같다.

스크린샷 2016-11-20 오전 12.41.13.png

5-fold cross validation한 결과는 아래와 같다.

스크린샷 2016-11-20 오전 12.57.36.png

굳이 복합 모형을 사용할 필요 없이 잘 나온다.

실제 데이터의 모양새와 비교를 해보면 아래와 같다. 초록색 포인트는 출간 직후 2년간 단 한 번도 인용되지 못한 슬픈 논문들이다. 파란색은 적어도 한 번 이상은 인용된 논문들.

X, Y, Z축은 각각 SJR, H-index, cite/docs이다. 근데 그래프를 이리저리 돌려놓아서 뭐가 X고 뭐가 Y인지 헷갈린다

output_24_0.png

그래디언트 부스트 모형이 가장 원래 데이터와 유사하게 예측한 것으로 생각된다.

0.75의 recall과 0.75의 precision으로 꽤 괜찮은 예측을 할 수 있다!

추가 시도 – 예측 성능에 영향이 큰 독립변수만 사용

랜덤 포레스트를 이용해서 각 독립변수의 중요도를 살펴보았다.

스크린샷 2016-11-20 오전 12.42.38.png

Cite/Doc.과 Ref./Doc.가 모형을 먹여살리는 녀석들임을 확인할 수 있었다.

실제로 SJR의 경우에는 피인용 예측에 아무 도움도 되지 않는 정보임을 아래 플롯으로 확인할 수 있었다.

output_8_0.png

가로축이 SJR, 세로축이 인용수이다. 보시다시피 SJR은 각각의 데이터포인트를 분리하는 데에 유용하지 않다.

더 적은 정보를 입력받아서 같은, 혹은 그보다 좋은 예측을 한다면 더 좋은 모형일게다. 이런 생각에 실제로 예측에 도움이 되는 Cite/Doc., Ref./Doc.만을 사용해서 다시 분류 모형을 학습시켜 보았다.

테스트셋 하나에서 각각의 성능은 다음과 같다.

스크린샷 2016-11-20 오전 12.43.28.png

5-fold cross validation 결과는 다음과 같다.

스크린샷 2016-11-20 오전 1.03.01.png

더 적은 정보로도 거의 똑같은 성능을 낼 수 있었다.

Unknown.png

X, Y축을 각각 Cites/Doc., Ref./Doc.으로 두고 모든 데이터를 그래프로 나타내었다. 여기서도 그레디언트 부스트가 제일 좋아보인다.

결론

  • SJR과 같은 정보는 각 논문의 중요성 혹은 피인용을 판단하는 데에는 아무 쓸모가 없다. (네이처에서도 비슷한 내용을 다룬 바 있다) 극히 소수의 소위 ‘스타 논문’에 의해 임팩트 팩터 등의 수치가 결정된다는 것이다.
  • 신기하게도, 과거의 논문당 피인용수 뿐 아니라 인용해온(피인용이 아니다!) 논문 수 역시 논문의 피인용과 관계가 깊었다.
  • 첫 번째와는 상반되게도, 개개의 논문의 정보가 아닌 저널의 정보만으로도 저널의 피인용 여부는 상당히 정확하게 예측할 수 있었다. -> 개개의 논문만의 정보를 추가한다면(교신저자의 H-index 등) 더 좋은 결과를 얻을 수도 있겠다.

분석 과정에서 느낀 점도 간단히 정리해봤다.

  • 모인 데이터를 다루는 행위 그 자체보다는, 양질의 데이터를 얼마나 많이, 빠르게 얻어낼 수 있느냐가 더 중요하다.
  • 운 좋게 고난이도 스킬의 데이터 가공이 없이도 꽤나 괜찮은 예측 성능을 얻어낼 수 있었지만 날 것의 데이터에서 분석가능한 형태의 데이터로 전처리를 하는 것도 상당히 중요할 수 있겠다는 생각을 했다.
  • 무턱대고 분석을 시작하기 전 전체적인 데이터에 대해 감을 잡고 시작하는게 중요하다. 이때 pairplot이 상당한 도움이 된다.

첫 분석임에도 나쁘지 않은 성능이 나와 희망적이다. 몇 군데 손을 보면 더 향상시킬 수도 있을 듯 하다. 내 논문이 나오면 돌려볼만 하겠다.

본인이 학습시킨 예측 모델이 본인 논문의 피인용 가능성을 없다고 판단하는 슬픈 일이 일어나지는 않기를 바라면서.

 


업데이트:

  • SJR이 이전에 적었던 것처럼 “아무 도움도 되지 않는 정보”이지는 않다. 간단히 로그 변환을 하면 단순선형회귀에서 $$R^2=$$ 0.27정도의 설명력을 얻을 수 있다.
  • 이전에 나왔고 최근 들어 퍼블리시된 논문들을 참고하면, 회귀분석을 사용한 인용수 분석이 “물리적으로 불가능한 일”은 아닐 것이다. 정확도가 아쉬울 수는 있겠지만, 유용한 독립변수에 대한 정보를 더 확보할 수만 있다면 해볼만한 분석으로 보인다.

답글 남기기

댓글을 게시하려면 다음의 방법 중 하나를 사용하여 로그인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.