피쳐 엔지니어링
성훈이 형의 엄청난 노력으로 완성된 전처리 파일을 직접 써보자.
일단 내가 생각한 피쳐만 추가되는 버전으로 하나를 만든다. 해당 피쳐를 추후 모델에도 적용할 수 있다고 생각하기 때문에 이 자체만으로 결과가 나오는지 확인할 필요가 있다고 생각한다.
각 최대 문항을 따지고, 문항을 수치형으로 만들어보자.
그런데, 문항이 수치형이 되는 것이 맞는가? 2번이 1번보다 두 배로 어렵기라도 한가? 비율을 가지는 관계는 절대 아닌 것 같다. 그럼 이것도 둘 다 해보자고. 수치형으로 한 번, 범주형으로 한 번. 어떤 수치형을 범주형으로 바꾸는 것이 좋은지 아직 나는 판단을 할 수 있을 만큼 충분한 지식이 없다.
잘 만들어진 코드에 내 것을 적용하는 것은 어려운 일이 아니다. 그것보다는 동영이가 전번에 알려준 것을 토대로 디버깅을 하는 방법을 익히면서 진행하고 있다.
중간중간 걸어놨는데, 이상하게 특정 줄에 걸어두면 더 이상 진행되지를 않는다. 일단 그런 줄은 그냥 없애고 다시 진행. 디버그 덕에 내가 오타를 낸 것을 찾을 수 있었다! 조금 더 익숙해지면 정말 유용하게 쓸 수 있을 듯..
그냥 한 줄 한 줄 실행하면서 컴퓨터가 코드를 어떤 순서로 읽는 건지 파악할 수도 있어서 굉장히 신기하다. 앞으로도 적극적으로 이용을 해보는 것이 좋겠다. 친해져야지.
일단 대충 이렇다. 그러나 그냥 이렇게 수치형을 냅두는 것보다는 아예 범주형으로 따로 구분하는 것도 유의미할 것 같다. 바이닝을 해보는 것도 좋을 듯. 그러나 일단 모델이 직접 학습을 하게 놔두는 것도 하나의 방법이다.
01은 수치형으로, 02는 범주형으로 데이터를 추가한 파일이다.
수치형으로 했을 때의 상태. 원활하게 결과가 나와주지 않는다. interaction을 뺀 것에 대한 차이일 수도 있겠다. 조금씩 valid acc가 오르기는 하는 것으로 보이지만, 그 속도는 매우 느리다. 범주형으로 하려 하자
다음과 같은 문제가 발생했다. 차원이 잘못 들어온 문제라는 건데, 아무래도 맞지 않는 차원끼리 붙이고 있었던 것은 아닐까?
일단 interaction 남긴 것에 내 수치형을 추가만 해서 하는 방식으로.
바닐라도 돌려봤다. 그래도 없는 것보다는 나은가보다.
이쯤에서 잠시 드는 의문. Z표준화는 꼭 필요한 것인가? 없으면 스케일링으로 인한 변화가 있을까?
오호.. 확실하게 차이가 나고 있다. Z표준화는 분명 의미가 있었던 것으로 하자.
데일리 스크럼
train과 inference가 같이 이뤄진다면? 굳이 파일이 나뉠 필요도 없다.
catboost 적용. 따로 디렉을 나눠서 부스트 모델 사용할 수 있게 하기.
교차 검증을 할 때. 학습 데이터에 있는 값만을 피쳐 엔지니어링으로 고민할 것인가? 가령 테스트에 있는 값이 사용돼야만 피쳐 엔지니어링이 가능할 수도 있다. 그렇게 될 경우에는 정답 여부가 -1로 처리된 놈들을 빼야 할 텐데, 매번 빼기만 할 경우 문제가 발생하기도 한다. 바로 해당 행에 피쳐가 결측으로 들어가는 케이스이다. 충분히 채울 수 있는 케이스임에도 결측으로 들어가는 문제가 발생할 가능성이 있다.
이를 해결하기 위해서는 처음부터 완전히 학습데이터만 이용하는 방법이 있다. 이용하여 모델을 개선하고, 최종적으로 학습할 때는 테스트 데이터까지 활용하여 추론을 진행한다. 사실 이렇게 생각을 해도 여기에서 다시 한번 생각할 지점은 발생한다. 여전히 -1이 들어간 행에 대해서 어떻게 해야할 지에 대해서는 정해야 하기 때문이다. 게다가 이쪽은 사용되는 데이터의 차이로 인해 처음과 다른 결과가 나올 수 있다는 것도 하나의 문제점이 될 수 있다(오버피팅에 의해 발생하는 문제라고도 볼 수 있을 듯).
그러나 이미 대회에서 어느 정도의 leakage를 허용했고, 테스트 데이터를 사용하는 것이 문제가 없는 이상, 다 해보면 되지 않나. 너무 고민만 하다가 출발을 못하는 경우도 있다. 정말 그러한 피쳐를 추가할 때 고려하면서 주석으로 상세하게 설명을 해주면 되지 않을까.
컴퍼니데이 - 게임듀오
게임듀오. 라이브 서비스 중인 게임 외에도 준비하고 있는 프로젝트도 존재한다. 대체로 채용 사이트에서 전부 확인할 수 있다.
데이터 팀. 인게임 데이터 분석. 유저 행동 데이터. 재화의 흐름을 분석. 이러한 분석을 통해 솔루션을 제시. 필요한 데이터를 수집하고, 수집된 데이터를 가공하는 일도 함. 단순 보고형 분석보다는 실제 게임 내의 개선을 이끄는 행동적 분석이 필요함.
모두가 활용 가능한 데이터 대시보드를 제작한다. 다양한 로그를 모으고 가공/집계하며 데이터 창고를 구축한다.
A/B 테스트. 어떤 쪽에서 더 좋은 결과가 나오는지.
유저 프로파일링을 통해 유저 성향을 분류하고 개인화 서비스를 제공한다.
데이터 분석에 머신 러닝을 활용하고 있으며, 실제 서비스화 가능한 모델을 추구하고 있다.
게임을 좋아하고, 데이터 분석을 좋아하는 사람이라면 환영이다!
수익창출은 인게임 상점구매를 통해 이뤄진다. 소수 광고 수익 역시 존재한다.
플레이타임이 짧은 게임은 매출의 지속적 성장이 어려울 수 있다에 대하여. 게임 내에 플레이 시간이 긴 유저가 꽤 많다.
게임 도메인에서 어떻게 AI 가 활용될 수 있는가? 크게 3가지. 재미, 비용 절감, 유저 이해. AI기반으로 비전모델을 만들거나, 강화학습을 통해 레벨 디자인이나 QA 자동화. 이상치 탐지를 통해 어뷰징 감지.
사내 스터디가 존재하며, 오전 시간을 활용한다. 알고리즘 컨테스트도 있다.
어떤 데이터가 수집되는가? 유저 행동 데이터. 서버에서 발생되는 로그.
비전공자라고 배재되지는 않는다. 도메인 지식은 다양하게 활용될 수 있기 때문이다. 그래도 통계, 수학에 대한 공부를 게을리하지 않으면 안 된다. AI와의 직무 연관성은 어떠한가?
게임에 대해서 더 준비하는 과정이 필요하다. 게임에 대한 인사이트를 포폴에 녹일 필요가 있다.
하루에 쌓이는 데이터는 대략 4,5천만 건. 더 수집될 여지도 존재한다.
데이터 분석 팀의 규모가 크지는 않다. 다양한 게임을 분석하고 있다. 규모가 커지고, 니즈가 많아진다면 분석도 세분화될 것.
과거 제가 게임을 했던 전적을 미루어 생각해보면, 아이템 추천은 사실 유저가 게임 내 전반적인 컨텐츠를 이미 꿰뚫고 있다면 크게 유의미하지 않을 수도 있다고 생각합니다. 모든 아이템의 정보와 특징을 알고 있다면 유저가 직접 아이템을 당겨오면 되기 때문입니다. 그렇다면 이러한 추천의 효용이 떨어질 수도 있다고 생각하는데, 혹시 추천을 통해서 어떤 비즈니스적 가치를 창출하거나 가시적인 변화를 얻은 케이스가 있는지 궁금합니다.게임 내에서의 아이템 추천은 얼마나 게임에서 유의미한 결과를 이끌어낼 수 있을까요?
아이템 추천은 사실 두 가지로 나눌 수 있다.
기존의 아이템에 대한 조합. 조합이 다양하게 가능할 때 경우의 수가 많이 나올 수 있다. 이때 추천을 해주는 것이 가능하다는 것.
다른 상품 구매 유도. 필요할 것이라는 예측을 하면서 적절한 가격에 추천하는 것. 인센티브를 주면서 .
전자를 룰 기반이 아니라 추천시스템을 기반으로 할 수 있을 수도 있고, 후자는 구매 상품을 만들 때 고려할 수 있는 여지가 있다. 사실 후자는 유저에게 추천하는 게 아니라 개발사에 추천을 하는 정도가 될 수 있을 것.
근데 전자는 사실 룰 기반으로 하는 게 더 낫지 않나 하는데.. 보통 이런 건 최적의 세팅이 존재하니까. 그리고 그것을 통상 유저가 바라기도 한다. 조합은 맘대로 할 수 있어도 대중적인 픽이나 최상의 조합.
게임의 유저가 모두 모든 컨텐츠를 알고 있지는 않으며, 그렇기에 추천이 의미가 있을 수 있다.
나로서는 굉장히 내 꿈에 맞닿아있던 컴퍼니데이였기에, 조금이라도 뭔가를 더 들어보고 싶었다. 과연 내가 준비하는 것은 회사에서 도움이 될 수 있을 만한 종류의 것인지. 어떻게 추천 시스템이 게임에서 적용될 수 있는지. 추가적인 질문을 하고 싶었는데 조금 아쉽네. 시간이 더 있었더라면!
컴퍼니데이 - 아트 랩
인공지능과 로봇공학 기술로 뷰티 산업을 혁신하는 것이 목표. 피부의 고민을 핸드폰으로 해결할 수 없을까! 두 가지 서비스 중. SKINLOG라는 앱으로 정보를 수집한다. 피부를 사진으로 찍고, 그것을 통해 필요한 화장품을 추천하는 시스템.
데이터가 있어야 ai만들고, 그거로 서비스하고, 그렇게 더 데이터를 얻고. 이 선순환을 만드는 방법! 일단 앱으로 정보를 모으자! 초기에는 피부 기록을 도와주는 앱에서 현재는 피부 관리를 도와주는 앱으로 성장. 미래에는 피부 관리의 시작과 끝의 솔루션을 제공하는 앱을 제공하는 것이 목표.
데이터는 사진만으로 수집함. 사진 한 장 만으로는 원활한 파악이 힘들었다. 이를 통해 데이터를 구축하고, 모델을 만들었다.
이후 ai 서비스를 고도화하기 위해 테스트셋과 지표를 어떻게 구해야 하는지에 대해서도 고민이 많았다.
레이블러를 구하여 이들을 통해 데이터를 가공함. 그러나 어느 정도는 주관성이 개입되기도 하는 영역이라 완전히 공정한지에 대해 아직도 고민하고 있는 사항. 현재는 전문의 4명이 투입되어 같은 얼굴에 대해 레이블링을 진행한다.
점차 데이터가 새로운 종류가 들어오기 시작함. 트러블이 많은 얼굴이라던가.
서비스 중인 ai모델이 3, 개발 중인 모델이 2. 데이터에 흥미로운 지점이 많아 대학원과 지속적으로 협업을 진행하고 있다.
아트랩에서의 인재상. 실제 서비스에 관심이 많고, 문제 제기 능력. 전체 과정을 꼼꼼하게 진행해본 사람.
피부평가와 트러블 디텍션, 촬영 보조 알고리즘 일부(robust할 수 있도록 촬영 각도와 거리를 제한하고 노이즈가 끼지 않도록 제한을 두는 것을 도와주는 알고리즘).
촬영 기기가 다양해서 결과에 노이즈도 많고 로부스트하지도 않다.
문제 설정이 가장 중요하다. 문제 설정은 고객의 목소리에 귀를 기울여야 한다. 비단 ai만을 활용하겠다는 방향으로 접근하지는 않는다.
B2B, B2C용어의 뜻과 차이점 정리 수익 창출 모델에 대한 이야기에서 잘 모르는 용어가 있어서 검색을 해봤다.
피어세션
아까 처음으로 해본 디버깅을 여기에 적용시켜보는 중. 는 성훈이 형에게 간단하게 연락을 받아서 쉽게 교정을 할 수 있었다. 수치형이 아예 없으면 안 되기 때문에 임시로라도 하나를 추가시켜야 한다는 것!
그 사이에 성훈이 형은 이미 라이트닝과 완드비를 어느 정도 코드에 적용시켜서 우리가 FE를 하는 것을 편하게 만들어주었다. 시간 나면 sweep까지 알아본다고 하는데, 내가 알기로 sweep은 하이퍼 파라미터 최적값을 찾아주는데 도움을 준다. 피쳐 별 중요도를 파악할 방법은 없을까? catboost는 그런 것을 분명 제공하는 듯한데, 다른 것들에서는 확인할 방법이 없으려나.
wandb를 사용하면서, 드디어 범주형 데이터를 사용할 수 있게 됐다. 확실하게 파악은 안 되지만, 범주형으로 했을 때 결과가 안 좋아 보이기도 한다.
확인해보니까 분명 wandb에 로그가 남고는 있지만, 이상하게 팀 차원의 공간이 아니라 내 공간에 남고 있다. 이를 해결하기 위해 물색 중.
확인해보니 wandblogger가 작동하거나, wandb.init이 작동하거나. 계속 둘 중에 하나만 작동하고 있다. init을 더 찾아보니 logger에서 하는 일을 할 수 있는 것 같기도 하다. 인자가 거의 일치하는 것 같은데.. 그렇다면 그냥 init을 쓰지 않고 logger에 담으면 되는 것 아닐까? 결국 요지는 entity에 팀이름을 명시해주는 것이잖냐.
두런두런
시간을 왜 효율적으로 사용하지 못 할까? 공부할 양이 많아서 그런 것일 수도 있지만, 낭비하는 시간이 많아서 그런 것일 수도 있다. 공부할 양이 많은 건 왜? 이해하는데 시간이 걸려서? 필기에 시간이 더 걸려서?
집중할 곳을 확실하게 찾아서 선택하라.
낭비하는 시간이 많을 수 있다. 여유가 생길 때 다른 것을 한다던가, 졸려서 잠이 온다던가.
시간의 기준을 세우고 확실하게 계획을 세우자. 여유타임을 둬서 계획대로 하지 못할 때 쓸 시간을 잡아라.
일 단위로 보면 성장 곡선이 잘 느껴지지 않을 수도 있다. 오히려 스무딩을 해라.
번아웃이 올 수도 있다. 솔직하게 인정하고 회복에 전념하라.
다른 사람이 더 나아가는 것 같다면, 과감하게 물어보고 배우자.
모든 내용을 100퍼센트 받아들이는 것은 쉽지 않다. 조금 목표를 내려두는 것도 필요하다.
자기 배반 활동의 반복을 주의하라. 타인의 요청을 묵인하는 것. 이것이 반복되면 내 행동은 정당화하고 타인의 잘못을 찾는데 급급하게 된다. 이것은 없을 수는 없지만, 이렇게만 되는 것을 주의하라는 것.
대화를 폭력적이지 않게 해보자.
나중에 생각을 정리해서 말하는 것도 좋지만, 효율적으로 처음부터 말을 나눠서 이쁘게 말해보자! 생활에서 중재자가 항상 있어줄 수는 없다. 그러니 처음부터 갈등 상황을 만들지 않고 공감을 하라는 것.
이력서란? 회사에 나를 알리는 제안서이다. 나를 고용해달라! 누가 이력서를 보는가? 면접관. 이들은 대체로 일을 하면서 면접도 보게 된다. 그래서 빠르게 내용을 파악하는 역량을 자연스레 가지게 되는데, 이들에게 어필을 하기 위해서는 가독성과 레이아웃, 분량을 고려해야 한다. 면접관이 중요하게 생각하는 정보를 잘 담아주는 것이 좋다.
그럼 무얼 중요하게 생각하는가? 내가 어떤 사람인지! 삶의 지도를 통해서도 볼 수 있는 메타 정보. 대체로 어떤 업무와 어떤 프로젝트를 했는지를 중점적으로 본다.
보는 사람을 배려하는 이력서를 쓰라. 쓸모 없는 정보는 줄여라.
노션도 좋은 수단이다. 다만 pdf로 바꿀 때 깨지는 것만 유의하라.
나열식으로 글을 쓰지 말고 그것에 스토리를 얹어라.
역량 기반의 이력서. 궁금할 만한 내용을 먼저 보여주기. 내가 무엇에 집중했는지!
간단한 연대기만 하는 게 아니다. 역량을 기반으로 채워나가라.
숫자도 나를 어필하는 중요한 요소이기는 하다. 아무래도 보기가 좋다! 자신의 선택의 이유를 제시하라. 선택지에서 고민의 흔적이 남는 기록을 남기라는 것.
이력서. resume, cv. 2쪽 가량의 이력서를 resume. 포폴이 다 들어가면 보통 cv라 부르는데, 크게 구분되지는 않으니 신경쓸 것까지는 없다는 듯.
이후 공부
순서대로 1,2,3,4. 흠. 내가 추가한 피쳐는 유의미한 결과를 내뿜고 있는 것 같지는 않다.
이후에 성훈이 형이 sweep 사용법을 알아내어 우리에게 공유를 해줬다.
필요한 인자들을 wandb에 올려두고, sweep을 만들면
대충 이런 식으로 만들 수 있는 구조.
시험 속에 다른 태그들이 존재한다. 문제의 갯수가 많은 시험에 대해서만 태그들이 다양하게 존재할 가능성을 생각해봤으나 그렇지는 않은 듯하다. 태그 자체가 고급, 심화, 기초 등의 요소를 가질 수도 있을까?
잘 모르면 그냥 전부 찍어봐야지. 근데 보다보니 그래도 한 시험에는 대체로 한 태그만 존재하는 경우가 상당히 많다.
대단원 별로 정답률도 따져보자.
---
회고 및 다짐
팀원들과 이야기하면서 하는 것은 좋지만, 스피드가 내 페이스보다 빨라서 기록을 못 하거나 못 따라가는 것이 조금 아쉽다. 대신 그만큼 내가 배우는 것도 많다고 생각한다. 와 근데, 깃 만질 때마다 왜 이렇게 머리가 백지장이 되는지..😭 피타입 형마냥 신경다발이 끊겨나가는 기분이냐... 이또한 계속 하면서 익숙해져야 할 영역인 것 같다.
오늘 두런두런 시간 때도 나왔던 이야기지만, 남들보다 느린 것에 지나치게 스트레스 받지 말고 배움의 기회로 삼으면 좋을 것이다. 다만 내가 기여를 못하고 있는 것 같아서 뭔가 압박감이 느껴지는 건 어쩔 수 없는 것 같다. 내가 해보려던 것들이 이미 뚝딱 해결되고 있는 느낌.. 이미 있는 실력 차는 좁힐 수 없다. 그렇다면 열심히 따라가면서 배우는 수밖에. 더 열심히 하자. 더. 정말 중요한 건 꺾이지 않는 마음이다. 잠깐의 좌절감은 있을 지언정, 그것에서 절대 내려놓거나 머무르려는 마음만은 가지지 않을 것이다. 최소한 그건 내가 컨트롤할 수 있는 영역이다.
다짐은 이걸로 되었다. 모르는 것들은 열심히 배우고, 내가 도전해볼 수 있을 만한 것들을 한번 해보자고.
우리가 해야하는 것은 시계열 모델만이 아니다. 부스팅 모델과 그래프 기반 모델도 해야만 한다. 그래프는 다음 주에 본격적으로 파보기로 했고, 부스팅은 이번 주에 마무리 짓는 느낌으로 접근하려고 하고 있다. 부스팅 모델은 저번 대회에서 봤던 기억이 있어 내가 접근해볼 수 있을 것으로 생각한다.
'일지 > 네부캠 AI 4기(22.09.19~23.02.14)' 카테고리의 다른 글
20221125금-dkt10,스미5 (0) | 2022.11.26 |
---|---|
20221124목-dkt9 (9) | 2022.11.25 |
20221122화-오프라인팀미팅, 멘토링, 오아, dkt7 (4) | 2022.11.23 |
20221121월-dkt6, EDA (2) | 2022.11.22 |
20221120일-밑러닝 준비, 팀미팅, 리트코드 (0) | 2022.11.21 |