신규 및 주니어 데이터 과학자를위한 조언

몇 년 전에 내가 스스로에게 말한 것

이미지 크레디트 : Alice Truong

자극

2 년 전, 업계에서 데이터 과학을 수행 한 경험을 공유했습니다. 글은 원래 트위터에서 2 년간 트위터를 축하하기 위해 개인적으로 반영된 것이었지만, 나는 많은 주목받는 데이터 과학자들에게 매우 유용 할 수 있다고 생각하기 때문에 대신 미디엄에 게시했습니다.

2017 년을 앞두고 에어 비앤비에서 2 년이 조금 넘게 근무하고 있으며 최근에는 특정 데이터 전문 지식을 획득했음을 알리는 데 사용되는 업계 데이터 선임 과학자가되었습니다. 지금까지의 여정에 대해 생각하고 다음에 어떤 일이 있을지 상상하면서, 나는 경력의 초기 시절에 알고 싶었던 몇 가지 교훈을 다시 한 번 적었습니다.

이전 게시물의 의도 된 독자가 야심 찬 데이터 과학자와 완전히 새로운 분야의 사람들을위한 것이라면이 기사는 이미 현장에 있지만 시작하는 사람들을위한 것입니다. 저의 목표는이 게시물을 제가 배운 중요한 것들에 대한 알림으로 사용하는 것뿐만 아니라 다른 사람들이 자신의 DS 경력에 착수 할 때 영감을주는 것입니다!

누구의 비판적인 길을 가고 있습니까?

뛰어난 학업 및 다재다능한 블로거 인 Philip Guo는 여러 해 동안 학생, 인턴 및 연구원으로서 다양한 멘토와 교류 한 경험을 반영했습니다. 그는“Who Critical Path Are You On?”이라는 오점에서 다음과 같이 관찰했습니다.

내가 경력 발전 또는 성취를 위해 멘토의 중요한 길을 가졌다면 성공하기 위해 필요한 도움을 받기 위해 열심히 싸울 것입니다. 반대로, 멘토의 결정적인 길에 있지 않았다면, 나는 보통 자신을 위해 싸워야했습니다. […] 누군가의 결정적인 길을 갔다면, 성공을 자신의 것으로 묶도록 강요하여 최대한 열심히 노력하도록 동기를 부여 할 것입니다.
이미지 크레디트 : The Icefields Parkway // Daniel Han

이 작업은 매우 직관적이며 프로젝트를 선택하거나 팀을 선택하거나 어떤 멘토 나 회사를 평가할 때 경력 초기에 내부화했으면합니다.

예를 들어 Twitter에서 머신 러닝에 대해 더 많이 배우고 싶었지만 팀원들은 데이터 중심적이지만 실험 설계 및 제품 분석에 중점을 둔 데이터 과학자가 필요했습니다. 나의 최선의 노력에도 불구하고, 나는 종종이 지적 욕구를 우리 팀의 중요한 프로젝트와 결혼하기가 어렵다는 것을 알게되었습니다.

그 결과, 에어 비앤비에 도착했을 때 ML이 성공에 중요한 프로젝트 / 팀에 참여하는 데 집중하기로 결정했습니다. 관리자와 협력하여 몇 가지 유망한 기회를 확인했습니다. 그 중 하나는 Airbnb에서 리스팅의 평생 가치 (LTV)를 모델링하는 것입니다.

이 프로젝트는 비즈니스 성공뿐만 아니라 경력 개발에도 중요했습니다. 기계 학습 모델을 구축하는 워크 플로우에 대해 많은 것을 배웠으며, 구체적인 비즈니스 문제를 해결하는 맥락에서 학습 이외의 다른 방법을 배울 수 없었습니다.

의심 할 여지없이, 나는 나의 열망과 기술을 쌓고 싶었던 프로젝트를 발견하게되어 매우 운이 좋았습니다. 멘토의 중요한 길에서 프로젝트를 선택하는 프레임 워크는 시간이 지남에 따라 직장에서 적합한 프로젝트와 열망을 일치시키는 데있어“운이 좋을”수 있습니다.

