월간 회고록: 2022년 6월

Memory

2022 가천대 길병원 고급통계교육 강의 소회

저자

방태모

공개

October 12, 2022

Photo by Fredy Jacob on Unsplash

지난 6월에는 당시 재직 중이던 가천대 길병원 내 교수님들을 대상으로 하는 R 핸즈온 고급통계교육 강의를 맡게되었습니다. 매주 화요일 2시간씩 3주간 총 3회 강의를 진행했어요. 강의 주제는 정해져있었습니다. 첫 번째는 회귀분석과 ARIMA 모형, 두 번째는 생존분석, 세 번째는 매칭이었습니다. 강의 경험이라곤 대학원생 시절 실습 조교를 맡았던 것, 대전 통계교육원에 외부 출강을 하시던 지도교수님을 따라 보조강사를 맡았던 것 뿐이었습니다. 그래고, 스스로 자료를 준비하고 강의를 해보는 경험은 꽤 특별할 것다는 생각을 해서, 설레는 마음으로 준비를 했던 기억이 납니다. 그래서, 이번 6월 회고록에서는 강의 소회에 대해 써보려고 합니다. 그리고, 강의를 준비를 하며 갖게된 뜻밖의 관심이 좋은 결과로 이어질 수 있었던 부분 까지도요. 오늘은 생생한 감정의 전달을 위해 반말로 글을 작성해봤습니다.

