ML 14

유의미한 변수 선택하는 방법 (RFE, RFECV)

머신러닝 데이터를 다루다 보면 너무 많은 변수들을 다룰 때가 있다. 이 변수들을 전부 머신러닝에 학습시킨다면 오히려 예측에 혼선을 주는 변수가 있을 수도 있고, 학습속도 또한 느려질 것이다. 따라서 타겟 예측에 유의미하게 사용될 수 있는 변수들을 선택해줘야할 것이다. 하지만, 당최 변수들을 쳐다봐도 이 변수가 예측에 유의미할까를 판단하는 것은 쉽지않은 것 같다. 이때 변수의 중요도를 보고 선택하는 방법을 사용한다 변수의 중요도를 보는 방법은 여러가지이지만, 이번 포스팅에서는 RFE와 REFCV에 대해 알아보고자 한다. RFE (Recursive Feature Elimination) : 변수 선택 방법으로, 원하는 개수의 변수들이 남을 때까지 학습을 반복하며 유의미하지 않은 변수들을 제거해 나가는 Back..

ML 2024.04.02

경사하강법(Gradient Descent Algorithm)과 Optimizer 종류 정리 2️⃣

이전 포스팅에 이어 RMSProp과 Adam에 대해 계속해서 알아보겠다!📌 Gradient Descent Algorithm이란?📌 Batch gradient descent에 대해서--- momentum 이용1️⃣ Momentum2️⃣ Nesterov Momentum--- learning rate 이용3️⃣ AdaGrad(NEW!) 지수가중이동평균이란?4️⃣ RMSProp5️⃣ Adam  RMSProp를 알기 이전에 "지수가중이동평균"에 대해 알아야한다. 💡 지수가중이동평균이란? 이전의 값과 현재의 값에 다른 가중치 (두 가중치의 합은 1)를 주는 방식이다. 이 식에서 β가 Hyper parameter이고, 보통 0.9를 사용한다.β=0.9일때, 이전값(최근값들)인 Vt-1에..

ML 2024.01.28

경사하강법(Gradient Descent Algorithm)과 Optimizer 종류 정리 1️⃣

이번 포스팅에서는 경사하강법이 무엇인가에 대한 것과 Optimizer의 여러 종류들에 대해 알아보고자 한다.목차는 대충 아래와 같다.📌 Gradient Descent Algorithm이란?📌 Batch gradient descent에 대해서--- momentum 이용1️⃣ Momentum2️⃣ Nesterov Momentum--- learning rate 이용3️⃣ AdaGrad4️⃣ RMSProp5️⃣ Adam  📌 Gradient Descent Algorithm먼저 경사하강 알고리즘이란 함수의 변화도가 가장 큰 방향으로 이동하고자 하는 알고리즘으로,목적함수 J가 있을 때, 이 값을 최소화 하는 θ를 구하는 알고리즘이다.( 여기서 θ는 learnable parameter이고, α..

ML 2024.01.27

차원의 저주(Curse of Dimension)와 차원축소

이번 포스팅에서는 한번쯤은 들어봤을 법한 차원의 저주(Curse of Dimention)와 차원축소 방법들에 대해서 알아보겠다. 차원의 저주란? 간단히 말해 데이터의 차원이 증가할수록 모델의 성능이 저하되는 현상이다. 단순히 데이터 변수의 수가 증가하는 것이 아닌, 관측치 수보다 변수의 수가 많아지는 상황을 말한다. 차원의 저주가 그래서 정확히 뭘 말하는 걸까? 예를 들어, 1차원 데이터에 5개의 샘플이 있을 때, 이때 하나의 샘플은 전체 데이터에서 1/5의 밀집도를 가질 것이다. 여기서 만약 데이터가 2차원일때 하나의 샘플은 5*5 전체에서 1/25의 밀집도를 가지게 된다. 데이터가 3차원이라면? 하나의 샘플은 1/125의 밀집도를 가질것이다. 즉, 차원이 증가할수록 데이터의 밀집도는 줄어들고, 빈공간..

ML 2024.01.25

Bias-Variance Trade-off

이번 포스팅에서는 데이터를 다루면서 한번쯤 들어봤을 Bias-Variance Trade-off에 대해서 알아보고자 한다. Bias는 학습된 모델의 예측값 평균과 실제 값과의 차이를 의미한다. 즉, 높은 bias를 가질수록 제대로된 학습을 하지 못했다고 볼 수 있다. Variance는 예측값의 평균과 실제 값간의 차이를 의미한다. 언뜻 보면 비슷하다고 느낄 수 있으나, 둘은 다른 개념이다. Bias는 모델의 학습이 부족하여 제대로 된 값을 내지 못하는 것에서 오는 에러이고, Variance는 작은 노이즈에서도 overreact를 하는 것에서 오는 에러이다. (과민, Overfitting되었다는 뜻) 그럼 Bias와 Variance가 크고 작을 때 어떤 문제가 나타나는지에 대해 알아보자. Low Varian..

ML 2024.01.24

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

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

ML/Recommendation 2024.01.20

[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

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

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

ML/NLP 2024.01.12
728x90