전체 글 72

[Recommendation] 추천 시스템 - 콘텐츠 기반 필터링 (Contents-based Filtering)

🚦 이번 포스팅에서는 〰️ 📌 콘텐츠 기반 필터링 (Contents-based Filtering)이란? 📌 콘텐츠 기반 필터링 방법 우리가 영화를 추천받고 싶을 때 어떻게 할까? 나랑 성향이 비슷한 친구들이 본 영화를 찾아본다. 내가 좋아하는 감독, 장르, 키워드의 영화를 찾아본다. 이게 바로 협업 필터링 (Collaborative Filtering) Content Based Filtering 이다! 저번 포스팅에서는 협업 필터링에 대해 알아보았다. 이번 포스팅에서는 추천 시스템 알고리즘의 기본 중 두번째 방법인 콘텐츠 기반 필터링 (Content-based Filtering) 에 대해서 알아보자! 📌 콘텐츠 기반 필터링 (Contents-based Filtering)이란? : 사용자에가 특정 아이템..

ML/Recommendation 2024.01.20

[프로그래머스] LV1. 키패드 누르기

숫자가 {2,5,8,0} 일때를 잘 다루는것이 관건! 처음에는, 단순히 현재 위치와 target값을 빼주고, 그 값이 3이면 1으로 바꿔주는 계산방식을 생각했었다. 하지만 만약 target=6이고 현재 위치가(왼손이든 오른손이든) 7이라면, 실제거리는 3이지만 이 로직은 1이라고 말할 것이다. 따라서, 전체 키패드를 격자로 생각하고, 각각의 좌표를 구해준 뒤 좌표 거리 계산을 해주어야 한다! 자세한 내용은 주석을 참고바란다. #include #include #include using namespace std; /* 시작 : 왼손 엄지 - *(10), 오른손 엄지 - #(12) 상하좌우 한칸씩만 이동가능 1,4,7 => 왼손, 3,6,9 => 오른손 2,5,8,0(11) => 둘 중 가까운 손 (거리 같으..

[Recommendation] 추천시스템 - 협업 필터링(Collaborative Filtering)

