전체 글 310

[Recommender System] 이웃 기반 방법론 - Cosine, Pearson

이웃 기반 방법론은 사용자-사용자 간 유사도 혹은 상품-상품 간 유사도를 이용하자는 아이디어에서 시작됐다. 이웃 기반 모델에서는 다음과 같은 두 가지 기본 가정을 설정한다. NBCF(Neighbor Based Collaborative Filtering)라고 불리기도 한다. 1. 사용자 기반 모델 : 유사한 사용자들은 같은 상품에 대해 비슷한 평점을 부여한다. 2. 아이템 기반 모델 : 유사한 상품은 동일한 사용자에세 비슷한 방식으로 평점이 부여된다. 사용자 기반 이웃 모델을 구성하기 위해서는 타깃 사용자(i)와 유사한 사용자를 찾기 위해서는 다른 모든 사용자와의 유사도를 계산해야한다. 유사도 계산을 수행할 때에는 사용자마다 본인의 기준이 다르기 때문에 평점 스케일이 다를 수 있음을 고려하고 계산을 수..

[Recommender System] context of recommender systems

컨텍스트의 사전적인 정의는 '이벤트를 둘러싸고 적절한 해석을위한 자원을 제공하는 프레임' 이며, 다양한 곳에서 다양한 의미로 쓰인다. 자연어 처리에서는 문장의 문맥을 뜻하고, 추천시스템에서는 시간적, 공간적 컨텍스트를 예로 들 수 있다. 고객에게 제품을 추천해줄 때 여름인데 겨울 패딩을 추천해주는 것보다는 반팔티와 같은 여름의 컨텍스트에 맞는 제품을 추천해주는 것이 구매할 확률이 높기 때문이다. 추천시스템에서는 이와 같이 도메인에 특화된 다양한 문제점들이 있기 때문에 이를 해결함으로써 고객 만족도가 더욱 높아지고, 매출액에 직결될 수 있을 것이다. 시간에 민감한 추천 시스템 : 영화를 추천해줄 때 최근 개봉한 영화를 추천해주는 것과 개봉한지 몇 년이 지난 영화를 추천해주는 것은 큰 차이가 있다. 필연적으..

[Python] logistic regression

