목록전체 글 (52)
내가 보려고 만든 블로그

기존에 MF 방법의 경우 관찰되지 않은 평점을 예측하고 높은 평점을 기록한 상품에 랭킹을 매기는 방식으로 유저에게 상품을 추천하는 방식을 사용하였다. 하지만 , 이러한 방법에는 2가지 문제점이 있다. 먼저 , 유저가 좋아하는 상품에 랭킹을 매기는 문제를 평점으로 접근을 하는 것이 과연 옳은 접근법인가? 두번째로, 실제 유저에게 추천을 할 때 1,2,3,4,5 정도까지의 랭킹이 중요할텐데 MSE등을 통해 평가를 한다면 상위 랭킹이 아닌 유저가 선호한다고 볼 수없는 순위인 20등, 21등 .... 등의 상품에 대해서도 MSE 값을 줄이기 위해 모델이 동작하게 되므로 모델의 효율성이 떨어진다. 이러한 점을 해결하기 위해 나온것이 바로 Bayesian Personalized Ranking 이다. BPR에서는 i..

SVD++ 은 다음과 같이 구현. 기존에 단순히 user * k (U) , k * item (I) 형태의 행렬로 분해하여 복원하는 방법에서 U를 implicit_matrix * I 형태로 한번 더 분해 해준다. 이런걸 A 최종적으로 복원되는 행렬 = implicit_matrix * I + U*I 로 구현됨. 구현은 요기 https://github.com/todtjs92/Search_and_Recommendation/tree/master/MF
MF 랑 Biased_MF 구현하였다. 1. 토치로 구현하였고 옵티마이저는 Adam 사용, ALS는 나중에 2. 특별한건없구 Biased_MF의 경우 구현할때 biased 텐서를 유저, 아이템 각각에 대해 생성해주고 만들어진 Reconstruction 에 더해주는 방법으로 쉽게 구현할수 있다. 코드는 요기 https://github.com/todtjs92/Search_and_Recommendation/tree/master/MF

Socket을 이용해서 간단한 채팅 프로그램 만들기! 1. Server.py ( 채팅서버 ) import socket from _thread import * client_sockets = [] HOST = 'localhost' PORT = 9099 print("Server Start") server_socket = socket.socket(socket.AF_INET , socket.SOCK_STREAM) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1) server_socket.bind((HOST, PORT)) server_socket.listen() def threaded(client_socket, addr): print('>> Co..
Collaborative Filtering , 너무 유명한 모델이라 자세한 설명은 생략. 코드 구현은 깃에 올려둠 https://github.com/todtjs92/Search_and_Recommendation/tree/master/basic_cf 1. 데이터셋은 네이버 영화 데이터셋으로 했고 용량이커서 따로 구글드라이브 링크 올려둠. 2. 구현은 numpy로 했고 , user_mean으로 정규화 하는 방식으로 구현하였음. 3. Item Cf는 Transpose한 형태라 패스하였음.