깨달은 점

  • 누군가를 가르치는 것은 정말 어려운 일임을 다시 한 번 느꼈다.

  • 짧은 강의 시간에 각 주제에 어떤 내용을 담아야할 지 결정하는 것 또한 매우 어려운 일이다.

  • R 초심자들을 대상으로 R 강의를 할 때는 간략한 R 코드 튜토리얼보다는, R과 Rstudio 설치 및 Rstudio 설정 팁을 먼저 전달하는 것이 좋아보인다.

    • 일종의 아이스브레이킹 장치가 될 수도 있을 듯 하다. 나 같은 경우 강의 시간이 짧아서 미리 설치를 부탁하였고, Rstudio의 메인 화면 구성과 메인 화면의 각 탭과 세부 탭들이 의미하는 바, 간략한 설정 팁들을 공유해주었다.
    • 특히, SPSS와 같은 툴을 대부분 다뤄왔던 청중들의 특징을 고려해서, Rstudio에서 클릭을 통해 외부파일을 읽는 방법과 패키지를 설치하는 방법을 소개했더니 반응이 꽤 좋았다. 이게 R을 딥하게 배우고자 하는 사람에게 장기적으로 도움이 될 지는 모르겠지만..😅 어차피 자연스레 R이 익숙해지면 손으로 코딩하는 것이 더 편하다고 느낄 것이라 생각했다. 코딩을 하는 사람들이면 알다시피, 키보드에 올려진 두 손 중 하나를 마우스로 옮기는 것은 매우 귀찮은 일이기 때문이다.
  • 물고기를 잡아서 가져다주는 것 보다는, 물고기 잡는 법을 알려주자.

    • help()를 활용하는 방법에 대해서는 꼭 전달하자. R에서 가장 중요한 것이라고 생각한다.

    • 또 하나 초심자들에게 유용한 정보는 패키지에 관한 help()도 제공된다는 점이다. help(package = "패키지명")을 해주면 해당 패키지의 일종의 Full name도 알 수 있다. 그리고, 해당 패키지는 어떤 함수들로 구성되어 있는지, 각 함수들의 설명 등을 확인할 수 있다.

    • R 코드에 오류가 났을 경우에 대처 방법1과 나만의 디버깅 방법2을 소개해주었다. 어차피 제한된 시간에 R 실력을 비약적으로 상승시킬 순 없다. 책에서 배운 것들 또는 강의에서 배운 것들을 실무에 적용하다보면, 분명히 예상치 못한 오류에 마주하게 될 것이다. 특히, 초심자라면 더더욱. 이때마다 이 오류를 잡기 위해 삽질을 하게될텐데, 이러한 삽질이 비로소 프로그래밍 실력을 크게 향상시켜준다고 생각한다. 그래서, 내 생각에 짧은 R 강의에서는 R 실력을 키울 수 있는 자신만의 노하우, 실무에서 문제가 발생 했을 때 자신만의 대처 방법, 디버깅 방법 등을 전달하는 것이 꼭 필요하다고 생각한다. 특정 주제를 가지고 긴~여정의 강의 계획이 있는 경우에는 틈틈히 이러한 것들을 전달할 수 있지만, 시간이 얼마 없는 짧은 R 강의에서는 그저 자신이 준비해온 코드들만 읊고 설명하는데에 집중을 할수도 있다. 시간이 좀 부족하다는 생각이 들더라도, 자신만의 대처 방법, 디버깅 방법이나 책에서는 배울 수 없는 자신만의 노하우를 전달하는 데에 시간을 꼭 들이자.

    • 지금 글을 쓰며 내가 전달한 것들 중 또 하나 생각난 부분이 있다. 자신이 객체나 함수를 만들때 이름을 무엇으로 할 지, 이것에 대한 고민 또한 충분히 하는 것이 좋다는 것이다. 미래의 나를 위해서도, 내 코드를 읽어야 할지도 모르는 누군가를 위해서도. 반복되는 코드들을 작성해야 하는 일이 있을 때 또는 특정 프로젝트에 필요한 정말 긴 코드를 작성해야 할때, 자신만의 일정한 컨벤션을 지켜 변수명을 작성하는 습관은 정말 중요하다. 이러한 사소한 습관은 당신을 더 빨리 퇴근할 수 있게 만들어 줄 것이다.

    • 여기서 또 하나 추가하라면, R에서는 반복문 사용을 지양하고, 함수형 프로그래밍을 이용해 코딩하는 습관을 꼭 들이라는 것3.

    • 마지막으로 R 코딩 시 매우 안좋은 습관을 하나만 더 이야기 하자면, 반복문 작성 시 빈 객체를 만들어 각 요소에 할당을 하는 것이 아닌, a <- c(a, add)와 같이 벡터를 덮어 씌우는 습관 정도이다.

  • 청중들이 갖는 공통적인 특징을 고려한 강의 설계는 듣는 사람들을 기쁘게 한다.

    • 내 교육을 들으러온 사람들이 R을 배우고자 하는 목적은 의학 연구였으나, 대부분 청중들은 R 초심자4에 해당했다. 강의 설계를 최대한 이 특징을 고려해서 했다. R 실력이 어느정도 되는 분들로 구성되어있었다면 더 많은 것들을 전달할 수 있었을 텐데, 조금 아쉬움이 있다. 짧은 강의 시간에 R 코드들을 한 줄 한 줄 이해가도록 설명해줘야 했기에.

    • 가장 반응이 좋았던 부분은 웹베이스로 클릭을 통해 외부 파일을 읽고 PSM(Propensity score matching), 생존분석을 수행할 수 있는 앱을 소개했던 것이다. 문건웅 교수님이 운영 중인 🔗웹에서 하는 R 통계에서 제공한다. PSM의 경우 Youtube 영상도 제공 중이다:

      가장 인상 깊었던 부분은 앱을 통해 수행한 분석 결과를 PPT로도 추출이 가능한데, 그림들이 벡터 그래픽으로 이루어져 있어 그림을 자유롭게 수정할 수 있다는 점이다. 이 부분에서 교수님들로부터 가장 좋은 반응을 이끌어냈던 것 같다. 연구를 수행할 때 투고하고자 하는 학회지에서 요구하는 포맷(e.g. 글씨체)을 매번 맞춰서 그림을 다시 그리기란 참 귀찮은 일이기 때문이다. 그리고, 글씨체외에 그려진 그림까지 세세하게 수정이 가능한데, 결과 조작은 결코 해서는 안된다고 당부를 드렸다.😂 초심자들을 위한 좋은 앱을 무료로 제공해주시는 문건웅 교수님께 다시 한 번 감사의 말씀을 전한다.