로지스틱 회귀는 이진분류에서 사용되는 모델 중 흔히 쓰이는 모델이라고 보면 된다. 이론적인 부분을 공부하고 싶다면 여기를 눌러서 들어가면 볼 수 있다. 나는 임의로 데이터를 생성하여 분석을 진행했기 때문에 모델의 성능이 좋게 나오지는 않았다. 공식 데이터를 가지고 분석을 수행하면 보다 좋은 결과를 도출할 수 있을 것이다. def sigmoid(z): return 1/(1+np.exp(-z)) def f(x, w, b): return np.dot(x, w) + b def df(x, w, b): return x, 1 def binary_cross_entropy(z, t): return -(t*np.log(z) + (1-t)*np.log(1-z)).mean() 분석을 진행하기 앞서 로지스틱의 수식(sigmoi..

Python/Scikit-learn 2022.01.17

[Python] Monte Carlo algorithm

몬테카를로(Monte Carlo) 방법은 원하는 면적을 무한정 찍어서 그 면적을 구한다는 방식이라고 보면 된다. 정사각형 내에 원을 그리고 원의 면적을 구하고 싶다면 랜덤하게 점을 찍고 원 안에 들어간 점의 수와 전체 점을 찍은 수를 가지고 원 면적의 근삿값을 찾을 수 있을 것이다. 여기서는 몬테카를로 샘플링을 이용하여 원주율(pi)을 근사해볼 생각이다. import matplotlib.pyplot as plt import numpy as np import math import time %matplotlib inline plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.family'] = 'NanumGothic' plt.rcParams['a..

[Python] numpy - view, copy

파이썬의 리스트의 경우 다른 객체에 할당받은 후 그 객체를 변경해도 변경되지 않지만, 넘파이 array의 경우 view(원본)을 나타내기 때문에 원본이 변경되지 않게 하거나 copy를 해주어야한다. li = [x for x in range(10)] arr_li = li[:] arr_li[0] = 100 print(li) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(arr_li) # [100, 1, 2, 3, 4, 5, 6, 7, 8, 9] 리스트의 경우 위와 같이 객체 0번을 받아서 변경을해도 변경이 되지 않는 것을 확인할 수 있다. 복사본의 경우 변경되어 있는 것이 보인다. arr = np.arange(10) arr_view = arr[:] arr_view[0] = 100 pr..

Python/Numpy 2022.01.14

[Python] 왜 넘파이를 사용해 ?

파이썬에서 벡터와 행렬 간 연산 속도는 엄청나게 느리다. 파이썬의 속도가 느리기 때문에 빠른 계산속도가 필요한 경우 C언어로 패키지를 만들어서 진행한다. 하지만 넘파이의 경우 파이썬의 연산 속도가 느린 부분을 일부 보완해줄 수 있는 엄청나게 좋은 패키지 중 하나이다. import numpy as np import time n = 150 a = np.random.rand(n, n) b = np.random.rand(n, n) c = np.zeros([n,n]) start = time.time() for i in range(n): for j in range(n): for k in range(n): c[i][j] = a[i][k] * b[k][j] print(time.time() - start) # 4.142..

Python/Numpy 2022.01.14

[Python] Class

딥러닝을 다루면 많이 접해볼 수 있는 클래스(Class)이다. 딥러닝을 할 때에는 기본적으로 클래스를 생성하여 함수를 받아오지만 머신러닝을 하거나 단순 코딩을 할 때에는 클래스를 정의하지 않고 사용했던 것 같다. 클래스를 만들고 내부에 함수와 변수, 인스턴스 등을 만들어 사용을 한다. Class 내부의 구조는 다음과 같다. 생성자(Constructor) : 클래스를 만들 때 자동으로 호출되는 특수한 함수라고 부르며, 파이썬에서는 생성자의 이름을 일반적으로 __init__으로 하고, 첫번째 인수로 객체 자신을 의미하는 self를 받아서 사용한다. 메소드(Method) : 클래스가 갖는 함수이며, 인스턴스를 조작하는 인스턴스 메소드, 클래스 전체를 처리하는 메소드, 인스턴스 없이도 작동하는 메소드 등이 존재..

Python 2022.01.14

[Python] Scikit-learn에서 cross validation 사용하기

교차검증법에는 다양한 방법이 존재한다. 일반적으로는 n개의 집단으로 나누어 교차검증을 하지만 LOOCV(Leave-One-Out Cross-Validation)의 경우에는 분할의 수를 데이터의 수 만큼 나누어 평가를 하게 된다. 만약 데이터가 100개라면 데이터를 100개로 나누고 99개는 학습, 나머지 하나로 평가를 하는 형태로 진행된다. LOOCV의 경우 데이터의 수가 적을 때 극한으로 성능을 끌어올리기 위해서 주로 사용된다. 사이킷-런(scikit-learn)에서는 교차검증에 대한 패키지를 제공해주고 있다. sklearn 2.0 버전 이하인 경우에는 아래와 같은 방식으로 호출을한다. from sklearn import cross_validation 하지만 그 이후 버전에서는 아래와 같이 cross_..

Python/Scikit-learn 2022.01.14

[Recommender System] 협업 필터링(Collaborative Filtering)

협업 필터링(Collaborative Filtering; CF)은 추천시스템을 배우는 사람의 입장에서는 가장 기본적인 모델 중 하나일 것이다. 협업 필터링 중에서 초기 알고리즘인 이웃 기반 협업 필터링은 크게 두 가지 유형이 존재한다. 1. 사용자 기반 협업 필터링(User-based CF) 사용자 기반 협업 필터링은 사용자에게 추천을 제공해주기 위해 해당 사용자와 유사한 사용자의 평점을 이용하여 아이템을 추천해주는 방법을 말한다. 2. 아이템 기반 협업 필터링 (Item-based CF) 아이템 기반 협업 필터링은 아이템에 대한 추천을 만들기 위해 해당 타깃 아이템과 유사한 그룹(A)을 형성한 후 타깃 사용자가 그룹(A)에 대한 평점을 확보하여 이를 기반으로 추천해주는 방법을 말한다. 사용자 기반 CF..

[Recommender System] Collaborative Filtering, Content-based, Knowledge-based

아마존, 넷플릭스, 구글 등 여러 기업에서 책, 영화, 뉴스 등을 추천해주기 위해서 여러 추천시스템 방법을 활용하고 있다. 추천시스템 중에서 가장 대표적인 예로는 협업 필터링(Collaborative Filtering), 콘텐츠 기반(Content based), 지식 기반(Knowledge based) 등이 존재한다. 협업 필터링(Collaborative Filtering) 협업 필터링은 추천시스템을 공부하는 사람이라면 다들 들어 봤을 것이라고 생각한다. 협업 필터링 방법은 사용자와 아이템 간의 관계를 보는 방법이라고 생각하면 된다. 명시적(Explicit) 데이터를 기준으로 한다면 사용자가 영화를 시청하고 난 후 해당 영화에 평점을 매기는 형태로 행렬(matrix)를 만든 것이고, 암묵적(Implici..

[Statistics] Factor analysis

요인분석(factor analysis, FA)은 관측한 여러 변수로부터 요인을 추출하여 요인들을 통해 변수 간의 관련성을 설명하려는 기법이다. 예를 들어, 제품에 대한 소비자 평가를 위해 20개의 평가 설문항목을 만들 경우, 설문항목은 제품품질, 제품서비스, 제품가치 등과 같은 세 가지 잠재요인(Latent factor)의 함수로서 표현할 수 있다. 이처럼 요인분석은 여러 관측변수로부터 직접적으로 관측이 가능하지 않은 공통의 요인을 추출하는데 이용한다. 주성분분석처럼 적재값을 산출하여 점수화하지만, 주성분분석과는 달리 요인분석은 측정 가능한 변수들로부터 그 안에 잠재되어 있는 해석 가능한 소수의 요인을 찾는 것을 목적으로 한다. 이를 위해 요인과 변수 간의 관계가 명확히 드러나도록 요인의 축을 회전(ro..

[Short] Sentiment Analysis in TripAdvisor, Ana Valdivia (2017)

Sentiment Analysis in TripAdvisor / IEEE Intelligent Systems Vol. 32 (2017) Ana Valdivia, Victoria Luzon, Francisco Herrera Web 1.0에서 Web 2.0으로 변화하면서 웹에 방대한 양의 Review나 사용자의 의견 등의 데이터가 많아졌다. 본 논문에서는 감성분석을 수행하는데 CoreNLP, Syuzhet, Bing, SentiStrength 총 4가지의 분석 기법을 통해서 Tripadvisor Review를 분석했다. 첫번째로 긍정적인 리뷰만을 가지고 분석을 시행했는데, 긍정적인 리뷰 내에서도 상당히 많은 양의 부정적인 리뷰들이 속해있었다. 사용자들은 주로 평점을 좋게 주고, 리뷰 내용은 부정적인 의견을 ..

[Statistics] non-parametric test with bootstrapping

모수통계 방법을 사용할 수 없을 때 비모수통계와 permutation test를 많이 이용하지만, permutation test는 경험적 분포를 만들어 내기 때문에 p-value를 구해낼 수는 있지만 신뢰구간을 추정하는 작업은 쉽지 않다. 왜냐하면 신뢰구간은 검정통계량이 아니라 모집단 평균의 추정치인 표본평균에 대해서 계산되어야하기 때문이다. 이때 bootstrapping 을 사용해 신뢰구간 추정에 있어 적합한 비모수검정 기법을 제공해준다. bootstrapping은 원래의 데이터로부터 표본을 반복적으로 무작위 추출(random sampling with replacement)하여 검정통계량의 경험적 분포를 생성한다는 것이 permutation test와 큰 차이점이다. ( permutation은 samp..

[Statistics] non-parametric statistics with rank sum

추론통계는 parametric, nonparmetric으로 나누어 볼 수 있다.모수통계는 모수를 추정하는 기법이며, 모수통계의 대표적인 방법은 t-test로 꼽을 수 있다. 비모수 검정은 모수에 대한 가정을 전제로 하지 않고 모집단의 형태와 관계없이 주어진 데이터에서 직접 확률을 계산하여 통계적으로 검정하는 분석방법이다. 일반적으로 표본의 수가 30개 미만이면서 정규성을 만족하지 않는 경우, 수치에는 의미가 없고 상대적 크기가 의미있는 경우, 변수의 척도가 등간, 비율이 아닌 명목, 서열 척도로 구성되었을 경우 비모수적 검정을 사용한다. 비모수검정에는 데이터의 순위를 이용하는 전통적인 비모수적 접근법인 rank test, resmapling을 통해 생성한 경험적 분포(empirical distributi..

반응형