전체 글 34

Selenium을 활용한 크롤링

공부를 한 후에도 계속해서 사용하기 편하도록 동적 크롤링에 해당하는 Selenium의 함수들을 코드와 함께 기록해 놓으려 합니다! • Selenium 라이브러리 로드 및 드라이버 생성 # 기본 selenium 라이브러리 로드 from selenium import webdriver from selenium.webdriver.common.keys import Keys import time # driver 생성 chromedriver = 'chromedriver' #chromedriver의 위치 driver = webdriver.Chrome(chromedriver) ※ 크롤링 동작이 화면에 보이지 않고 크롤링이 되는 Headless Chrome 위의 driver 생성 부분 대신 사용하게 되면 크롤링이 돌아가는..

MAB(Multi Armed Bandit)를 활용한 추천

오늘은 MAB 알고리즘을 추천 시스템에 활용해 보는 방법에 대해 알아보겠습니다. 1. MAB란? 2. MAB 알고리즘 종류 2-1. epsilon greedy algorithm 2-2. UCB (Upper Confidence Bound) 2-3. Thompson Sampling 3. MAB를 이용한 추천 시스템 1. MAB란? MAB는 강화학습으로 분류되지는 않지만 해당 원리를 활용한 알고리즘으로 위의 그림과 같이 각 슬롯머신에서 얻을 수 있는 Reward의 확률이 모두 다른 여러 개의 슬롯머신을 의미합니다. MAB는 수익을 최대화하기 위해서 arm을 어떤 policy에 의해 당겨야 하는지를 결정하는 알고리즘입니다. MAB는 강화학습의 핵심 아이디어인 Exploitation(이용)과 Exploration..

추천시스템 2021.10.14

잠재 디리클레 할당(Latent Dirichlet Allocation)을 활용한 추천

학기를 시작하고 취업 준비를 시작하다 보니 포스팅에 속도가 줄어들게 되네요...ㅎ 그래도 공부한 내용들에 대해서 꾸준하게 기록해보도록 하겠습니다! 오늘 알아볼 내용은 토픽 모델링의 가장 대표적인 알고리즘인 잠재 디리클레 할당(Latent Dirichlet Allocation)인 LDA 알고리즘을 추천에 활용하는 방법입니다. 1. 디리클레 분포 2. LDA의 생성 과정 3. LDA를 추천에 적용 1. 디리클레 분포 토픽 모델링이란 문서의 집합에서 토픽을 추출하는 과정입니다. LDA는 다음과 같이 주어진 문서와 각 문서가 어떤 토픽을 가지는지 확률 모형을 통해 표현합니다. 여기서 말하는 확률 모형이 디리클레 분포입니다. 디리클레 분포란 연속 확률분포의 하나로 k차원의 실수 벡터 중 벡터의 요소가 양수이며 모..

추천시스템 2021.10.11

Time Series Anomaly Detection Algorithms

이번에 진행하는 전압 안정화 시스템 개발 프로젝트를 위해 시계열 데이터의 이상치 탐지 방법을 찾던 도중 Medium에서 이와 관련된 좋은 Post를 읽고 정리해 봤습니다. 1. 이상치의 종류 2. 시계열 데이터 이상치 탐지 알고리즘 종류 2-1. STL Decomposition 2-2. Classification and Regression Trees 2-3. ARIMA 1. 이상치의 종류 additive outliers 짧은 기간에 급등하면 생기는 뾰족한 부분. 예를 들면, website에서 사용자의 수가 짧은 기간에 엄청 증가한 경우 같은 종류의 이상치 temporal changes website가 다운돼서 사용자의 수가 0에 가까워진 것과 같은 종류의 이상치 level shifts or seasona..

Medium Post Review 2021.09.23

[Image Captioning] Dual Level Collaborative Transformer for Image Captioning

본 논문은 AAAI 2021에 게재된 논문으로 Image Captioning의 성능을 높이는 방법에 대해 소개하고 있습니다. Xiamen University, Tencent Youtu Lab, National Tsing Hua University에서 연구하고 발표된 논문입니다. 1. Image Captioning 2. Dual Level Collaborative Transformer (DLCT) 2-1. Background 2-2. Model Architecture 2-3. Intergrating Position Infromation 2-4. Dual Level Collaborative Encoder 2-5. Objectives 3. Result 4. Conclusion 1. Image Captionin..