내가 배운 원리 : 우리 모두는 우리가 발전시키고 자하는 기술과 추구하고자하는 지적 이익을 가지고 있습니다. 우리의 목표가 현재 환경의 중요한 경로와 얼마나 잘 조화를 이루고 있는지 평가하는 것이 중요합니다. 귀하와 가장 중요한 경로를 가진 프로젝트, 팀 및 회사를 찾으십시오.

문제에 대한 올바른 도구 선택

에어 비앤비 이전에는 대부분의 직업 생활에서 R과 dplyr로 코딩했습니다. LTV 프로젝트를 시작한 후 곧 결과물이 분석 코드가 아니라 생산 기계 학습 파이프 라인이라는 것을 깨달았습니다. Python을 사용하여 Airflow에서 복잡한 파이프 라인을 구축하는 것이 훨씬 쉽다는 점에서 딜레마에 직면했습니다. R에서 Python으로 전환해야합니까?

이미지 출처 : quickmeme.com (R 또는 Python 외에도 Excel은 심각한 경쟁자입니다 )

많은 사람들이 어떤 언어를 선택할지 결정하기 위해 고군분투했기 때문에 이것은 데이터 과학자들 사이에서 매우 일반적인 질문으로 판명되었습니다. 저에게는 한 번에 다른쪽에 투입된 전환 비용이 분명히 있습니다. 나는 장단점을 이해하기 위해 장단점을 겪었지만, 그것에 대해 더 많이 생각할수록 의사 결정 마비의 함정에 빠지게되었습니다. (이 개념을 보여주는 재미있는 대화가 있습니다). 결국 Reddit 에서이 응답을 읽은 후이 마비를 피했습니다.

어떤 프로그래밍 언어를 배울 지 생각하지 말고 어느 언어가 문제에 적합한 DSL (Domain Specific Languages)을 제공하는지 생각하십시오.

도구의 적합성은 항상 상황에 따라 다르며 문제에 따라 다릅니다. 내가 파이썬을 배워야하는지 여부가 아니라, 파이썬이 직업에 적합한 도구인지 여부입니다. 이 시점에서 더 자세히 설명하기 위해 몇 가지 예가 있습니다.

  • 최신의 최신 통계 방법을 적용하는 것이 목표라면 R이 더 나은 선택 일 것입니다. 왜? R은 통계 학자와 통계학자를 위해 만들어 졌기 때문입니다. 오늘날 학자들은 논문뿐만 아니라 R 패키지에도 연구 결과를 발표합니다. 매주 CRAN에서 사용할 수있는 흥미로운 새로운 R 패키지가 많이 있습니다.
  • 반면, 파이썬은 범용 프로그래밍 언어이기 때문에 프로덕션 데이터 파이프 라인을 구축하는 데 좋습니다. 예를 들어 Python UDF를 사용하여 scikit-learn 모델을 쉽게 래핑하여 Hive에서 분산 스코어링을 수행하고 복잡한 논리로 Airflow DAG를 오케스트레이션하거나 Flask 웹 앱을 작성하여 브라우저에서 모델의 출력을 보여줄 수 있습니다.

내 특정 프로젝트의 경우 프로덕션 기계 학습 파이프 라인을 구축해야했으며 파이썬에서 작업하면 인생이 훨씬 쉬워 질 것입니다. 결국 나는 소매를 감아이 새로운 도전을 받아 들였다!

내가 배운 원리 : 단일 기술이나 프로그래밍 언어를 고치는 대신 문제를 해결하는 데 도움이되는 최고의 도구 나 기술이 무엇인지 자문 해보십시오. 문제 해결에 집중하면 도구가 자연스럽게 나옵니다.

학습 프로젝트 구축

