Milestone2 part1에서는 user data를 입력받아 해당 user data를 기반으로 Top10의 영화를 추천해준다.
그래서 우선 user에 대한 data를 아무것도 입력 받지 않았을 때 추천해주는 기능을 구현하였다.
즉 command가 아래와 같을 때의 결과값을 구현하였다.
우선 movieID, Title, Genre, total rating, vote counter를 멤버변수로 가지는 class Movie_data_node로 ArrayList를 생성한다. 이 ArrayList를 movie_rating_matrix라고 하자. 그런 다음 IMDB의 weighted rating 방법을 통해 각 영화의 가중평균을 구한다.
IMDB의 Weighted rating을 구하는 방법은 다음과 같다.
W = (vR+mC)/(v+m)
v = 해당 영화의 총 투표수
m = Top 차트에 들기 위한 최소한의 투표수
R = 해당 영화의 평균 평점
C = 모든 영화의 평균 평점
v와 R 값은 Movie_data_node에서 쉽게 구할 수 있으며 m과 C는 각각 다음과 같은 메소드를 이용하여 구할 수 있다.
해당 메소드의 헤더는 다음과 같다
static int Percentile(ArrayList<Movie_data_node> movie_rating_matrix, double p)
그런 다음 movie_rating_matrix에서 vote count가 m 이상인 객체만 골라서 classified_table라는 ArrayList를 만든다.
그 후 Weighted rating에 따라 내림차순으로 List를 sort 하고 상위 10개의 영화만 출력한다.
간단하게 설명했지만 코드에는 복잡한 부분이 다소 있다. 이 설명을 바탕으로 코드 리뷰를 하면 조금은 더 이해하기 쉬울 것이다.
Make simple recommendation system
Milestone2 part1에서는 user data를 입력받아 해당 user data를 기반으로 Top10의 영화를 추천해준다. 그래서 우선 user에 대한 data를 아무것도 입력 받지 않았을 때 추천해주는 기능을 구현하였다. 즉 command가 아래와 같을 때의 결과값을 구현하였다.
구현 방법에 대해 간단하게 알아보자
우선 movieID, Title, Genre, total rating, vote counter를 멤버변수로 가지는 class
Movie_data_node
로 ArrayList를 생성한다. 이 ArrayList를movie_rating_matrix
라고 하자. 그런 다음 IMDB의 weighted rating 방법을 통해 각 영화의 가중평균을 구한다.IMDB의 Weighted rating을 구하는 방법은 다음과 같다.
W = (vR+mC)/(v+m)
v = 해당 영화의 총 투표수 m = Top 차트에 들기 위한 최소한의 투표수 R = 해당 영화의 평균 평점 C = 모든 영화의 평균 평점
v와 R 값은
Movie_data_node
에서 쉽게 구할 수 있으며 m과 C는 각각 다음과 같은 메소드를 이용하여 구할 수 있다. 해당 메소드의 헤더는 다음과 같다그런 다음
movie_rating_matrix
에서 vote count가 m 이상인 객체만 골라서classified_table
라는 ArrayList를 만든다. 그 후 Weighted rating에 따라 내림차순으로 List를 sort 하고 상위 10개의 영화만 출력한다.간단하게 설명했지만 코드에는 복잡한 부분이 다소 있다. 이 설명을 바탕으로 코드 리뷰를 하면 조금은 더 이해하기 쉬울 것이다.