작년에 2020 금융 빅데이터 페스티벌에서 보험금 청구분야 1등을 해서 인턴십 기회를 얻게됐다!
1월 4일부터 출근을 했고, 한달간의 인턴십 과정이 마무리 돼서 느낀점이나 성장한 점을 기록해보려고 한다 :)
인턴십은 한달동안 회사 내부의 데이터를 보고 자유롭게 주제를 선정하고, 이를 분석하는 방식이었다.
선임님께서 과제 Pool 정의서를 주시고,
그 안에서 마음에 드는 갈래를 골라 나름대로 발전시키는 방식이었는데,
우리는 팀으로 인턴을 왔지만 이 프로젝트는 한달동안 개인적으로 진행했다.
그런데 주제를 정하려니, 보험쪽 domain이 아무것도 없어서 정말 어려웠다.
그리고 공모전은 주제가 정해져있었는데,
이건 주제 선정부터 시작해야하고 그에 따른 비즈니스 가치도 고려해야하니 정말 어려웠다.
비즈니스 애널리틱스 간접 체험......
그래서 거의 3주를 주제를 구체화하는데 시간을 썼다.
그 동안 분석을 아예 안한건 아니고, 모델링이나 시각화도 했는데 계속 까이고......
비즈니스적 가치를 고려하면서 계속 주제 방향을 바꾸고 바꾸고를 반복했다.................ㅠ ㅁ ㅠ
그래도 지금 생각해보면 분석가로 성장하는데에 정말 필요한 시간이었던 것 같다.
(한달 지나서 기억이 미화됐나?)
그래서 그 과정에서 내가 구르고 굴렀던 느낀점을 기록해보려구 한다.
지금 사실 회사에서 블로그를 쓰고있다 ㅎㅁㅎ....
1. 고객 Segmentation은 생각보다 어렵다
빅데이터 페스티벌에서 내가 '고객 유형화' 아이디어를 냈었다.
그때는 그냥 별 생각없이 클러스터링을 하면 적절한 유형으로 묶일 것이라고 생각했고,
만약 프로파일링에 맞지 않는 유형이 있다면 군집을 여러개 지어서 교집합을 찾으면 되지 않을까? 라고 생각했다.
군집이 개인을 대표하지 못한다면, 그냥 군집을 여러개 지으면 될거라고 생각했다.
근데 실제 현업에선, 이게 정말정말 쉽지 않았다.
우선 고객이 진짜 진짜 많다.
나는 이번에 회사에서 빅데이터가 아니라 자이언트 데이터를 봤다. 나는 6개월 데이터로만 분석을 진행했는데,
특정 타겟 고객만 가져와도 1800만명이 넘었다.
그래서 정말...내가 캐글이나 데이콘에서 하는 데이터셋은 정말 작은거구나....생각했다.
아이리스를 넘었더니 캐글 데이콘이 있는데..... 캐글 데이콘을 넘었더니 회사 데이터가 있는 느낌?
변수도 진짜 너어어어무우우우 많아서 그중에서 변수를 선별하는 것도 일이다.
처음에 DBSCAN을 돌렸는데 그냥 안묶이는거다.
그래서 내가 처음에 시도한 방법은 고객 개인정보랑 보험 내부 정보를 나눠서
두개의 클러스터링 모델을 설계해 교집합을 합치는 것이었다.
사실 고객 특성이라도 묶어야 프로파일링을 하니까 이렇게 진행을 했는데
그래도 처음보단 군집이 괜찮게 나왔다.
근데 문제가 각 군집당 사람수가 매우 적다 ^____^ 는 것이었다.
한명인 군집도 많았고 그냥 군집수도 개많았다.
DBSCAN 튜닝을 잘못했을수도 있는데, k-means는 더 쓰레기같이 묶었고 모델은 DBSCAN이 최선이었다.
결국 연속형 변수를 범주화하고, 2개~3개의 특성변수로 클러스터링을 하니 원하는 군집을 묶을 수 있었다.
그리고 군집별 평균을 구해서 비교하고 싶은 군집과 꺾은선 그래프로 비교하는 것 정말 좋다! ㅎㅁㅎ
(칭찬받았당 ~_~)
2. 생각보다 SQL과 Hadoop, Spark 역량은 필수적이다
앞에서 말했듯이 회사의 데이터는 진짜 매우매우매우매우 많다.
벌써 10년 이상의 데이터가 적재되어있고, 신계약고객 해약고객 유지고객까지 합치면
정말 그냥 순간순간 레전드 숫자의 데이터가 적재된다.
그래서 내가 캐글, 데이콘에서 데이터에 접근했던 것처럼 데이터에 접근할 수 조차 없다.
왜 기업에서 Spark 역량을 원하는지 정말 뼈저리게 느꼈다.
분석을 하려면 데이터에 접근해야하는데, 데이터에 접근하려면 Hue에서 쿼리를 짜서 SQL문으로 접근해야한다.
그리고 데이터가 정말 많아서, 이를 분석하려면 또 Spark를 이용해 병렬처리를 할 수밖에 없다.
나는 SQL문을 정말 하나도 몰랐는데, 그래서 'select * from ~' 문으로 데이터에 접근해서 보는 것부터 시작했다...
원래 Hadoop이나 Spark는 엔지니어 역량에만 필수적인줄 알았는데.......
그냥 이걸 모르면 분석을 아예 못한다. 회사에서는.
특히 나는 Oversampling을 하는데 메모리 에러가 나서 선임님께 문의했었는데,
선임님은 Spark로 이걸 1초만에 해결했다......
3. 지금까지 나는 데이터 Merge도 성의없이 하고있었다
처음에 주제를 정하고, 내가 필요한 변수를 Merge해서 나만의 데이터를 만들었다.
근데 알고보니 나는 그냥 데이터를 막 합치고 있었던거다. 그냥 pd.concat([ , ]) 이러고 있었다.
데이터 숫자도 확인을 안하고,,, 그냥 막 합쳤다.
그니까 당연히 merge할때마다 데이터 숫자가 변하고,,,, 중복된 행이 생기고,,,, 그랬다.
그래서 선임님한테 겁나 혼났당,,ㅎㅎ
특히 회사 데이터는 NULL이 정말 많은 아주 널널 ,,, 한 데이터 였는데 이런 Null값이 Merge할때 작용하니까
걍 merge가 엉망으로 되는거다. 물론 난 몰랐지.......
앞으로는 merge를 할때 데이터 숫자를 꼭 확인하고 해야겠다고 생각했다.
역시 뭐든 생각없이 하면 아무것도 안돼,,,,
4. 머신러닝 기술도 중요하지만, 이걸 어디에 쓸지가 더 중요하다
물론 머신러닝 모델 알고리즘도 정말 중요하다.
근데 이걸 이용해서 분석을 하려면, 어디에 쓸지가 정말 더 중요한 것 같다고 정말 크게 느꼈다.
보험사에서 인턴을 하니, 보험 지식이 당연히 많이 필요했다.
해지, 해약, 실효, 추가납, 이탈, 신계약... 등 당연히 나는 아무것도 몰랐다. 빅데이터 페스티벌은 '보험금 청구'였는걸 !
이걸 모르니 주제를 정할 수도 없었고, 비즈니스적인 가치를 생각할수도 없었다.
그래서 이번 인턴으로 가장 크게 느낀건 도메인의 필요성이다.
기술도 중요하지만, 이 기술로 세상에 어떻게 Contribution을 낼지가 더 중요하다.
그래서 이번 인턴을 계기로, 나만의 분석 도메인을 갖기로 했다.
도메인 지식이 있으면, 간단한 모델을 사용하더라도 분석의 퀄리티가 달라질 수 있을 것 같다.
그리고 나만의 Distance formular 를 갖는것도 중요하다.
분석가에게 꼭 필요한 역량이라고 선임님께서 말씀해 주신건데,
나로부터 분석대상의 거리를 어떻게 측정할 것인지에 관한 문제다.
그리고 이걸 어떻게 쓸까? 를 고민하는 것.
꼭 분석하고 싶은게 있으면 그거에 필요한건 모조리 수집하고, 아닌 것은 과감히 쳐내야 한다는 것이다.
예를들면 중요한 변수는 one-hot으로 펼쳐서 중요도를 높이고, 그렇지 않은 변수는 과감히 버리는 식이다.
이 말도 혼나면서 들었지만 되게 인상깊었던 말이다.
여의도에서 일하면서, 출퇴근은 정말 힘들었지만 왠지모르게 금융 데이터를 분석해 Contribution을 내고 싶어졌다.
그래서 도메인을 금융 쪽으로 잡고, 퀀트를 준비해볼 예정이다.
정말 한달동안 스트레스도 많이 받고 힘들기도 엄청 힘들었다.
그래도 정말 새로웠고, 지금 인턴을 할 수 있어서 너무 행복했다. 많이 배운 것 같다.
'Achieved 👩🏻' 카테고리의 다른 글
[BOAZ ADV 컨퍼런스] AI Personal Home Traniner (0) | 2021.01.29 |
---|---|
2020년을 마치며 - BOAZ 에서 성장한 순간들 기록✨ (0) | 2020.12.28 |
지금까지 정리했던 기초 Python과 ML (0) | 2020.12.22 |