일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- subdag
- XAI
- 유튜브 API
- GenericGBQException
- grad-cam
- BigQuery
- Airflow
- login crawling
- Counterfactual Explanations
- chatGPT
- spark udf
- 공분산
- youtube data
- integrated gradient
- airflow subdag
- flask
- correlation
- gather_nd
- GCP
- session 유지
- API Gateway
- Retry
- TensorFlow
- tensorflow text
- UDF
- API
- top_k
- hadoop
- 상관관계
- requests
- Today
- Total
데이터과학 삼학년
if (kakao) 2020 본문
if (kakao) 2020
카카오 주니어 개발자의 하루
-
아침밥...제공…
-
점심후 커피내기 가위바위보
-
팀원간 계속적인 커뮤니케이션
-
현재 직면해 있는 문제 공유
-
어떤식으로 문제를 풀지 논의
-
전체적인 로직 설계와 논의를 통해 예상 문제 도출 및 해결방안 제시
-
무작정 개발을 시작하는 것이 아니라 어떤 방향으로 갈지 큰 그림을 그림
-
중간마다 코드리뷰
-
스터디 활성화
카카오 픽코마 추천 시스템
-
카카오 일본에서 만화 플랫폼 추천 시스템
-
12시간 마다 1번씩 팝업에 노출
-
추천 겸 팝업 노출로 반응하는 유저의 행동 로그 축적
-
추천 방법 고민
-
개인화 추천 vs 연관 추천
-
개인화 추천 (취향)
-
개별 유저의 취향을 고려한 추천
-
유저에 따라 달라지는 추천 결과
-
연관 추천 (맥락)
-
현재 보고 있는 아이템과 연관성이 높은 아이템 추천
-
개별 유저의 취향을 고려하지 않음
-
팝업 노출 직전에 열람한 작품과 비슷한 작품을 추천하는 것이 자연스러움
-
과거 데이터를 반영하기 보다 현재 보고 있는 방식을 추천
-
팝업 노출 타이밍엔 취향과 맥락중 어떤것이 더 효과적으로 고려 될까??
-
추천방식 결정 → Matrix Factorization
-
Matrix Factorization
-
한 행렬은 보다 작은 사이즈의 행렬 곱으로 분해하는 형태
-
user-item Martix 는 Sparse한 데이터 → 이것을 user별, item별로 matrix를 나눔
-
user와 user 간 유사성 / item과 item 간 유사성 확인 가능
-
Matrix Factorization은 개인 및 연관 추천에 모두 사용할 수 있어 채택
-
개인화 추천의 경우
-
한 개인이 item에 대해 얼마나 관심이 있는지 계산이 가능함
-
연관 추천의 경우
-
item 매트릭스만 이용해서 사용 가능
-
현재 보고 있는 아이템과 가장 유사하다고 판단되는 아이템을 추천
-
취향 vs 맥락
-
어느 추천 방식이 더 우수했을까?
-
평가 metric은 전환율 CVR = 전환수 / 노출수
-
노출 (Impression) : 팝업 추천에 유저가 노출되는 것
-
전환 (Conversion) : 노출된 추천을 클릭
-
즉, 팝업 노출을 시켰을때 유저가 얼마나 해당(추천된) 콘텐츠를 눌렀는 가?
-
개인화 추천이 18% 포인트 더 우수 했음!
-
왜?
-
개인화 추천의 경우, 유사도 자체에 큰 영향을 받지 않고 전환함
-
연관 추천은 유사도가 높을 수록 전환율이 높았음
-
결국, 취향 > 맥락
-
에피소드의 경우, 해당 에피소드에 빠져 들기 전에 유사한 콘텐츠를 추천해줄수록 전환율이 높음
카카오 입사 8개월 리얼 후기
-
왜? 에러가 왜? 났을까 생각하는 습관
-
단순하게 돌아가는 것보다 왜 코드를 이렇게 짰는지 생각
-
기존에 있는 코드를 보고 똑같이 작성하는 것이 아니라 다른 여러 방안에 대해서 생각하고, 왜 그 방안을 결정했는지 근거기반의 개발
-
내 코드가 누구를 위한 코드냐?
-
나만 보기 좋은 코드가 아니라 누구나 볼 수 있는 readable한 함수
-
남을 위한 코드, 함수와 변수명을 지을때 해당 역할에 맞게 적용
-
새로운 기술을 접했을때, 책을 사서 각자 발표할 부분 만들어 공부 → 스터디 중요
-
위키에 정리하여 정보를 모음
-
협업 툴
-
Git : 깃플로우 기반, 리베이스, 체리픽 등과 같은 기능 사용
-
Jira, wiki
-
코드 정합성 확인
-
테스트 코드 작성 및 로그 찍기
-
어떤 개발자가 되고 싶은가?
-
질문을 많이 하는 개발자
-
나의 모름을 인정하는 개발자
-
새로운 기술에 대해 끊임없이 공부하고, 이를 실제 프로젝트에 적용하는 개발자
카카오의 일하는 방식
-
우리의 일을 공개해서 협업과 팀웍이 잘 이루어질 수 있게 하자
-
문화가 일을 한다
-
자기 주도성, 공개/공유, 수평커뮤니케이션
-
지라 활용을 많이 함
잡았다, 요놈! - 재화도독 잡는 ‘딥러닝 기반 이상탐지 모델’
-
어뷰징 : 정당하지않은 행위로 이득을 취함
-
게임 경제의 붕괴
-
다른 유저의 상대적 박탈감
-
게임수명 단출
-
유저들의 공정한 경쟁 보장을 위해 어뷰징을 탐지해야함
-
기존 : 룰기반으로 로그 모니터링 후 검증 및 제재가 이루어졌음
-
이상탐지 딥러닝 모델
-
데이터 학습 → 모델 기반 예측 → 이상탐지
-
비지도 학습으로 스스로 패턴 찾을 수 있게 함
-
구축과정
-
feature 자체를 시간별로 구축함
-
전통적인 이상탐지에 쓰이는 AutoEncoder 사용
-
noise가 높은 유저가 검출되는 방법
-
유저의 행동에 대해 적절한 게임보상 예측 모델 구현 → CNN
-
다수의 유사 행동과 재화량을 학습 후 적정 재화량과의 차이가 큰 행동을 어뷰징으로 판단
-
적정 보상은 플레이시간, 과금, 플레이 패턴에 따라 산정
-
행동 vector 구성은 재화이상탐지에서 사용한 vector와 동일
-
다수의 유사행동과 적정 재화량 데이터를 구성어떻게 했는지?
-
정상데이터만을 학습하는 (이상탐지) 모델의 한계
-
정확도
-
과적합
-
해석의 어려움
-
정확도를 높이기 위해 생성, 구별 모델 사용 (GAN)
-
경쟁을 통해 학습률이 더 올라갈수 있게 구성
-
어뷰징 데이터가 없다면 FAKE 데이터를 학습
-
FAKE 데이터란 → 이상치 데이터를 만들어서 넣어줌 → GAN으로 생성함
-
이를 통해, 모델의 정확도 상승과 overfitting을 줄일 수 있음
-
이상탐지 모델 비교
-
확인된 어뷰징 유형
-
아이템 제작 매크로
-
아이템 복사 (drop/획득 반복 후 상점 판매)
-
거래소 고액 획득
-
던전/과제/퀘스트 등의 보상 반복 획득
-
향후계획
-
수집된 어뷰징 데이터를 수집
-
label을 달아놓음
-
분류 모델을 만들어 모델의 해석을 진행할 예정
-
실시간 모니터링, 이상탐지를 서비스화 시키는 플로우 제작중
-
알람이 온 시간대 분석 등
-
경제 밸런싱 프로젝트
-
게임 경제의 Balance를 맞춤
>> 즉, 적정 재화 예측 모델을 만들고, 실값과의 LOSS를 이용해 어뷰징을 탐지하는 방법이 적용
이상거래 탐지를 위한 실시간 데이터 처리와 금융 사기 행동 분석
-
카카오 페이에서는 내가 한 거래가 정상 거래라고 어떻게 분석할까?
-
금융 흐름 모니터링 시스템, 데이터 분석결과 공유
-
이상거래 사례 (FDS; Fraud Detection System)
-
FDS - 피싱 등 평소와 다른 금융 패턴 감지
-
이상 거래 패턴을 실시간으로 모니터링 하기가 어려웠음
-
이상패턴은 너무나도 다양함
-
게다가 빠르게 변화하고 진화함
-
카카오 페이의 모든 데이터 모니터링 니즈가 커짐
-
RMS (Risk Management System)프로젝트 개발
-
이상거래 뿐만 아니라 잠재적인 위험을 관리할 필요를 느낌
-
RMS 요구사항
-
동시성 (Kafka / Akka)
-
확장성 (Akka Cluster / k8s)
-
실시간성 (Redis / Druid / Kudu)
-
RMS 아키텍쳐
-
Rule Engine
-
Kafka에서 들어오는 이벤트를 Akka stream을 통해 수집
-
Cluster Sharding
-
entity와 rule을 통해 cluster data의 event를 체크
-
전반적으로 퍼져있는 cluster 들의 상태도 체크하여 종합적인 판단 내림
-
Model condition의 경우, tf2.x 와 tf for java를 이용해 구성
-
지도학습 모델을 사용
-
Redis는 airflow를 이용하여 수행
-
feature data 저장
-
redis를 이용해 유저별 각종 통해 hash된
-
실시간 결제 내역을 시간범위(e.g. 1시간) 로 저장
-
Akky Type를 이용해서 model 갱신 및 model 상태확인 가능함
-
이를 통해 행동패턴이 새로 생기게 되면 새로운 행동패턴에 맞는 model이 생성됨
-
RMS에서 사용하는 DB
-
Druid : 실시간 통계 산출
-
사용되는 FDS 모델의 장점
-
비지도학습 모델 : 군집을 벗어난 Outlier 추출 목적
-
장점 : 기존에 확인하지 못했던 새로운 행동 관찰 가능
-
단점 : 명확한 평가 기준 부내
-
지도 학습 모델
-
장점 : 목표값에 개입하므로 비교적 높은 정확도
-
단점 : 데이터 확보 어려움, 변한 행동패턴에 반응할 수 없음
-
룰 기반 모델
-
장점 : 빠른 대응 가능, 명확한 이해 가능
-
단점 : 구체화된 조건 필요, 리소스가 많이 들어감
-
위 3가지 모델을 혼합해서 활용
-
이것만으로는 부족
-
순간만 보는게 아닌 전체를 바라보자
-
관계와 행적을 이용해 이상탐지 방식 추가
-
관계 (Relation) : Graph Networks
-
행적 (History)
-
관계 모델
-
계좌 networks 분석
-
계좌들간의 관계를 파악
-
계좌들간 군집을 이루는 것을 실제로 확인할 수 있었음
-
정말 비슷한 계좌끼리 연결되었을까?
-
확인 결과, 비슷한 계좌가 있었고, 이를 통해 blaklist를 만듦
-
생성 소멸 주기를 파악
-
account immigration
-
급격히 소멸하는 계좌는 급격히 상승되는 계좌로 이전이 이루어졌을 것이다라는 가정
-
계좌 간 연결 관계 정리
-
거래 데이터 기반 네트워크 만들고, node의 metric을 이용해 관계 정의
-
관계를 분석해서, 유형화
-
행적 (History)
-
사기의 경우, 기존의 행동과 다른 행동을 보인다
-
helix 구조를 이용하여 과거정보를 함축적으로 담는 처리 진행
-
각 유저별 행동 패턴 이해와 모니터링 가능
-
주요 거래시간도 추정 가능
-
거래 속도와 연속 거래 횟수 파악 가능
-
파이프라인
-
금융흐름의 안정화 관점에서 데이터를 바라보고 해당 유저의 특징을 파악하고, 모니터링 할 수 있음
-
“공격자는 항상 방어자보다 앞서나간다”
출처
'Etc.' 카테고리의 다른 글
[알고리즘 문제 관리] 백준허브!!! 프로그래머스/백준 코드 풀이 자동 깃헙 업로드 (0) | 2023.12.13 |
---|---|
티스토리 수식 넣기!!! (0) | 2023.09.11 |