소개
8년차 데이터 과학자, 데이터 엔지니어, 머신러닝 엔지니어로 근무했으며, 쏘카와 타다에서 데이터 분석, 데이터 엔지니어링 개발, 머신러닝 알고리즘을 개발했습니다.
카일스쿨 유튜브에 데이터 커리어 관련 영상을 꾸준히 올리고 있으며, 어떻게 해야 강의를 수강하신 분들이 더 좋은 커리어를 경험할 수 있을까?를 고민하며 자료를 만들고 있어요.
카일스쿨 유튜브 : https://www.youtube.com/c/kyleschool
기술 블로그 : https://zzsza.github.io/
인스타그램 : https://www.instagram.com/data.scientist/
대표 컨텐츠 : https://github.com/Team-Neighborhood/I-want-to-study-Data-Science
데이터 과학자가 되기 위해 진행한 다양한 노력들 : https://zzsza.github.io/diary/2019/04/05/how-to-study-datascience/
강의
전체2수강평
게시글
질문&답변
2024.05.02
4-8. 지표 정의 연습 문제 풀이 답변 올려볼게요!
wjdgml님 안녕하세요! 문제 잘 풀어주셨네요! 전반적으로 정의하는 습관을 들일 수 있게 하신 것 같아 잘 푸셨네요. 하나씩 의견 드리면 1번 기능이 잘 동작하려면? 댓글 또는 좋아요 같이 사람들이 상호작용을 하는지 ~ 사람들이 어떤 배너에 더 관심이 가는지 이 부분에 대해서는 추가적인 내용을 생각해봐도 좋을 것 같아요. "관심을 가질만한 배너에 해당하는지" 이런 질문의 경우 관심을 가지다를 정의해야 하고, 그거에 따라 지표가 나오겠지요. 사람들과 "상호작용"을 한다도 정의가 필요하고, 각각이 어떤 의미인지 생각해보는게 필요합니다. 지금 작성한 부분에서 한번 더 들어가보면 좋겠네요 노출 수에서 노출은 어떻게 구성되는지 아시나요? 이 부분을 추가적으로 공부해봐도 좋을 것 같아요. 노출 이벤트의 경우 자동으로 이동하는 배너가 있을 수 있고, 사용자가 직접 넘기는 배너가 있을 수 있고, 두개가 혼합된 경우도 있어요. 카카오톡 광고 등을 보시면 알 수 있을거에요 또한 노출이라는 것이 가로로 나오는 것은 좀 더 쉬운데, 당근마켓 같이 스크롤을 내리다가 노출이 되는 것은 어떤 시점에 노출을 해야할까요? 현업에서 자주 고민하는 주제입니다. 시작점에 노출을 하냐, 끝에 노출을 하느냐 더 나아가서 데이터 로그 설계 부분과 같이 생각하면 이게 왜 중요한지 이해할 수 있을거에요(정의에 따라 언제 데이터를 기록할지가 달라짐) 각 영역에서 어떤 지표가 제일 Focus 해야 하는 지표인지도 작성해보면 좋을 것 같네요 왜 이 지표를 선택해야 하는지?도 생각해보면 좋을 것 같습니다 2번 검색 만족도 지표 검색 이탈률을 검색 중단한 사용자 수라고 해주셨는데, 중단의 정의는 무엇인가요? 검색을 하고 결과창에서 특정 버튼을 통해 결제창으로 진입하고 있다면 이것은 중단일까요? 아닐까요? 중단, 이탈의 정의를 구체적으로 잡으면 꽤 까다롭습니다. 중단, 이탈에 대한 정의를 자세히 해보셔요 지표만 작성하는 것이 아니라 어떻게 해석할지, 왜 이 지표를 선택했는지를 같이 작성하는 것을 추천해요 3번. 검색 필터 활성화 지표 필터 내 체류 시간이 길지 않는가에서 체류 시간은 어떻게 계산할 수 있을까요? 만약 검색을 하다가 잠시 백그라운드로 들어간 후, 10초 뒤에 다시 앱으로 진입했다면 이것은 어떻게 데이터를 추출해야 할까요? 백그라운드를 제외하면 된다!라고 생각할 수 있는데 이것을 SQL 쿼리나 데이터 처리를 어떻게 해야할지 고민해보면 좋답니다 필터를 자주 바꿨다는 것은 원하는 제품이 없다일 수도 있지만, 고민을 계속 하고 있다고 볼 수도 있습니다. 두 주장을 뒷받침하기 위해 어떤 데이터를 찾아보며 근거를 제시하시겠어요?(어떤 데이터가 어떤 결과가 나온다면 이 주장이 맞을 수 있다 등의 문장을 정리해보면 될 것 같아요) 4번. 배달 서비스의 중요한 지표 배달 산업 관점으로 생각해보길 바라는 마음에 낸 문제였어요. 지표의 하이라키 잘 표현해주셨는데, 배달 서비스만 나타낼 수 있는 지표로 생각해보면 어떤 것을 뽑으시겠어요? 5번. 추천 알고리즘 성능 지표 말씀해주신 전환율, 클릭율도 성능 지표로 가능하지만 이런 알고리즘은 정해진 지표들이 존재합니다 https://sungkee-book.tistory.com/11 Precision, Recall 등도 확인해보시고 알고리즘 자체의 성능을 확인하는 것은 다양한 종류가 있구나, 매번 검색을 해보는 것을 추천드려요 6번. 자주 사용하는 서비스 잘 생각해주셨네요. 4번처럼 지표의 위계로 표현해보면 어떨까요? 반납과 예약을 기준으로 보신 포인트도 좋네요. 다만 반납이 1달 뒤에 진행된다고 하면 데이터가 shift가 될텐데 이런 경우엔 어떻게 해야할까요? 7번. 퍼널 개선 프로젝트 온보딩을 강제로 해야할까요? 선택으로 해야할까요? 이 기능 여부에 따라 지표 해석이 달라질 수도 있고, 평균적인 지표가 달라질 것 같네요(강제라고 하면 해당 지표는 거의 의미가 없어질 수 있겠지요. 고객이 선택할 수 있는 것이 없으니) 저 지표 하나로 확인할 수 있을까요? 데이터를 볼 때는 어떻게 해야할까요? AB Test 파트를 보시고 이 문제를 다시 보시는 것도 추천드려요
- 0
- 2
- 70
질문&답변
2024.04.29
4-5 연습문제 4번
안녕하세요! 4-5 연습문제 4번에서 서브쿼리에 *을 꼭 써야하는 이유는 서브쿼리 바깥에 있는 FROM 절 입장에선 서브쿼리가 일종의 테이블처럼 인식합니다. SELECT day_of_week, COUNT(DISTINCT id) AS battle_cnt FROM ( SELECT *, EXTRACT(DAYOFWEEK FROM battle_date) AS day_of_week FROM `basic.battle` ) GROUP BY day_of_week ORDER BY day_of_week 위 쿼리에 서브 쿼리인 SELECT *, EXTRACT(DAYOFWEEK FROM battle_date) AS day_of_week FROM `basic.battle` 위 쿼리를 실행해보면 다음과 같은 결과가 나타납니다 (사진) 위에 결과에서 아래 쿼리를 실행하는 것으로 볼 수 있습니다 SELECT day_of_week, COUNT(DISTINCT id) AS battle_cnt FROM 위 결과 테이블 GROUP BY day_of_week ORDER BY day_of_week 만약 서브 쿼리에서 *을 제외했으면 아래와 같은 결과가 나타납니다 SELECT EXTRACT(DAYOFWEEK FROM battle_date) AS day_of_week FROM `basic.battle` (사진) 즉, day_of_week 밖에 없는 데이터인거죠 그래서 아래 쿼리를 실행할 때, id가 없기 때문에 Unrecognized name(데이터에 해당 컬럼이 없다) 오류가 발생하는 것입니다 SELECT day_of_week, COUNT(DISTINCT id) AS battle_cnt FROM 위 결과 테이블 GROUP BY day_of_week ORDER BY day_of_week 그렇다면 여기서 COUNT(DISTINCT *)도 가능한가? DISTINCT를 할 때는 구체적인 컬럼을 명시해야 하기 때문에 실행이 안됩니다 그럼 COUNT(*)도 가능한가? 실행은 되지만 단순히 Row 수만 COUNT하게 됩니다. 지금 데이터에선 답이 같을 수 있지만, id가 중복으로 존재하는 테이블에서는 COUNT(*)은 의도와 다른 값이 나타날 수 있습니다. 그래서 id를 DISTINCT해서 고유값만 COUNT한 것이에요 정리하면, 서브 쿼리에 있는 컬럼이 있어야 바깥에서 불러올 수 있습니다. 일종의 테이블이라고 생각하시면 이해가 쉬울 것 같네요
- 0
- 1
- 38
질문&답변
2024.04.29
battle 파일 표시할 데이터가 없습니다 문제
유정님 안녕하세요. 최근에 비슷한 질문이 있었는데, 아래 글에 해결 방식을 작성해두었어요. 확인해주시겠어요? 빅쿼리 내부의 오류로 파티션을 설정할 때 데이터가 사라지는 오류 같아요. 파티션 설정을 하지 않고 테이블을 생성했을 때 데이터가 보이면 아래의 이슈와 동일한 이슈일 것 같아요. https://www.inflearn.com/questions/1250442/battle-%ED%85%8C%EC%9D%B4%EB%B8%94-%ED%98%95%EC%84%B1%ED%95%A0-%EB%95%8C-%EC%A0%9C%EA%B0%80-%EC%96%B4%EB%96%A4-%EC%8B%A4%EC%88%98%EB%A5%BC-%ED%96%88%EC%9D%84%EA%B9%8C%EC%9A%94
- 0
- 1
- 44
질문&답변
2024.04.29
sql 실행순서와 서브쿼리 사용이유
안녕하세요. 우선 쿼리 실행 순서는 FROM - WHERE - GROUP BY - HAVING - SELECT 순서로 진행됩니다. 이런 경우라면 SELECT에서 Alias를 걸었던 컬럼을 GROUP BY에서 사용하지 못하는 것이 일반적입니다. 그러나 BigQuery에선 이런 경우에 SELECT의 Alias를 인식해서 GROUP BY에도 사용할 수 있도록 해주고 있어요. 과거엔 BigQuery도 SELECT Alias가 안되다가 기능이 생겼어요. 그래서 빅쿼리에선 해당 경우에도 실행이 됩니다만 실행 순서는 GROUP BY가 더 빠르다고 알고 계시면 좋을 것 같아요 아래 쿼리는 목적에 따라 다를 것 같아요. 1회성으로 new_type1이랑 집계만 하면 후자 쿼리가 더 좋을 수 있는데, 이 쿼리 결과를 가지고 다른 곳에서 많이 사용한다고 하면 전자가 더 좋을 수도 있지요. 사용 목적에 따라 다른 판단을 할 것 같네요. 서브 쿼리는 다양한 목적으로 사용하는데, 한번 더 데이터를 전처리해야 하는 경우가 있습니다. 한번 더 데이터를 가공하고 필터링할 때 사용할 수 있습니다. 서브 쿼리를 사용하냐 안하냐는 상황에 따라 다릅니다. 지금 수강하시는 강의는 쿼리가 다 짧고 JOIN이 없어서 서브 쿼리의 필요성을 느끼기 어려울 수 있으나 JOIN을 배우고 현업으로 갈수록 복잡한 구조에서 데이터 필터링을 할 때 서브 쿼리를 사용하기도 합니다(그 외에 가독성 목적도 있고 목적이 다양해요)
- 0
- 1
- 58
질문&답변
2024.04.27
코드 에디터가 이상한데, 어떤 설정을 건드려야할지 모르겠어요.
시주님 안녕하세요! 앗 이런 경우엔 아마 빅쿼리의 오류인 것 같아요. 시간이 지나고 다시 해보시거나 다른 웹브라우저에서 하셔도 그럴까요? 가끔 이런 경우가 있는데 시간이 지나면 버그가 고쳐졌던 것 같아요!
- 0
- 1
- 54