논문 리뷰 2021.08.27

[Python] 선택 정렬 & 삽입 정렬

*해당 포스팅은 이것이 코딩 테스트다 with python(나동빈 지음) 교재를 공부하며 작성한 글입니다. 안녕하세요! 오늘은 정렬 알고리즘 중 선택 정렬과 삽입 정렬에 대해 알아보겠습니다. 정렬이란 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 말합니다. 문제 상황에 적절하지 않은 정렬 알고리즘을 이용하면 프로그램이 비효율적으로 동작하여 필요 이상으로 시간을 많이 소요하게 됩니다. 따라서 상황에 맞는 적절한 정렬 알고리즘을 사용하는 것이 중요하다고 할 수 있습니다. 정렬 알고리즘에 대해 공부하기 전에 알고리즘의 효율성을 나타내는 척도인 시간 복잡도에 대해 알아보겠습니다. 시간 복잡도는 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지를 의미합니다. 알고리즘의 성능을 평가할 때 최악의 ..

텍스트 전처리와 RNN을 활용한 스팸 메일 분류

안녕하세요! 오늘은 순환 신경망인 RNN을 활용하여 스팸 메일을 분류해보겠습니다. RNN 포스팅에서 알아봤듯이 스팸 메일 분류는 다 대 일 모델입니다. 단어 시퀀스를 입력받아 정상 메일인지 아닌지를 출력하는 것입니다. 데이터셋은 캐글의 "SMS Spam Collection Dataset"을 활용했습니다. https://www.kaggle.com/uciml/sms-spam-collection-dataset 순서 1. 데이터 파악 2. 데이터 전처리 3. RNN 모델 학습/예측/평가 1. 데이터 파악 #필요한 모듈 및 라이브러리 설치 import numpy as np import pandas as pd %matplotlib inline import matplotlib.pyplot as plt import u..

딥러닝 2021.08.24

TF-IDF를 활용한 컨텐츠 기반 필터링 (Content-based Filtering)

안녕하세요! 오늘은 TF-IDF를 활용한 컨텐츠 기반 필터링에 대해 알아보겠습니다. 1. 컨텐츠 기반 필터링이란? 2. Item Profile 3. TF-IDF를 활용하는 방법 4. User Profile 5. Item Profile과 User Profile을 이용하여 추천 6. 컨텐츠 기반 필터링의 장단점 1. 컨텐츠 기반 필터링이란? 컨텐츠 기반 필터링이란 유저가 선호하는 아이템을 기반으로 해당 아이템과 유사한 아이템을 추천하는 것을 말합니다. 위의 그림을 보면, 유저가 "빨간 원"과 "빨간 삼각형"을 좋아한다고 했으면 이 유저에게 "주황 원"과 "빨간 사각형"을 추천해줍니다. 그 이유는 유저가 좋아하는 아이템을 통해 User Profile을 만들면 "빨간색", "삼각형", "원"이 나옵니다. 그래서..

추천시스템 2021.08.23

내가 추천 시스템을 공부하는 이유

안녕하세요! 최근에 추천 시스템을 공부하고 싶다는 생각이 들어 러닝스푼즈의 추천 시스템 강의를 무작정 신청했습니다! 추천 시스템에 대해 공부한 내용을 기록하기 전에 "왜" 추천 시스템에 대해 공부하고 싶어 졌는가에 대해 간단하게나마 적어보려 합니다. 유튜브를 보면서 어느 기업에서 추천 시스템을 처음 쓴지는 모르지만, 제가 제일 처음 추천 시스템을 접한 곳은 유튜브입니다. 유튜브를 보면서 "내가 원하는 것을 어떻게 알고 나에게 보여주는 거야?" 라는 생각을 항상 했습니다. 유튜브의 한 영상을 들어가서 보다 보면 계속 제 주의를 끄는 영상들이 보여줘서 그 영상을 누르게 만들고 시간 가는 줄 모르게 본 적이 한두 번이 아닙니다. 도대체 내가 재밌어 하는걸 어떻게 아는 건가라는 생각이 들었고 이 어떻게에 대한 ..

추천시스템 2021.08.22