no image
AARRR, Retention, Cohort 분석 알아보기
AARRR 분석 고객 여정을 5개 단계로 나눠, 데이터 기반 의사 결정을 하는 분석 프레임워크이다. Acquisition, Activation, Retention, Revenue, Referral의 단계로 구성되고, 단계의 앞 글자만 따서 AARRR이라고 부른다. 각 단계의 특성은 다음과 같다. Acquisition(획득, 유입) 유저를 어떤 방식으로 유입시키고, 획득할 수 있는 지 고민한다. 획득을 위해선 광고가 필요하다. 다음과 같은 지표들이 고려된다. CAC(Customer Acquisition Cost) : 한 명의 고객을 확보하기 위해, 지출할 금액 DAU, MAU : 일간/월간 활성 유저 수 신규 방문자 수 Activation(활성화) 유입된 유저가 제품, 서비스의 주요 기능을 경험할 수 있도..
2022.08.26
no image
오픈소스 컨트리뷰션 아카데미 - 파이토치 허브 : 중간 회고
왜 참여? STS 성능 측정 과정에 Hugging Face의 load_metric 함수를 활용하다가 문제점을 발견했던 적이 있었다. 다른 사람들은 같은 문제로 시간을 보내지 않길 바라는 마음으로 관련 내용을 허깅 페이스에 제보하였고, 이를 통해 문제를 해결하는데 기여했던 경험이 있었다. 문제의 원인과 해결 방안을 찾는 것도 어려움이 있었지만, 이러한 문제를 Github를 통해 제보하는 데도 꽤 어려움이 있었다. 물론 Git을 안 써본 것은 아니었지만, 당시엔 협업 툴로 사용하기보다는 개인 저장소 정도로만 사용했었다. 실제로 pull request나 merge 등의 기능을 알기는 했지만 신기하다고만 생각할 뿐 활용할 일이 사실 별로 없었다. 그래서인지 당시 접했던 허깅 페이스의 Github 페이지는 굉장히..
2022.08.25
no image
[Git] 오픈소스와 Git - (2)
오픈소스 컨트리뷰션 아카데미에서 진행된 Git/Github 고급 실습 강의를 정리한 내용입니다. fetch 언제 사용? Origin(fork 해온 상태)과 Upstream(현재 원본 repo 상태)다를 때, 추가된 commit을 가져오고 싶을 때 활용 히스토리 창고(.git)에만 저장 git fetch upstream master pull = fetch + merge upstream/master 라는 branch 이름이 자동으로 생성 됨 rebase 현재 Base를 최신으로 갱신한다 내가 사용 중인 Base가 최신 것이 아니면 오류 발생할 수 있음 만약 내가 수정한 코드가 다른 사람이 최근에 수정된 코드가 동일한 파일에서 나왔을 경우 git rebase upstream/master rebase 단계 1단..
2022.08.25
no image
[Git] 오픈소스와 Git - (1)
오픈소스 컨트리뷰션 아카데미에서 진행된 Git/Github 기본 실습 강의를 정리한 내용입니다. 오픈소스 기여 과정 개괄 개발 환경 구축(컨테이너) fork하여 프로젝트 복사 clone하여 소스 다운로드 프로젝트 개발 현황 파악/분석 → Reading Skills 필요 history를 파악하는 것이 중요! → Reading Skills 소스 수정 → commit하여 히스토리 저장 수정 내용 제출 → PR! Container 개발 환경 구축을 간단하게 도와줌 독립된 리눅스 환경 구성 개발 환경을 간단하게 구성 ex) pytorch, tensorflow Dockerfile → image → Container Git? 이력 관리(수단), 협업(목적) Push 나의 프로젝트에 commit을 업로드할 때 사용 C..
2022.08.25
[파이썬] 코딩 테스트 오류 유형
오류 겪을 때마다 추가합니다. 런타임 에러 0으로 나누었을 때(분모가 0인 경우) 존재하지 않는 인덱스에 접근할 때 선언하지 않은 변수를 사용할 때 재귀 호출이 너무 깊어질 경우 : 참고 타입 에러 문자열을 인덱싱하여 값을 수정할 때 deque를 slicing 할 때
2022.08.24
no image
[파이썬] 프로그래머스 비밀지도
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 1/0으로 벽과 공백을 처리해야한다. 비트 연산자를 활용해서 한 쪽만 벽이 있더라도 벽으로 처리했다. def solution(n, arr1, arr2): arr1 = [list(f"{bin(i)[2:]:0>{n}}") for i in arr1] arr2 = [list(f"{bin(i)[2:]:0>{n}}") for i in arr2] decode = [[0] * n for _ in range(n)] for row in range(n): for col in range(n): # 어느 한쪽에 벽이 존재..
2022.08.19
no image
[짧] Odds(오즈)와 Logit(로짓) 알아보기
Odds(오즈) 실패 비율(확률) 대비 성공 비율(확률)을 의미한다. 수식으로 나타내면 다음과 같다. $odds = \frac{p}{1-p}$ 오즈를 활용하면 [0, 1] 사이의 확률 값을 [0, ∞]로 매핑할 수 있다. 확률이 0.5 일 때 오즈 값은 1이기 때문에, 1 값을 경계로 성공, 실패 여부 등을 표현할 수 있다. Logit(로짓) 오즈에 로그를 취한 것이다. 수식으로 나타내면 다음과 같다. $L = ln \frac {p}{1-p}$ 로짓을 활용하면 확률 값을 [-∞, ∞]로 매핑할 수 있다. 확률이 0.5일 때 로짓 값은 0이기 때문에, 0 값을 경계로 성공, 실패 여부 등을 표현할 수 있다.
2022.08.19
no image
[논문 정리] SDM: Sequential Deep Matching Model for Online Large-scaleRecommender System
Concept 대규모 데이터 환경에선, 추천에 앞서 후보군을 결정하는 Matching 과정이 필요하다. Matching엔 아이템 기반 CF가 많이 활용되지만, 이 경우 동적으로 변하는 유저의 취향을 반영하기가 힘들다. 이러한 Matching에 Sequential 추천을 활용하면 유저의 취향을 더 잘 파악할 수가 있다. Sequential 추천 시나리오에선, 하나의 세션(short-term)에도 여러 목적이 있을 수 있다는 점과 유저에 따라 긴 시간(long-term) 동안 유지되는 선호도가 있다는 점을 고려하는 것이 중요하다. SDM은 각 세션 마다 여러 목적이 있을 수 있다는 점을 고려해 Single Head Attention 대신, Multi Head Attention를 도입했다. 또한 긴 시간 동안..
2022.08.18
no image
[파이썬] 프로그래머스 레벨1 모음
정수 내림차순으로 배치하기 sorted 실행 후 생성된 문자열 리스트를 join 함수를 통해서 문자열로 변경했다. def solution(n): n_str = "".join(sorted(str(n), reverse = True)) return int(n_str) 행렬의 덧셈 zip 함수를 차례로 사용해 행렬의 덧셈을 구현했다. def solution(arr1, arr2): # 전개 순서 : [[1, 2], [2, 3]] // [[3,4], [5,6]] => [1,2], [3,4] => [4, 6] result = [[c + d for c, d in zip(a, b)] for a, b in zip(arr1, arr2)] return result 자연수 뒤집어 배열로 만들기 숫자 각 성분을 list에 넣기 ..
2022.08.17
no image
[SQL] 프로그래머스 문제 모음
GROUPBY 고양이와 개는 몇마리 있을까 select animal_type, count(*) as "count" from animal_ins group by animal_type order by animal_type; 동명 동물 수 찾기 select name, count(*) as "count" from animal_ins group by name having name is not null and count(*) >=2 order by name; 입양 시각 구하기 1 select hour(datetime) as "hour", count(*) as "count" from animal_outs group by hour(datetime) having hour >= 9 and hour < 20 order by..
2022.08.06
no image
[논문 정리] MEAL: Multi-Model Ensemble via Adversarial Learning
Concept Ensemble(앙상블) 기법을 활용하면 모델의 성능을 향상 시킬 수 있다. 하지만 앙상블에 사용할 모델을 추가로 저장하고, 또 추론 시 불러와야 하기 때문에 실행이 오래 걸린다는 문제점이 있다. 이때, Knowledge Distiliation(KD)으로 단일 모델을 구성하면 일종의 앙상블 효과를 얻으면서, 동시에 언급한 단점들을 해결할 수 있다. KD는 일반적으로 마지막 레이어의 소프트 라벨만 활용해서 진행된다. 하지만 MEAL은 중간 레이어의 Feature Vector 까지 유사하도록 만들기 위해, KD를 레이어 중간 마다 진행하면서 동시에 Adversarial Loss 까지 도입한다. 이를 Block 단위로 처리할 수 있도록 Adaptive Pooling을 도입했고, 이는 다양한 구조..
2022.07.16
no image
Pytorch hub를 통해 MEAL V2 모델 사용하기
Pytorch hub pytorch hub는 torch 기반 모델 publish 및 load를 지원하여 사전 학습된 모델을 손쉽게 활용할 수 있도록 도와준다. 현재 load 해서 사용할 수 있는 모델은 48개라고 돼있지만 pytorch-transformers와 같이 여러 모델들을 한 곳에 모아둔 경우도 있어 실제로는 더 다양한 모델을 사용할 수 있다. publish 및 load에 대한 자세한 방법은 아래 링크를 통해서 확인할 수 있다. torch.hub — PyTorch 1.12 documentation torch.hub Pytorch Hub is a pre-trained model repository designed to facilitate research reproducibility. Publishi..
2022.07.15