본문 바로가기

전체 글

[Git] 3 way merge 아래와 같은 케이스를 생각해보자. 동일한 소스코드(Base)에서 나(Me)와 다른 사람(Ohter)이 소스 코드를 아래와 같이 수정하였다. MeBaseOther2 way merge3 waymerge1AA내용 삭제Conflit내용 삭제2BBBBB31C2ConflitConflit4내용 삭제DDConflit내용 삭제 위 테이블을 하나로 병합하는 방식은 2 way 그리고 3 way merge 방식이 있다.2 way merge는 Base를 보지 않고 2개의 차이점을 비교해서 병합하는 것이며, 3 way merge는 Base를 참고하여 달라지는 내용을 병합하는 것이다.  결과를 보면, 2 way merge는 Me와 Other이 다르면, Merge를 수행할 때 Conflit를 도출하게 된다. (같은 라인에 다른 내용.. 더보기
[Git] git stage area + log + diff + reset 왜 commit 전 add를 해야 하는 것인가?프로젝트를 하다보면 여러 소스코드를 수정하게 된다. 이때 자연스럽게 commit하는 시기를 놓칠 수 있으며, 수정되는 version이 매우 커질 수 있다. 이때 git은 add라는 과정을 통해서 내가 해당 version에서 수정을 반영하고 싶은 파일만을 반영할 수 있다. 아래 내용을 담고 있는 f1, f2라는 파일이 있다고 가정하자. git status를 통해, 어떠한 변화가 있는지 확인해보자. f1과 f2가 모두 modified (빨간색)으로 표시되어 있다. 새로운 version으로 만들고 싶은, f1.txt만 add로 추가해보고, status 확인 git add한 파일에는 Changes to be comitted: 에 초록색으로 표시되고, add를 하.. 더보기
[Git] init - add - commit - log - Git은 버전 관리 시스템 (Version Control System) 중 하나의 제품임예를 들어 Report_final_final_final.xlsx 등 파일에 이름을 계속 저장하면서 최종본을 만들어 왔다면, 파일의 이름을 언제나 Report.xlsx로 유지하면서, 파일의 내용에 대한 변경 사항은 컴퓨터가 관리가 하는 것 - 이러한 파일의 변경사항 트래킹 이외에도 Backup, Recovery, Collaboration에 대한 방식을 제공소스 코드를 관리하여 Backup 하는 것, 이전 버전을 손 쉽게 복원하는 Recovery, 그리고 다른 사람과 같은 소스코드를 바탕으로 협업을 하는 방식을 제시함 - 본질적인 요소가 존재하며(변경사항을 관리), 혁신적인 요소(기존의 CVS, SVN을 뛰어넘을 수.. 더보기
데이터 분석가의 일 Data Analyst(DA)로 약 1년간 일하면서 느낀 데이터 분석가의 주요 업무를 정리해보았다. 회사에서 정의하고 있는 분석가의 역할에 따라서 달라질 수 있는 내용이다. 따라서 지극적으로 개인적인 의견임을 밝힌다. 모든 업무가 똑같겠지만, 비즈니스 임팩트를 내지 못하는 분석가의 업무는 지루하며 의미가 없다고 생각한다. 분석가는 모든 업무를 비즈니스 목표와 일치시켜야 한다. 지금 회사에서는 DA 업무보다는 ML 엔지니어(ML Engineer)의 역할을 수행하고 있는데, 비즈니스 난제 해결을 위해 ML/AI 기술을 활용하고, 비즈니스 목표를 달성하기 위한 프로덕션 레벨의 ML 개발을 목표로 하고 있다. 개인적으로 머신러닝 엔지니어가 조금 더 적성에 맞는것 같다. 다음에는 ML 엔지니어의 일에 대해서 작성.. 더보기
딥러닝의 과대적합(Overfitting)을 해결하자 Train 데이터셋에 대한 학습은 잘 되고 있지만, Validation loss가 감소하지 않고 증가하면 보통 우리는 Train 데이터셋에 과대적합 (오버피팅)이 일어났다고 할 수 있다. 왜 오버피팅이 문제가 되는가? 그것은 모든 ML 알고리즘의 목적은 일반화 성능에 있기 때문이다. 우리가 학습을 통해 배운 알고리즘은 학습 데이터에서만 잘 작동하면 문제가 될 것이다. 즉, 우리가 보지 못한 Unseen 데이터에 잘 작동해야 한다. 따라서, 일반화 성능을 높이기 위해서 우리는 오버피팅을 고려해야 한다. 딥러닝 아키텍쳐를 구성하기 시작하는 순간 오버피팅과의 싸움이 일어난다. 따라서, 다양한 기법을 통해 이를 해결하기 위해 노력해야한다. 그럼 과소적합과 과대적합은 무슨 차이일까? 과소 적합은 데이터를 제대로 .. 더보기
[추천 시스템] Model-based CF: Matrix Factorization(MF) CF는 두 가지 방식이 존재한다.  첫째, Memory-based: Rating 자료를 모두 메모리에 가지고 있으면서 추천을 위한 계산에 사용하는 방식둘째, Model-based: Rating 자료는 모델을 학습하는 데 사용하고 추천을 위한 계산은 학습된 모델로 하는 방식 앞선 포스팅에서 진행한 3가지 협업필터링은 메모리에 적재된 Rating에 관련된 자료를 바탕으로 추천을 위한 계산을 했다. 앞으로 배울 Deep-learning based 모델이나 MF와 같은 모델은 자료를 바탕으로 모델을 학습하고 추천은 학습된 모델을 바탕으로 진행하는 Model-based 방식이다. Model-based CF는 Model learning에는 많은 자원이 소요되지만, 예측에 들어가는 비용은 비교적 적은 편이며, 모델을.. 더보기
[추천 시스템] 협업 필터링 Collaborative Filtering - KNN + User Bias 이전 포스팅에서는 유저의 영화 Rating 성향이 더욱 가까운 사람 K명을 선정하여 추천에 이용하는 트릭을 활용하였다. 추천 모델 RMSE CF - 사용자 유사도 1.017 CF - 사용자 유사도 + 유사도 순위 1.010 CF - 사용자 유사도 + 유사도 순위 + 사용자 평가 경향 맨 아래에 공개 이번에는 사용자 평가의 경향을 모델에 반영하여 추천 모델의 성능(RMSE)을 높여 보자. 이전 포스팅 - CF - 사용자 유사도 + 유사도 순위 https://fenzhan.tistory.com/32 [추천 시스템] 협업 필터링 Collaborative Filtering - 유사도 순위 반영 이전 포스팅에서는 단순히 영화를 시청한 유저가 영화를 보고 평가한 Rating 성향을 코사인 유사도를 바탕으로 구하고,.. 더보기
[추천 시스템] 협업 필터링 Collaborative Filtering - 유사도 순위 반영 이전 포스팅에서는 단순히 영화를 시청한 유저가 영화를 보고 평가한 Rating 성향을 코사인 유사도를 바탕으로 구하고, 유사도가 높은 사람을 추천하는 CF를 구현해보았다. 이번에는 유저의 영화 Rating 성향이 더욱 가까운 사람 K명을 선정하여 추천에 이용하는 트릭을 활용해보자. 추천 모델 RMSE CF - 사용자 유사도 1.017 (본 포스팅) CF - 사용자 유사도 + 유사도 순위 1.010 이전 포스팅 - CF - user https://fenzhan.tistory.com/30 [추천 시스템] 협업 필터링 Collaborative Filtering - User based 추천시스템 개요 추천시스템은 아이템에 대한 사용자의 예상 선호도를 추정하는 것이다. 따라서 어떻게 하면 아이템에 대한 사용자의 .. 더보기