Go together

If you want to go fast, go alone. If you want to go far, go together.

파이썬 머신 러닝 완벽 가이드 23

행렬 분해를 이용한 잠재 요인 협업 필터링 실습

행렬 분해를 이용한 잠재 요인 협업 필터링 실습¶ 일반적으로 행렬 분해에는 SVD가 자주 사용되지만, 사용자-아이템 평점 행렬에는 사용자가 평점을 매기지 않은 null 데이터가 많기 때문에 SGD나 ALS 기반의 행렬 분해를 사용합니다. 여기서는 SGD를 이용하겠습니다. 앞의 잠재 요인 협업 필터링 절의 경사 하강법을 이용한 행렬 분해에서 사용한 함수 get_rmse()를 다시 활용하고, 행렬 분해 로직을 matrix_factorization()함수로 정리합니다. 파라미터 R은 사용자-아이템 평점 행렬, K는 잠재 요인의 차원 수, steps는 SGD의 반복 횟수, learning_rate는 학습률, r_lambda는 L2 규제 계수입니다. In [9]: import numpy as np from skl..

아이템 기반 최근접 이웃 협업 필터링 실습

아이템 기반 최근접 이웃 협업 필터링 실습¶ 최근접 이웃 협업 필터링은 사용자 기반과 아이템 기반으로 분류합니다. 이 중 추천 장확도가 더 뛰어난 아이템 기반의 협업 필터링을 구현해 보겠습니다. 사용자가 영화 평점을 매긴 사용자-영화 평점 행렬 데이터 세트를 다운로드하겠습니다. https://grouplens.org/datasets/movielens/latest/ 에서 내려받을 수 있습니다. 데이터 가공 및 변환¶ In [1]: import numpy as np import pandas as pd movies = pd.read_csv('/content/drive/MyDrive/military/grouplens/movies.csv') ratings = pd.read_csv('/cont..

콘텐츠 기반 필터링 실습 - TMDB 5000 영화 데이터 세트

콘텐츠 기반 필터링 실습 - TMDB 5000 영화 데이터 세트¶TMDB 5000 영화 데이터 세트는 IMDB 사에서 제공하는 데이터 세트입니다. https://www.kaggle.com/tmdb/tmdb-movie-metadata 에서 내려받을 수 있습니다. 장르 속성을 이용한 영화 콘텐츠 기반 필터링¶콘텐츠 기반 필터링은 사용자가 특정 영화를 감상하고 그 영화를 좋아했다면, 그 영화와 비슷한 특성/속성, 구성요소를 가진 다른 영화를 추천하는 것입니다. 유사성을 판단하는 기준에는 장르, 감독, 배우 등이 있습니다. 콘텐츠 기반 필터링 추천 시스템을 영화 장르 속성을 기반으로 만들어 보겠습니다. 장르 칼럼 값의 유사도를 비교한 뒤 그 중 높은 평점을 가지는 영화를 추천하는 방식입니다. 데이터 로딩 및 가..

추천 시스템

추천 시스템의 개요와 배경¶추천 시스템의 개요¶추천 엔진에 사용될 수 있는 데이터는 아래와 같습니다. 사용자가 어떤 상품을 구매했는가? 사용자가 평가한 영화 평점은? 제품 평가는? 사용자가 스스로 작성한 자신의 취향은? 사용자가 무엇을 클릭했는가? 추천 시스템의 유형¶추천 시스템은 크게 아래와 같이 나뉩니다. 콘텐츠 기반 필터링(Content based filtering) 방식 협업 필터링(Collaborative filtering) 방식 최근접 이웃(Nearest Neighbor) 잠재 요인(Latent Factor) 추천시스템의 초창기에는 콘텐츠 기반 필터링, 최근접 이웃 협업 필터링 방식이 주로 사용됐지만, 넷플릭스 추천 시스템 경연 대회에서 행렬 분해(Matrix Factorization) 기법을..

텍스트 분석 실습 - 캐글 Mercari Price Suggestion Challenge

배운 내용¶ zip() & zip(*) Series.nunique() LabelBinarizer scipy.sparse.hstack() del '객체 변수명' gc.collect() Mercari Price Suggestion Challenge¶Mercari사의 제품에 대해 가격을 예측하는 과제입니다. 제공되는 데이터 세트는 제품에 대한 여러 속성 및 제품 설명 등의 텍스트 데이터로 구성됩니다. 이 데이터를 기반으로 예상 가격을 판매자들에게 제공하고자 합니다. 데이터 세트는 https://www.kaggle.com/c/mercari-price-suggestion-challenge/data 에서 내려받으실 수 있습니다. train.tsv.7z/train.tsv를 다운로드 합니다. train_id: 데이터 ..

텍스트 분류 실습 - 20 뉴스그룹 분류

배운 내용 sklearn.datasets.fetch_20newsgroups CountVectorizer TfidfVectorizer Pipeline 본문 사이킷런이 내부에 가지고 있는 예제 데이터인 20 뉴스그룹 데이터 세트를 텍스트 분류에 적용해 보겠습니다. 텍스트 분류는 학습 데이터를 학습해 모델을 생성한 후 이 학습 모델을 이용해 다른 문서의 분류를 예측하는 것입니다. 사이킷런의 fetch_20newsgroups() API를 이용해 뉴스그룹의 분류를 수행해 보겠습니다. 텍스트를 피처 벡터화로 변환하면 일반적으로 희소 행렬 형태가 됩니다. 그리고 이러한 희소 행렬에 분류를 효과적으로 처리할 수 있는 알고리즘은 로지스틱 회귀, 선형 서포트 벡터 머신, 나이브 베이즈 등입니다. 이 중 로지스틱 회귀를 이..

군집화 실습 - 고객 세그먼테이션

배운 내용 DataFrame.isnull() Series.value_counts() DataFrame.astype() DataFrame.groupby(columns).method() GroupBy.agg() dt.datetime() pd.to_datetime() Series.apply(lambda) silhouette_score silhouette_samples 고객 세그먼테이션의 정의와 기법 고객을 세그먼테이션(Customer Segmentation)은 다양한 기준으로 고객을 분류하는 기법을 지칭합니다. 고객 세그먼테이션은 CRM이나 마케팅의 중요 기반 요소입니다. 고객 세그먼테이션의 주요 목표는 타깃 마케팅입니다. 타깃 마케팅이란 고객을 여러 특성에 맞게 세분화해서 그 유형에 따라 맞춤형 마케팅이나 ..

군집화

배운 내용 KMeans.fit() make_blobs() & np.unique() KMeans.fit_predict() KMeans.cluster_centers_ sihouette_samples() silhouette_score() DataFrame.groupby() MeanShift MeanShift.fit_predict() sklearn.cluster.estimate_bandwidth MeanShift.cluster_centers_ sklearn.mixture.GaussianMixture GaussianMixture.fit() GaussianMixture.predict() sklearn.cluster.DBSCAN 본문 K-평균은 군집화(Clustering)에서 가장 일반적으로 사용되는 알고리즘입니다...

차원 축소

배운 내용 PCA StandardScaler sklearn.decomposition.PCA PCA.explained_variance_ratio_ RandomForestClassifier cross_val_score DataFrame.rename(columns) DataFrame.corr() sns.heatmap() LDA LinearDiscriminantAnalysis SVD numpy.linalg.svd np.diag() np.dot() scipy.sparse.linalg.svds scipy.linalg.svd sklearn.decomposition.TruncatedSVD NMF 본문 차원 축소는 피처가 매우 많은 다차원 데이터 세트의 차원을 더 적은 피처(차원)를 갖도록 축소하는 것입니다. 차원이 증..