부족했던 점

  • 나는 과연 그들에게 거인이 되어주었는가?

    • 연구 쪽에 유명한 격언이 있다. “거인의 어깨위에 서서 더 넓은 세상을 바라보라.” 사람들이 좋은 논문을 찾아서 읽고, 좋은 책을 사서 읽고, 돈을 지불하고 좋은 강의를 들으러 다니는 이유도 여기에 있다고 본다. 그렇다면, 과연 내 강의는 청중들에게 더 많은 시야를 확보해줌으로써 그들이 보던 세상보다 더 넓은 세상을 보여주었다고 할 수 있을까?
    • 사실, 첫 번째 주제는 내가 연구하던 과제와 어느정도 관련이 있기도 했고 평소에 회귀분석, 시계열 자료분석에 관심이 많았기에 어느정도 그 역할을 했을 것이라고 생각한다. 그러나, 생존분석과 매칭은 내가 실무에 나와서 또는 대학원에서 연구까지 수행을 해본 적은 없는 주제에 해당했다. 특히나, 매칭은 내가 이번 강의를 준비하며 처음으로 공부했던 주제이기도 하고.
    • 그래서, 강의를 준비하며 참 고민이 많았다. 청중들이 교육을 듣는 목적은 자신의 연구를 독립적으로 수행하는 데에 조금이라도 도움이 되기 위함인데, 과연 연구 동향, 해당 주제와 관련한 최신 R 라이브러리와 같은 것들을 내가 잘 알려줄 수 있을지? 후자는 잘해냈다고 생각하지만, 전자에 대해서는 아는 바가 거의 없어 이와 관련한 이야기는 드리지 못했다. 강의를 하며 내 자신에게 가장 아쉬운 점이였다.
  • 강의 분량

    • 3개의 각 주제마다 2시간의 시간을 부여받았다고 했다. 내 계획은 해당 주제에서 배우는 기술들의 모티베이션, 분석 과정 및 분석 결과 해석에 꼭 필요로 되는 이론적 베이스를 설명한 뒤에 준비해 온 R 코드로 튜토리얼을 보여 준 뒤에 직접 실습해보는 시간을 가지는 것이었다. 그래서, 최대한 이론적 부분은 수식을 최대한 생략한 채로 컴팩트하게 준비했고, 튜토리얼도 초심자가 이해하기 쉽도록 최대한 자세하게 설명하려고 했다.
    • 이러다보니 2시간은 턱없이 부족했고, 직접 실습을 수행할 수 있는 시간은 조금밖에 부여해드리지 못했다. 아무리 코드를 따라친다고 한들, 초심자들에게는 예상치 못한 오류들이 발생할 수 있기 때문이다. 강의 시간에 맞게 분량을 준비하는 것은 참 어렵다고 느꼈다. 그만큼 전달하고 싶은 내용이 많았다는 뜻이기도 하고, 그것들을 쳐내는 것은 무척이나 어려웠다.

뜻밖의 관심

마지막으로 짤막하게 하고싶은 이야기가 있다. 앞서 말했듯이, 세 번째 강의 주제인 매칭은 겉으로 종종 듣기만 하다가 처음으로 공부를 해 본 주제였다. 강의를 위해 매칭과 Weighting 방법론 중 하나인 IPTW에 대해 공부를 했다. 이 과정에서 자연스럽게 인과추론(Causal inference)의 모티베이션에 대해 알게되었다. 나는 개인적으로 어떤 기술이나 알고리즘을 공부할 때 꼭 그 기술의 모티베이션, 백그라운드에 대해 찾아보는 편이다. 그래야, 왠지모를 찝찝함이 없어진다. 그렇기 때문에, 매칭과 Weighting에 대해 공부하며, 인과추론에 대해 공부하게 되는 것은 당연한 수순이었다.

인과추론도 사실 처음 들어보는 분야는 아니였다. 그저, 매칭처럼 겉으로 듣기만하고 관심을 가지지 않았을뿐. 그런데, 찾아보니 왠걸? 인과추론의 모티베이션은 내게 너무나도 인상깊었다. 나는 예측 모델링 보다는 추론적 관점의 모델링에 유독 관심이 많았다. 학부, 대학원에서 통계학을 전공하며 전통적인 회귀분석의 모티베이션에 대해 고민했던 적도 있고, 실무에 나와서 시계열 회귀모형에 기반한 모델을 다루며 \(Y\)\(X\)간의 relationship을 추정해야 하는 일을 하고있었기 때문이다. 내가 안고있던 고민들은 인과추론이라는 학문이 갖는 모티베이션과 정확하게 일치했다. 그래서, 공부를 해보고 싶다는 마음이 정말 강하게 들었다.