비록 데이터 과학 작업을하기 위해 파이썬을 사용하지는 않았지만 다른 능력으로 언어를 가지고 놀았습니다. 그러나 나는 파이썬 기초를 제대로 배운 적이 없습니다. 결과적으로 코드가 클래스로 구성 될 때 무서웠으며 __init__.py가 무엇에 사용되는지 항상 궁금했습니다.

이번에는 기본 사항을 제대로 배우기 위해 Anders Ericsson의 심의 실습에 관한 연구에서 영감을 얻었습니다.

고의적 연습은 일반적으로 교사가 개인의 성과의 특정 측면을 효과적으로 개선하기위한 목적으로 설계된 활동입니다.

내가 선생님 인 것을 감안할 때, 에릭슨 박사의 통찰은 매우 도움이되었습니다. 예를 들어, 파이썬에서 ML을 수행하는 데 가장 적합한 자료를 선별하여“학습 프로젝트”를 시작했습니다. 이 과정은 제가 개인 커리큘럼에 정착 할 때까지 몇 주가 걸렸습니다. 경험 많은 Pythonistas에게 내 계획을 검토하도록 요청하여이 커리큘럼을 테스트했습니다. 이 모든 사전 작업은 내가 올바른 학습 경로에 있도록 보장하기위한 것입니다.

여기 내 개인 커리큘럼을 엿볼 수 있습니다

명확하게 정의 된 커리큘럼이 있으면 다음 전략을 사용하여 고의적으로 업무를 수행했습니다.

  • 반복적으로 연습 : 나는 스스로 R 대신에 파이썬에서 평범하고, 미션 크리티컬 한 분석을 수행하도록 강요했다. 이것은 처음에는 생산성을 떨어 뜨 렸지만, 필자는 팬더의 기본 API에 익숙해 지도록 강요받지 않았다. 긴급한 마감일을 맞이하십시오.
  • 피드백 루프 만들기 : 다른 사람의 코드를 검토하고 적절한 경우 작은 버그를 수정할 수있는 기회를 찾았습니다. 예를 들어, 내부 파이썬 라이브러리를 사용하기 전에 어떻게 설계했는지 이해하려고 노력했습니다. 내 자신의 코드를 작성할 때도 여러 번 리팩토링하고 모든 사람이 더 읽기 쉽게 만들려고 노력했습니다.
  • 청크와 리콜로 배우기 : 매주 말에 나는 그 주에 공부 한 중요한 자료, 배운 개념, 그주의 주요 테이크 아웃을 포함하여 매주 진도를 기록했습니다. 내가 배운 자료를 상기 시켜서 개념을 더 잘 내재화 할 수있었습니다.

천천히 그리고 점차적으로 매주 나아졌습니다. 그래도 쉽지는 않았습니다. 두 언어 사이를왔다 갔다하면서 R과 Python에서 기본 구문을 찾아야 할 때가있었습니다. 즉, 이것은 장기 투자이며 ML 프로젝트에 참여하면 배당금이 지급됩니다.

내가 배운 원칙 : 프로젝트에 뛰어 들기 전에 많은 현장 실험의 지원을 받으면 미리 계획하면보다 신중하게 연습 할 수 있습니다. 반복, 청킹, 리콜 및 피드백 받기는 학습을 강화하는 가장 유용한 활동 중 하나입니다.

숙련 된 데이터 과학자와 파트너십

의도적 인 실천의 핵심 요소 중 하나는시기 적절하고 실행 가능한 피드백을받는 것입니다. 코칭이나 타깃 피드백 없이는 위대한 운동 선수, 음악가 또는 수학자가 위대함을 달성 할 수 없습니다.

내가 강한 사고 방식을 가진 사람들에게서 관찰 한 한 가지 공통적 인 특징은 일반적으로 자신이 모르는 것을 인정하는 것을 부끄러워하지 않고 끊임없이 피드백을 요청한다는 것입니다.

