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/
강의
로드맵
전체 1수강평
- PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
- 초보자를 위한 BigQuery(SQL) 입문
- PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
- PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
게시글
질문&답변
본 강의의 수강 목적(혹은 목표) 입니다.
ks.han님 안녕하세요. 데이터를 읽는 사고, 로그 설계 잘 학습하셔서 역량이 쌓으면 좋겠네요..! 파이팅입니다!SQL 추출은 별도의 강의(SQL 입문, 활용편)에서 다루고 있어요. 이 강의가 선행 강의고 그 후에 SQL쪽을 보시는 것도 추천드려요!
- 0
- 2
- 17
질문&답변
강의의 목적
지피님 안녕하세요. 데이터 기반 의사결정 경험을 위해 강의 들으시고 궁금한 내용 있으시면 언제든 말씀해주셔요!!!! 파이팅입니다!!
- 0
- 2
- 14
질문&답변
4-4강 EXTRACT 함수 사용 (04:15 부근)
simon919님 안녕하세요. 질문해주셔서 감사합니다!제가 강의 촬영할 때 AS DATETIME을 아예 인지를 못하고 있었네요. 말씀하신 것처럼 EXTRACT 안에는 AS DATETIME을 넣지 않아야 합니다. SELECT EXTRACT(part FROM 시간 데이터) AS new_col_name위와 같은 형태라고 기억해주시면 됩니다. 만약 EXTRACT하고 자료형을 변경하고 싶다면, SAFE_CAST나 CAST를 사용해서 타입을 변경해야 합니다.4분 15초에는 제가 EXTRACT(part FROM 시간 데이터) 이 부분에 대해 설명하려고 예를 추가하다가, AS DATETIME을 잘못 붙이고 인지하지 못해서 이런 일이 발생했네요. AS DATETIME에 대해 제가 설명을 안하고 넘어가는데 아예 강의할 때도 인지를 하지 않아서 넘어간 케이스라고 보시면 될 것 같아요( 말씀해주신 덕분에 강의를 수정할 수 있게 되었네요. 감사합니다. 강의 노트 부분에 명시를 해둘게요
- 0
- 1
- 14
질문&답변
JOIN 연습문제2번
안녕하세요. 지금 데이터에선 동일한 결과가 나올 것 같은데, 만약 status에 다른 value가 있었다면 명시적으로 쓸 것 같아요(강의의 답처럼) 어떤 조건이 아니다!라고 하는 것은 특정 Value가 생기면 데이터가 의도와 달라질 수 있어서 저는 != 보단 명시적으로 특정 조건만 해당하도록 하고 있어요(물론 상황에 따라 !=가 좋은 경우도 있구요. 상황에 따라 다르긴 하네요)
- 0
- 2
- 37
질문&답변
[4-8] 지표 정의하기 연습문제
진아님 안녕하세요! 연습 문제 잘 풀어주셨네요! 하나씩 피드백 해드릴게요연습문제 1.핵심 : 기능이 잘 동작되고 있는가?배너 영역배너별 클릭율(CTR)과 배너별 콘텐츠 구매전환율 (CVR) 을 확인해 본다.배너별 클릭율 (CTR)이 높다면 해당 콘텐츠를 사람들이 관심 있게 봤음을 해석할 수 있있다.배너별 콘텐츠 구매전환율(CVR)이 높다면 특정 콘텐츠에 대한 클릭에서 구매까지의 전환이 높다는 것으로 목표된 타겟에 맞춰 동작이 잘 됨을 의미한다.배너에서는 여러 콘텐츠가 노출되고 있기 때문에 어떤 영역에 관심이 많은 지 파악할 수 있다.메뉴카테고리메뉴별 클릭율 (CTR)과 메뉴별 구매전환(CVR)을 확인해 본다.한식 (한식 클릭율 CTR, 한식 구매전환율 CVR ) , 고기 (고기 클릭율 CTR, 고기 구매전환율CVR ),,등등 각각의 메뉴 아이콘별 클릭율(CTR)과 구매전환율(CVR)을 확인한다.만약, 특정 메뉴의 클릭율(CTR) 및 구매전환율(CVR)이 둘 다 너무 낮거나 높다면,해당 메뉴에 대한 운영 및 UI 히스토리를 확인해 본다.서비스 출시 후 해당 메뉴에 대해 클릭율CTR 및 구매전환CVR이 낮은 이유가 파악되지 않는다면 메뉴 순서를 변경하는 A/B 테스트를 시행한다.다른 영역 (배너 영역, 이런 음식 어때요, 동네 맛집 )의 클릭율(CTR) 및 구매전환율(CVR)을 확인한다.다른 영역에 비하여 상대적으로 메뉴 카테고리의 평균 클릭율(CTR) 및 구매전환율(CVR)이 모두 떨어진다면 다른 영역들과의 위치 변경에 대한 기획 히스토리를 파악한다.다른 영역에 비하여 상대적으로 메뉴 카테고리의 평균 클릭율(CTR) 및 구매전환율(CVR) 모두 높다면 유저들의 반응과 선택한 메뉴의 결제전환이 잘된다는 뜻으로 해석한다.이런 음식 어때요 ? / 동네 맛집카드섹션별 클릭율 (CTR) 과 카드섹션별 구매전환율(CVR) 파악한다.특정 카드섹션에 대한 클릭율 (CTR)과 구매전환율(CVR)이 너무 높거나 낮다면 메뉴 카테고리의 메뉴별 클릭율 (CTR)과 구매전환율(CVR)을 통해 메뉴에 따른 영향인 것인지 파악한다.만약 특정 카드섹션이 특정 메뉴에 따른 영향이 없이 [이런 음식 어때요] 에서만 메뉴별 클릭율(CTR)와 구매전환율(CVR)이 둘 다 높은 경우 카드 섹션 위치에 대해 고객에 대한 반응도 좋고 전환도 잘된다는 의미로 해석한다.피드백 : 모두 잘 생각해주셨고, 이런 음식 어때요에서 어떻게 해석할지 미리 생각해보신 부분이 인상 깊네요. 이 부분은 모두 동일한 지표를 사용할 수 있어요. 동일한 지표를 사용하도록 추상화를 해보면 어떻게 해야할까요?이렇게 추상화를 해두면 추후에 비슷한 화면이 오면 쉽게 지표를 정의할 수 있어요 연습문제2.핵심 : 검색기능에 만족했는가?검색하는 기능을 사용하는 사용자를 총 수(분모) 로 대비하여 여러 지표들을 정할 수 있을 것 같음.검색 기능 내 속한 기능 (필터 등) 클릭율(CTR)검색 기능을 통한 검색 화면으로의 전환율 CVR검색 기능을 통한 구매 전환율 CVR다른 영역의 클릭 했을 때의 지표들과도 비교하여 상대적으로 많이 사용하고 있는지를 확인할 수 있다.다른영역 클릭율 CTR다른 영역을 통한 검색 화면으로의 전환율 CVR다른 영역을 통한 구매 전환율 CVR검색된 화면이 노출되었을 때의 체류 시간의 비교를 통해 확인할 수 있다.검색 기능을 통해 노출된 검색된 화면의 체류시간다른 영역을 통해 노출된 화면의 체류시간부가 지표검색 행동이 유도된 (검색 기능을 1회 이상 사용한) 유저의 flow와 ,정해진 UI대로 클릭하여 사용한 (검색 기능을 한번도 클릭하지 않은 경우) 유저의 flow를 체크하여 ,구매 전환율 CVR을 비교하여 보조 지표로 사용할 수 있다.피드백 : 이 부분도 잘 생각해주셨네요. CTR와 CVR 지표만 사용해도 꽤 많은 영역을 처리할 수 있어요.부가 지표에서 특정 버튼을 클릭한 유저의 flow를 체크한다고 하셨는데, 여기선 어떤 케이스가 있을까요? 다양한 케이스가 있을 수 있는데 구체적으로 생각해보고 이러면 어떤 상황일 것이다를 작성해보는 것도 추천드려요. 이런 부분을 많이 생각할수록 생각의 깊이가 깊어지더라구요 연습문제3.핵심 : 검색 기능은 잘 사용하고 있는가?검색 기능 이용 유저 중 필터영역의 CTR 사용 비중 확인 필요.필터 항목 중 어떤 항목이 많이 사용하는 지 파악하여 필터 내 항목의 위치를 변경할 수 있을 것 같음.추천순, 리뷰순, 배달이 많은 순 → 배달이 많은 순, 리뷰순, 추천순이 문제는 필터에 대한 클릭이 얼마나 되는지를 묻는 질문이였어요. CTR로 볼 수도 있는데, 만약 여러번 클릭하는 사람들이 있으면 어떻게 해야할까요? 필터는 여러번 클릭을 하는 경우도 꽤 있거든요(하나의 화면에서 여러가지 클릭이 가능해서)연습문제4.핵심 :배달 서비스에서 가장 중요한 지표는 무엇인가?컨포넌트를 로직트리로 그려보고 고민해본다.가장 중요한 지표유저가 하루에 유입하는 수 (DAU) 유저가 하루에 실제 주문하는 수(D_CVR) 왜? 배달 서비스를 유저를 상대로 하는 서비스이기 때문에 매출이 선행하는 지표가 가장 중요하다고 생각한다.가게와 배달 서비스에서는 각자의 매출을 올리기 위해서 가게에서는 맛과 평점을 우선시 할 것이고 배달 서비스에서는 메뉴 소개부터 주문, 결제까지 자연스러운 FLOW를 만들 것이다. 지표 상승방안현재 마케팅을 추가 진행할 수 없는 상태라면 유저가 하루에 유입 D_CVR까지 진행 시 이탈하는 고객의 수를 줄여야 한다.어느 단계에서 이탈하고 왜 이탈하는 지에 대한 분석을 하여 개선 방안을 도출한다.이 부분 잘 생각해주셨네요! 메트릭 하이라키 파트가 뒤에 있는데, 그 파트를 보신 후에 더 고민해보셔요. 컴포넌트를 3 Depth까지 만들어 보셔요. DAU => D_CVR인데 그 사이 과정이 많이 있을 거예요연습문제5.핵심 : 추천 알고리즘의 핵심지표 핵심 지표추천 시스템 적용으로 인한 매출 PV의 증가 여부새로운 추천 아이템에 대한 유저의 추천 아이템 클릭율 CTR 증가율 여부이유실제 사용자가 추천된 상품에 관심을 보이는지 직접적으로 확인 가능.알고리즘의 즉각적이 효과가 보임.따라서 즉각적인 대응이 가능함.피드백 : 말씀해주신 지표도 사용할 수 있고, 알고리즘은 별도로 지표가 존재합니다. 이런 지표를 찾아보는 것을 경험하게 해드리고 싶었어요. Precision, Recall 등이 있어요https://sungkee-book.tistory.com/11 연습문제6.핵심 : 핵심 지표 도출 유튜브에서의 여러 핵심 시청 지표 중 시청자 유지도 (Retention)이 가장 중요하다고 생각함.유지도가 높다는 것은 해당 콘텐츠가 시청자의 기대치를 충족한다는 것을 의미.시청자의 관심과 만족도를 직접적으로 반영하는 지표라 생각됨.이를 통해 콘텐츠에 대한 개선안에 대해 추가적으로 체크 가능하다.동영상의 이탈 지점 분석을 통해 참여도가 낮은 구간을 파악.시청자가 가장 관심을 보이는 부분과 이탈하는 부분을 확인할 수 있음. 피드백 : 리텐션은 모든 서비스에서 중요한 지표라고 할 수 있어서, 서비스에만 있는 지표로 정해보면 어떨까요? 유튜브는 왜 쓸까요? 사람들이 왜 사용할지에 대해 생각해보시면 Input Metric에 대해 생각할수 있을 거예요. 리텐션은 Output 지표구요연습문제7.핵심 : 온보딩 퍼널 효과 파악 지표온보딩 프로세스 완료율 (Completion Rate)높은 완료율은 사용자가 온보딩이 필요하다는 것을 인지하고 있다는 것을 뜻함.낮은 완료율은 사용자가 해당 프로세스에 부담을 느끼거나 필요하지 않다는 것을 의미.리텐션율 (Retention Rate)사용자가 얼마나 잘 제품을 계속 사용하는지 보여주는 지표사용자가 제품의 가치를 잘 이해하고 있는지 보여주는 지표 온보딩을 끝까지 본 사용자의 리텐션율과 온보딩을 이탈한 사용자의 리텐션율을 비교하여 판단피드백 : 온보딩을 끝까지 본 사용자와 온보딩을 이탈한 사용자는 동질 집단이 아니라 리텐션율을 비교해서 판단하면 잘못된 분석을 할 수 있어요. 온보딩 기능을 경험한 사람과 아닌 사람의 지표를 봐야 합니다. 이를 위해 실험을 해야하는데, AB Test 파트를 들으시면 어떤 의도인지 이해하실 수 있을 거예요 문제 푸느라 넘 고생하셨습니다!
- 0
- 1
- 107
질문&답변
구글클라우드 테이블생성오류
안녕하세요. 헙 예기치 않은 오류라고 뜨는군요 ㅠㅠ 에러 메시지가 나오면 매우 어려운 상황이네요..제 컴퓨터에서 실행했을 땐 방금 되는데, 무언가 이슈가 있나 확인해봐야겠네요. 번거롭겠지만 지금 이유를 추측해야 할 것 같네요 윈도우인가요? 맥인가요?네트워크(와이파이)는 어디서 하고 계신가요? 집? 카페? 회사?어떤 브라우저를 사용하고 계신가요? 크롬? 특정 케이스에서만 안되는 경우에 아래 케이스로 해결했던 경험이 있어요브라우저를 변경. 파이어폭스나 엣지 등네트워크 변경. 핫스팟으로 되는지 확인새로운 프로젝트 생성. 프로젝트의 문제가 생겼다면 새 프로젝트 생성 후 카드 연결구글 클라우드 로그아웃 후 다시 로그인브라우저 캐시 삭제 SELECT name, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name ORDER BY total DESC LIMIT 10; 그리고 위 쿼리가 실행이 되시나요? 위 쿼리가 실행이 된다면 일단 실행하는 쪽의 문제는 없을 것 같고, 이 쿼리도 안된다고 하면 지금 프로젝트 전체에 뭔가 이슈가 있을 것 같아요. 프로젝트 전체에 이슈가 있다면 구글측에 문의를 해야(추적 번호가 있으므로) 제일 빠르긴 한데.. 일단 제가 물어본 것에 대해 말씀해주시겠어요?
- 0
- 2
- 47
질문&답변
안녕하세요. 강의를 수강하려는 목적입니다.
데구롱님 안녕하세요. 하시다가 고민 있으시면 언제든 남겨주셔요!! 파이팅입니다!!!!
- 0
- 2
- 48
질문&답변
16번 문제
안녕하세요. 인프런 인턴이 말한 것과 동일합니다COUNT(col) : 이 의미는 col에 값이 있는 Record의 수를 센다는 것을 의미합니다. count(status)나 count(id)나 모두 동일한 결과가 나올텐데 그 이유는 id 값이 있는 포켓몬은 status 값이 존재하기 때문이에요. 지금 문제에선 괜찮은데, 나중에 JOIN을 많이 하다보면 잘못된 값을 사용할 수 있어서(데이터가 뻥튀기가 될 수 있음) pokemon_id를 사용하는 것이 더 좋아요. 문제 정의를 어떻게 하느냐에 따라 다를 수 있는데 아래 글에 자세히 정리해두었으니 참고해보시면 좋을 것 같아요.https://www.inflearn.com/community/questions/1225327/2-6-%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C-16%EB%B2%88-count-%ED%95%A8%EC%88%98-%EC%A7%88%EB%AC%B8
- 0
- 2
- 33
질문&답변
12번 문제
안녕하세요.type1은 모든 포켓몬이 값을 가지고 있는 컬럼입니다. 그래서 type1 is not null을 쓰지 않아도 값은 동일해요. SQL 쿼리를 작성할 때 해당 컬럼에 모든 값이 채워져 있는지, 혹은 NULL값이 있는지 확인해본 후 쿼리를 작성하면 되어요.만약 type1에 NULL값이 있었다면, 말씀하신대로 표현하는 것이 정확한 값을 뽑을 수 있을 거예요. 지금 데이터에선 type1은 모두 다 값이 존재해서 해당 내용을 추가하지 않아도 괜찮구요
- 0
- 1
- 33
질문&답변
desc 위치
안녕하세요~!그렇게 실행을 하려고 하면, 오류가 발생합니다.desc라는 것은 정렬과 관련된 명령어라 ORDER BY와 함께 써야 합니다.
- 0
- 1
- 28