예상치도 못한 뜻밖의 상황에, 이렇게 설레는 마음을 품게되는 새로운 분야를 만날 줄이야. 이때 이후로, 퇴근을 하고 새로운 내 공부 루틴은 올해 우리나라에서 열린 인과추론 서머 워크샵 영상들을 찾아는 것이었다. 그리고, 얼마 뒤 또 하나의 흥미로운 소식을 접했다. G마켓에서 인과추론에 관심이 있는 Data Scientist를 찾고있다는 사실. 올해 초에 이직을 결심했던 나에게, 너무나도 매력적인 포지션이였다. 그리고, 기회라고 생각했다. 서류 지원을 하며 썼던 지원 동기는 그 어떤 때보다 진심이었다. 진심이 닿았을까? 운이 좋게도, 2022년 10월 현재 나는 G마켓에서 일을 하고있다. 그 누가 알았을까? 이 강의를 준비하며 인과추론에 관심을 갖게되고, 이 관심이 성공적인 이직까지 이어질 줄은. 인생에 어떤 기회와 운은 정말 언제 찾아올 지 모르며, 이를 잡는 것 또한 그 사람의 능력이다. 누군가에게는 운이라고 생각되어 지지 않는 그 기회는, 아무도 모르게 지나갈 수 있다. 강의를 부탁받으며, 귀한 기회라 생각하고 진심으로 강의 준비를 해봐야겠다는 다짐을 했던 내게 다시 한 번 고맙다는 말을 전한다.

맺음말

깨달은 점, 부족했던 점에 대해 읊다보니 오랜만에 반말로 글을 쓰게됐습니다. 사실 교육 마지막 날에 강의를 마무리하며, 교수님들께 제 강의가 연구에 조금이라도 도움이 되었으면 한다고, 넌지시 제 강의가 어땠냐고 물어봤었습니다. 답정너죠. 다행히, 반응은 좋았습니다.😂 웃어주시는 분들도 많았고 연구에 도움이 많이 될 것 같다고 말씀해주시는 분들도 있었어요. 아무 반응이 없었다면 그야말로 아찔하네요. 일종의 답정너로 받은 박수이지만, 어떤 교수님께는 좋은 강의 감사하다며, 작은 보답까지 해주셨습니다.😀 강의를 마칠때 받았던 박수, 좋은 말씀들은 지난 3주간 업무까지 병행해가며 강의 준비를 했던 지난 시간들에 대한 큰 보상을 받는 듯한 느낌이었습니다. 다음에 이러한 강의 기회가 있다면 더 완벽하게 준비해봐야 겠다는 다짐도 했습니다. 정말 의미있고 재밌었던 경험이었습니다.

모든 글이 그렇겠지만, 월간 회고를 쓰기 전에는 유독 더 귀찮은 마음이 듭니다. 제 머릿 속에서 느꼈던 감정들을 생생하게 꺼내서 전달하려다 보니 그런 것 같아요. 제 감정들을 전달하기 위해 문장들을 여러번 쓰고 지우는데, 이때 문득 떠오르는 그때의 감정들이 저를 꽤 즐겁게 합니다. 오늘도 행복한 감정으로 이 글을 마무리합니다. 강의 자료들은 제 블로그 우측 상단 리소스 탭의 발표 아카이브에서 만나보실 수 있습니다.

각주

  1. 그래봤자, 간략한 구글링 방법에 대해 소개했을 뿐이다. 그렇지만, 이게 다다. 구글 꺼놓고 코딩하라 하면 제대로 할 수 있는 사람이 한 명은 있을까?↩︎

  2. help()를 자세히 살펴 해당 함수에 대해 파악하고자 할 때, 직관적으로 이해가 잘 안가는 상황이 있을 수 있다. 이때는 함수의 인수 옵션들을 이것저것 입맛 대로 바꿔나가며 일종의 A/B testing을 통해, 함수의 각 인수를 파악하는 것이 더 직관적이고 빠를 수 있다. 디버깅 또한 이런 로직으로 해결을 해보자.↩︎

  3. {purrr}이 꼭 필요로 될 것이다: 🔗Link↩︎

  4. 사전 설문조사를 통해 파악할 수 있었다.↩︎

라이센스

인용

BibTeX 인용:
@online{방태모2022,
  author = {방태모},
  title = {월간 회고록: 2022년 6월},
  date = {2022-10-12},
  url = {https://taemobang.com/posts/2022-10-12-monthly-memory-202206/},
  langid = {kr}
}
인용방법
방태모. 2022. “월간 회고록: 2022년 6월.” October 12, 2022. https://taemobang.com/posts/2022-10-12-monthly-memory-202206/.

새 글이 발행되면 알려드려요.

포스팅을 독려해주실 수 있어요.