지금까지 저의 학업 및 전문 경력을 되돌아 보면 과거에는 여러 번 자신의 질문을 스스로 검열했습니다. 그러나 시간이 지남에 따라 나는이 태도가 오히려 해롭다는 것을 깨달았습니다. 장기적으로, 대부분의 자기 검열 사례는 수치심보다는 학습의 기회가 빠졌습니다.

이미지 출처 :에 토피아 – 성장의 사고 방식이 중요합니다!

이 프로젝트 이전에는 기계 학습 모델을 프로덕션 환경에 적용한 경험이 거의 없었습니다. 내가 프로젝트에 대해 내린 많은 결정 중 가장 좋은 결정 중 하나는 ML 인프라에 대해 거의 알지 못하지만 배우고 싶은 공동 작업자에게 조기에 그리고 뻔뻔스럽게 선언하는 것이 었습니다. 그러나 나는 더 많은 지식을 얻었을 때 팀에 도움이 될 것이라고 약속했다.

사람들이 일반적으로 지식을 공유하는 것을 좋아하기 때문에, 특히 멘토 쉽이 궁극적으로 이익을 얻는다는 것을 알고 있기 때문에 이것은 매우 좋은 전략으로 밝혀졌습니다. 아래는 파트너의지도 없이는 그렇게 빨리 배우지 못한 몇 가지 예입니다.

  • Scikit-Learn 파이프 라인 : 공동 작업자는 Sklearn의 파이프 라인 구성을 채택하여 코드를 더 모듈화 할 수 있다고 제안했습니다. 기본적으로 파이프 라인은 교육 및 스코어링에서 일관된 일련의 데이터 변환을 정의합니다. 이 도구를 사용하면 코드가 더 깨끗하고 재사용 가능하며 프로덕션 모델과 더 쉽게 호환됩니다.
  • 모델 진단 : 예측 문제에 시간이 걸리기 때문에 공동 작업자는 미래의 데이터를 사용하여 과거를 예측할 위험이 있기 때문에 일반적인 교차 검증이 작동하지 않는다고 가르쳤습니다. 대신 시계열 교차 유효성 검사를 사용하는 것이 더 좋은 방법입니다. 또한 리프트 차트와 같은 다양한 진단 기술과 SMAPE와 같은 다양한 기타 평가 지표를 배웠습니다.
  • 기계 학습 인프라 : ML 인프라 엔지니어의 도움을 받아 virtualenv를 통한 패키지 종속성 관리, 산세를 사용하여 모델을 직렬화하는 방법 및 Python UDF를 사용하여 스코어링시 모델을 사용 가능하게하는 방법에 대해 배웠습니다. 이 모든 것은 이전에는 몰랐던 데이터 엔지니어링 기술입니다.

더 많은 새로운 개념을 배우면서 자신의 프로젝트에 적용 할 수 있었을뿐만 아니라 머신 러닝 인프라 팀과의 토론을 유도하여 데이터 과학자를위한 더 나은 ML 도구를 만들 수있었습니다. 나와 공유 한 지식이 나를 더 나은 파트너와 공동 작업자로 만들었 기 때문에 선순환이 만들어집니다.

내가 배운 원리 : 장기적으로, 대부분의 자기 검열 사례는 수치심보다는 학습 기회를 놓친다. 배우고 싶은 욕망을 조기에 그리고 뻔뻔스럽게 선언하고 나아질수록 자신을 유용하게 만듭니다.

교육과 복음화

모델을 프로덕션 환경에 더 가까워지면서, 내가 얻은 많은 기술이 우리 팀의 다른 데이터 과학자들에게 매우 귀중한 것으로 나타났습니다. 몇 년간 대학원생이었던 저는 항상 제가 가르치는 것에 대한 열정이 있다는 것을 알았고 교사가되었을 때 항상 그 주제에 대해 더 많이 배웠습니다. 노벨 물리학상 수상자이자 경이로운 교사 인 Richard Feynman은 교수에 대한 그의 견해에 대해 다음과 같이 말했습니다.

