11 Fri
현업 실무자에게 배우는 Kaggle 머신러닝 입문
실제로 회사에서 진행하는 머신러닝 업무 프로세스
Raw한 데이터로부터 수집, 정리, 정제까지 해야하는 경우가 대부분
데이터만을 보고 중간에 의사결정이 언제든 바뀔 수 있다
프로젝트 중단도 가능
따라서, 중간 보고가 필수적이다
모델링 결과에 대해 비즈니스 적으로 의미가 있어야 하며 이를 도메인 전문가들에게 설득시켜야 한다
도메인 전문가의 제대로 된 동의를 얻지 못한 모델은 본격적으로 사용화되기 어렵다
개발한 ML 모델이
상용화되는 것은 또 다른 문제이다. 개발 이슈가 아주 많기 때문에 많은 지원이 필요하다
가장 중요한 것은 데이터, 두 번째로 중요한 것도 데이터
애초에 데이터가 부적합해서 시작하지도 못하거나 지연되는 경우가 매우 매우 아주 빈번히 많다
기획의 요구사항을 충족시키는 데이터나 데이터 feature가 raw데이터를 직접 보니 없는 경우
이미 존재한다고 생각했던 데이터 feature가 타 부서 입장에서는 중요하지 않은 feature여서 제대로 개발되지 않은 경우
데이터 feature는 존재하나 계속된 코드 버전업으로 인해 데이터 형태와 값이 계속 바뀌어 온 경우
수집한 데이터에서 발생할 수 있는 문제
일관성 없는 데이터
예외 값들에 대한 해석
0또는 -1, None, N/A, Nan에 대한 의미 파악
데이터 값이 밀림
중복
데이터 전처리 중에 발생할 수 있는 문제
전처리를 위해 하나의 파일이 아닌 여러 개의 파일을 참조하고 해석해야 하는 경우
Naive 하게 구현하면 한달~1년이 넘는 처리시간이 걸릴 수도 있다
데이터 관련 문제는 반드시 있을 수 있음을 미리 인지할 것
Kaggle/데이콘과 다르게, 실제 업무에서 중요하게 여기는 것은?
캐글/데이콘 등의 데이터 경진대회는 성능 지표를 제일 중요하게 여긴다
Accuracy, F1-score
성능 지표를 올리기 위해 마지막까지 경쟁이 치열
실제 업무에서는 0.05 ~ 0.1 정도의 성능 지표 차이는 결코 중요하지 않다
score 0.05를 올리는 것 보다 유용한 결론들이 더 많은 것이 중요하다
유용한 결론들은 비즈니스나 의사결정에 도움이 되는 데이터 분석 및 모델링 결과를 의미
어느 정도 사용할만한 실사용 성능이 나올 때 까지는 성능 지표를 개선하지만 그 이후에는 인사이트 분석에 집중
이 과정에서 ML 모델과 비즈니스를 잘 연관시켜 설득/발표하여야 하는데, XAI가 많이 사용된다
XAI : eXplainable AI, 설명 가능한 인공지능
두 경우, 다 모델의 강인함은 매우 중요하다
강인함 : 어떤 데이터셋에 적용하든지 준수하고 안정적인 성능
따라서 검증에 노력을 많이 기울인다.
머신러닝 엔지니어, 일잘러로 거듭나보자
데이터 수집 및 처리 과정에 대해 Data Engineer와 함께 이야기하자
머신러닝 과정에서 필요한 부분을 미리 조율할 것
때로는 아이디어도 제안 가능
머신러닝은 문제 정의에서부터 출발한다. 문제를 어떻게 정의하느냐에 따라 풀어가는 방향이 달라진다.
문제 정의가 잘못되면 이후의 접근법도 쓸모가 없어지는 경우 많다
머신러니으이 결과 모델이 비즈니스적으로 어떠한 의미를 가지는지, 처음부터 고민하자
제대로 된
문제를 잡더라도 비즈니스적으로도 의미가 있어야성과라고 할 수 있다.
다양한 모델링 및 기법 적용을 많이, 빨리 해야한다. 그리고 이를 잘 공유하고 방향성을 협의해야 한다
머신러닝 모델링은 중간 결과이지만 다른 동료들의 업무와 의사결정에 큰 도움이 되는 경우가 많다 => 공유할 것
더 똑똑하게 일 잘하는, 머신러닝 코드 만드는 방법
전처리 코드를 1회용으로 짜지 말고, 조금이라도 고민하여 쓸모 있게 짜보기
반대로 너무 처음부터 완벽한 코드를 짜려고 하면 안된다
전처리 코드는 1회성인 부분도 상당부분 존재하기 때문이다
소 잡는 칼을 닭 잡는 칼로 쓰지 말기
데이터 수집, 전처리를 많이 해 보면, 어느 정도 반복되는 패턴이 보이는데, 이것들을 모듈(라이브러리)화 하면 좋다
보통 Jupyter Notebook에서 프로토타이핑을 하고
완벽하게 모듈화 할 때는 Python IDE에서 개발한다
EDA 및 시각화 코드를 짜는 경우에도 고민해서 코드를 짜고, 반복해서 발생하면 모듈화 한다
한번 잘 만들어두면 feature나 컬럼명만 바꾸어서 사용해도 되는 경우가 아주 많다
계속 발전시킬 수도 있다
조금씩 쌓이는 재사용가능한 코드 / 모듈들은 모든 업무를 더 빠르게 처리할 수 있게 해준다
재사용 가능한 모듈들이 쌓여있는 A 엔지니어와 그렇기 않은 B 엔지니어의 생산성 차이는 매우 크다
학습을 수행하는 Training 코드는 꾸준히 사용하게 될 가능성이 높으므로, 미리 이를 염두해두기
바뀌는 주요 변수들 : Dataset, Epoch, Validation N-group, Model, Parameters, Features, etc
Training과 Validation, Parameter Optimization은 무수하게 많이 하기 때문에 반복작업에 대해서는 자동화 할 수 있는 부분은 자동화 하기
이미 만등러진 좋은 라이브러리나 프레임워크가 있을 가능성이 크므로 직접 개발하기 전 꼭 리서치 해보기
가장 바람직한 구조는
데이터-머신러닝 훈련-검증 & 최적화-시각화의 연속적인Pipeline을 자유자재로 뗏다 붙였다 할 수 있는 유연하게 수정이 가능한 코드업무 초반 보다는 프로젝트 서너개를 완료했을 무렵부터 고민해보기
가장 몸 값이 비싼 Role, 역량이 무엇일까?
DS/ML/SW End-to-End Engineer
Data Science, Machine Learning, SW개발에 대해 모든 과정을 이해하고 있는 인재
DS/ML Competition Winner, Optimization Professional
Optimization 관점에서 남들과 다른 탁월함을 보여줄 수 있는 인재
Machine Learning, Product S/W Engineer
머신러닝을 단순 연구로만 수행하는 것이 아니라 실제 제품에 이를 적용하고 운용해본 경험이 있는 인재
Last updated
Was this helpful?