🚦 이번 포스팅에서는 〰️ 📌 협업 필터링 (Collaborative Filtering)이란? 📌 협업 필터링 종류 1️⃣ Memory Based Approach ➡️ User-based Filtering ➡️ Item-based Filtering 2️⃣ Model Based Approach ➡️ Item-based Filtering 📌 협업 필터링의 한계점 우리가 영화를 추천받고 싶을 때 어떻게 할까? 나랑 성향이 비슷한 친구들이 본 영화를 찾아본다. 내가 좋아하는 감독, 장르, 키워드의 영화를 찾아본다. 이게 바로 협업 필터링 (Collaborative Filtering) Content Based Filtering 이다! 이번 포스팅에서는 추천 시스템 알고리즘의 기본 중 첫번째 방법인 협업 필터링 (..

ML/Recommendation 2024.01.19

[Recommendation] 추천시스템에 대해서

많은 AI 모델들이 점점 일상에 녹아들고 있는 현 시점에서, 가장 잘 녹아있는 분야는 단연 "추천(Recommendation)"분야라고 한다. 대표적인 예시로는 유튜브 알고리즘이나 넷플릭스, 인터넷 쇼핑몰 등에서 쉽게 찾아볼 수 있을 것이다. 그 중, 넷플릭스의 추천시스템에 대해 간략히 살펴보면서 어떤 방식을 채택하고 있는지 알아보자. 넷플릭스는 여러 요소를 활용하여 사용자의 시청 확률을 추정한다. 카테고리, 출시 연도, 제목, 장르 사용자가 매긴 평점, 시청기록 사용자자와 유사 취향을 가진 사용자의 시청 기록 사용자가 사용하는 기기, 요일, 위치 등 넷플릭스의 머신러닝 모델은 개별 사용자로부터 학습하고, 사용자의 이용 시간동안 데이터를 수집하며 업데이트한다. 따라서, 더 많은 이용시간을 가질수록 더 정..

ML/Recommendation 2024.01.18

[Error] CUDA error: invalid device ordinal 해결방법

BERT 돌리다가 이런 런타임 에러를 마주했다. 이건, 내 시스템의 GPU에 내가 호출한 GPU가 없어서 나타나는 에러인데, 시스템에 있는 디바이스들을 잘 확인해보고 호출해주어야 한다. 만약, 그런거 잘 모르겠지만 일단 확실하게 한개는 있다고 자신한다면 그냥 "cuda:0"을 사용해주면된다. 시스템에 있는 디바이스를 출력해보는 코드는 아래와 같다. from tensorflow.python.client import device_lib device_lib.list_local_devices() 이외에도 간단하게 있는지 여부와 몇개인지 출력하고싶으면 아래의 코드를 실행하면 된다. print(torch.cuda.is_available()) #GPU작동 가능여부 확인 print(torch.cuda.device_co..

ML 2024.01.18

[C++] 프로그래머스 LV1. 가장 많이 받은 선물 (Kakao 기출문제)

허허.. LV1 이라고 해서 완전 얕봤다가 map을 까먹은 나는야 바보 천치라는 것을 깨닫게 해주었다.. 물론 다른 방법이 많겠지만, 이게 가장 쉬운 접근법인것 같아 공유한다. 일단 다음달 선물을 계산하는 방법은 크게 다음과 같다. 주고 받은 선물 이력이 있는 경우 ➡️ 더 많이 준 사람에게 선물++ 주고 받은 선물 이력이 없는 경우 ➡️ 선물 지수 비교 후, 선물 지수 큰 사람에게 선물++ (선물 지수도 같으면 0) 총 3개의 map을 이용했는데, 주고받은 선물 확인용 선물 지수 확인용 다음 달에 받을 선물 개수 저장용 1번 map은 2차원으로 만들어 주었고 모든 gift를 돌면서 1번과 2번 map 값을 채워주었다. 만들어진 2차원 map(1번)을 다 검사하면 중복으로 검사가 되므로, 두번째 loop..

[C++] 프로그래머스 LV2. 조이스틱

유명한 그리디 문제! 고려해야하는 부분은 크게 두가지인데, 상하(A~Z)최소값과 좌우최소값이다. 1. 상하 최소 구하기 우선 쉬운것부터 고려하자면 상하 최소는 target에서 'A'까지의 거리와 'Z'에서 target까지의 거리를 비교해주고 최소값을 더해주면된다. 이때, 'Z'에서 거리를 고려하는 경우는 switch가 한번 일어나기 때문에 +1 해준다. 2. 좌우 최소 구하기 이 문제의 핵심이라고 할 수 있다. 우선, 좌우 경우의 수는 크게 두개로 볼 수 있다. 간단하게 순차 진행을 해버리느냐와 역행을 넣느냐 두가지로 나눠 볼 수 있다. 우리가 여기서 집중해야하는 경우는 역행을 넣었을 때, 역행을 언제 하냐에 포인트가 있다. 예를 들어, 'BBAAAAB'는 역행 후 다시 돌아와서 순차 진행을 하는 것이 ..

[NLP] BERT로 네이버 영화 리뷰 감정분류하기

저번 포스팅에서 BERT 모델에 대해 알아봤다! 이번에는 BERT를 이용해서 네이버 영화 리뷰 데이터를 긍정, 부정 감정분류하는 실습을 해보고자한다. 여러 블로그들을 참고해보며 코드를 작성했고, 특히 Teddy님의 블로그를 많이 참고하였다. (압도적 감사) 처음부터 뚝딱뚝딱 만들 수 있으면 좋겠지만, 이번 실습의 목표는 코드를 뜯어보고 체화시키는 것이기 때문에 욕심 부리지 않기로 했다! 대신, 더 내 코드로 만들어서 점점 성장하는 걸로!! 이번 코드에는 python의 magic method가 많이 나오는데, 한번 정리하면 좋을것같아서 추후 정리예정!! 전체 코드 깃헙 -> 링크 시작해봅시다!! 1. 데이터셋 데이터셋은 github에 올라와 있는 naver sentiment movie corpus를 clo..

ML/NLP 2024.01.12

[Git] Github으로 협업하기

이번에 github으로 오랜만에 협업을 진행하면서, 기억 저편에 있던 깃헙 사용방법에 대해서 정리하면서 진행해야할 것 같다는 생각이 들었다. 나란 사람.. 벌써 다 까먹다니..😀 이 기회에 제대로 정리 잘 해서 다신 안 까먹어야겠다! 1. Fork 진행할 프로젝트의 Repository를 나의 Repository로 Fork한다. 2. Clone & Local Remote fork로 생긴 내 계정 Repository주소를 가지고 로컬 저장소에서 clone한다. 3. Branch 생성 로컬에서 코드를 추가하는 작업은 branch 만들어서 진행한다. 💡 Branch 관리하기 Branch 생성하기 : git branch [브랜치명] Branch 생성하고 체크아웃하기 : git checkout -b [브랜치명] B..

CS/Git 2024.01.07

[NLP] BERT에 대해서

첫번째로, BERT 모델에 대해서 공부해보자. BERT : Bidirectional Encoder Representations from Transformers로, 2018년도 google이 공개한 AI 언어 모델 이름에서 알 수 있듯이, 자연어를 이해하기 위한 양방향 학습 모델을 모두 지원하는 알고리즘이다. 3.3억 단어의 방대한 코퍼스를 정제 및 임베딩하여 학습하고 스스로 라벨링하여 준지도학습으로 수행했다. 💡 기본 구조 Transformer의 Encoder을 쌓아올린 구조로, Base 버전에는 12개를 쌓았고 Large 버전에서는 24개를 쌓았다. 💡 BERT의 토크나이저 WordPiece : BERT는 단어보다 더 작은 단위로 쪼개는 서브워드 토크나이저를 사용. BPE(Byte Pair Encodi..

ML/NLP 2024.01.06
728x90