Richard Feynman은 한때 Caltech 교수진에게 왜 절반의 입자가 Fermi Dirac 통계를 준수하는지 설명하도록 요청했습니다. 그는 도전에 부딪히면서“신입생 강의를 준비 할 것입니다.”라고 말했습니다. 그러나 며칠 후 그는 교수진에게 다음과 같이 말했습니다.“알 수 없습니다. 신입생 수준으로 줄일 수 없었습니다. 그것은 우리가 정말로 이해하지 못한다는 것을 의미합니다.”

주제를 핵심으로 줄이고 다른 사람들이 접근 할 수 없게한다면, 실제로 이해하지 못하는 것입니다. 이러한 기술을 가르치면 이해력을 향상시킬 수 있다는 사실을 알고 모델 구현을 신중하게 문서화하고 점심을 배우며 다른 사람들이 도구를 사용해 보도록 권장 할 수있는 기회를 찾고 있습니다. 복음화가 인지도를 높이고 팀 전체에서 도구 채택을 유도하는 데 도움이되기 때문에 이는 윈-윈이었습니다.

9 월 말부터 내부 ML 도구에 대한 일련의 수업을 준비하기 위해 내부 Data University 팀과 공동 작업을 시작했습니다. 나는 이것이 어디로 갈지 확실하지 않지만 에어 비앤비에서 더 많은 ML 교육을 추진하는 것에 매우 흥분합니다.

마지막으로 Hadley Wickham의 트윗으로이 섹션을 끝내겠습니다.

내가 배운 원리 : 교육은 과목에 대한 이해를 테스트하고 기술을 향상시키는 가장 좋은 방법입니다. 소중한 것을 배우면 다른 사람들과 공유하십시오. 기존 도구의 작동 방식이 매우 중요하다는 점을 설명하면서 항상 새 소프트웨어를 만들 필요는 없습니다.

K 단계에서 K + 1 단계에 대해 생각하십시오

내 결과물에 초점을 맞추는 것부터 ML 인프라 팀과의 파트너 관계를 맺고 다른 데이터 과학자가 ML 도구에 대해 더 많이 배울 수 있도록 가르치고 가능하게하는 것에 이르기까지, 원래 프로젝트의 범위가 몇 개월보다 훨씬 더 큰 것이 정말 기쁩니다. 전에. 그럼에도 불구하고, 나는 이것을 처음에는 예상하지 못했습니다.

이 프로젝트의 발전에 대해 생각할 때, 이전 프로젝트와 다른 점은 항상 현재 상태에 약간의 불만이 있었고 항상 조금 더 나아지기를 원했습니다. 이것을 특징 짓는 가장 웅변적인 방법은 Claude Shannon의 에세이입니다 :

이미지 출처 : Rob Goodman의 Jimmy Soni의“A Mind at Play : Claude Shannon이 정보 페이지를 발명 한 방법”의 책 표지
“불만족이라는 생각이 있습니다. 이것은 세상에 대한 비관적 인 불만을 의미하는 것이 아닙니다. 우리는 상황이 마음에 들지 않습니다. 저는 건설적인 불만을 의미합니다. 아이디어는 다음과 같이 표현 될 수 있습니다. 이것은 괜찮습니다. 그러나 나는 일이 더 잘될 수 있다고 생각합니다. 나는 이것을 할 수있는 더 좋은 방법이 있다고 생각합니다. 상황이 조금 개선 될 수 있다고 생각합니다. 다시 말해서, 상황이 옳지 않게 보일 때 약간의 자극이 계속됩니다. 현재 과학자들의 불만은 훌륭한 과학자들에게 핵심 원동력이라고 생각합니다.”

결코 자격을 갖춘 과학자는 아니지만 (어쨌든 내 직책에 있음에도 불구하고) 약간의 불만족의 특성화가 프로젝트의 영향을 확장 할 수 있는지 여부를 분명히 밝히고 있다고 생각합니다. 프로젝트 전체에서 K 단계에있을 때마다 K + 1 단계 이상으로해야 할 일에 대해 자연스럽게 생각하기 시작했습니다.

  • “제작 모델을 구축하는 방법을 모르겠습니다. 어떻게 알아낼까요?”에서“공구를 개선 할 수 있다고 생각합니다. 여기에는 툴을 개선하는 방법에 대한 문제점, 제안 및 피드백이 있습니다.” 고객으로부터 ML 인프라 팀과의 파트너까지
  • “내가 능숙 해 지도록 도구를 배우자”에서“ML에 관심이있는 다른 모든 데이터 과학자들이이 도구를 더 쉽게 이용할 수 있도록하자”에서 파트너로부터 복음 전파자로 자신을 재구성했습니다.

나는이 사고 방식이 매우 도움이된다고 생각합니다. 좋은 취향과 약간의 불만족을 사용하여 지속성을 가진 진보를 촉진하십시오. 즉,이 불만족은 제조 될 수 없으며, 관심있는 문제에 대해서만 작업 할 수 있다고 생각합니다.

내가 배운 원리 : 프로젝트를 진행할 때 내면의 불만에주의를 기울이십시오. 다음은 프로젝트를 개선하고 다음 단계로 확장 할 수있는 방법에 대한 실마리입니다.

이별 생각 : 당신과 당신의 일

최근에 나는 해밍 코드와 해밍 거리를 포함한 그의 많은 과학적 공헌으로 잘 알려진 미국의 수학자 인 Richard Hamming의 강의를 보았습니다. 강의 제목은 You And Your Research라는 제목으로 Hamming 박사는“You And Your Career”로 이름을 바꿀 수 있다고 말했습니다.

그가 이야기를 들려 줄 때 몇 가지 중요한 점이 눈에 띄었습니다.

당신이하고있는 일이 중요하지 않고 중요하지 않을 것이라면 왜하고 있는가? 중요한 문제를 해결해야합니다. 나는 금요일 오후에 몇 년 동안 내 분야의 중요한 문제에 대해 생각했습니다. (제 근로 시간의 10 %입니다.)
중요한 문제에 대해 경고하겠습니다. 중요성은 결과가 아닙니다. 공격을받지 않았기 때문에 일부 문제는 중요하지 않습니다. 문제의 중요성은 대부분 문제를 공격 할 수있는 방법에 따라 다릅니다.
이 과정 전체에서 스타일과 맛에 대해 가르치려고하므로 문제가 옳은 시점, 문제가 옳은 시점, 문제를 해결하는 방법에 대해 알아볼 수 있습니다. 올바른 방법으로 적시에 올바른 문제를 계산하고 다른 것은 계산하지 않습니다. 아무것도.

해밍 박사가 중요성에 관해 말할 때, 그는 당신에게 중요한 문제를 의미합니다. 그에게는 과학적인 문제였으며, 많은 사람들에게는 다른 것이 었습니다. 또한 공격 계획을 세우는 것의 중요성에 대해서도 이야기했습니다. 계획이 없다면 문제는 중요하지 않지만 그 결과는 큽니다. 마지막으로, 당신은 당신의 독특한 스타일과 취향으로 그것을하는 것을 언급했습니다.

훌륭한 일을하기위한 그의 바는 매우 높지만 추구 할 가치가 있습니다. 중요한 문제를 발견하면 자연스럽게 문제를 개선하고 더 영향력을 행사하려고합니다. 그 중요성에 대해 다른 사람을 가르 칠 수있는 방법을 찾을 것입니다. 다른 위대한 사람들로부터 배우고 공예품을 만드는 데 시간을 할애합니다.

중요한 길에있는 당신에게 중요한 문제는 무엇입니까?

내 게시물을 검토하고 피드백을 주신 Jason Goodman과 Tim Kwan에게 감사의 말씀을 전합니다.