Gợi ý không cá nhân hóa

Xây dựng Recommendation Engine bằng Python

Robert O'Callaghan

Director of Data

Xác định cặp sách

0     User_223           The Great Gatsby <---| Đọc bởi cùng người dùng
1     User_223     The Catcher in the Rye <---|
2     User_131        The Lord of the Rings
3     User_965               Little Women <---| Đọc bởi cùng người dùng
4     User_965       Fifty Shades of Grey <---|
... ...
Xây dựng Recommendation Engine bằng Python

Hoán vị so với tổ hợp

Người dùng book_title
User_233 The Great Gatsby
User_233 The Catcher in the Rye

Thành:

Book A Book B
0 The Great Gatsby The Catcher in the Rye
1 The Catcher in the Rye The Great Gatsby

Sách đi kèm với The Great Gatsby -> The Catcher in the Rye

Sách đi kèm với The Catcher in the Rye -> The Great Gatsby

Xây dựng Recommendation Engine bằng Python

Tạo hàm ghép cặp

from itertools import permutations

def create_pairs(x):


  return pairs
Xây dựng Recommendation Engine bằng Python

Tạo hàm ghép cặp

from itertools import permutations

def create_pairs(x):
  pairs =                   permutations(x.values, 2)

  return pairs
  • permutations(list, length_of_permutations)) Tạo đối tượng có thể lặp chứa mọi hoán vị
Xây dựng Recommendation Engine bằng Python

Tạo hàm ghép cặp

from itertools import permutations

def create_pairs(x):
  pairs =              list(permutations(x.values, 2))

  return pairs
  • permutations(list, length_of_permutations)) Tạo đối tượng có thể lặp chứa mọi hoán vị

  • list() Chuyển đối tượng này thành danh sách dùng được

Xây dựng Recommendation Engine bằng Python

Tạo hàm ghép cặp

from itertools import permutations

def create_pairs(x):
  pairs = pd.DataFrame(list(permutations(x.values, 2)), 
                           columns=['book_a','book_b'])
  return pairs
  • permutations(list, length_of_permutations)) Tạo đối tượng có thể lặp chứa mọi hoán vị

  • list() Chuyển đối tượng này thành danh sách dùng được

  • pd.DataFrame() Chuyển danh sách thành DataFrame với cột book_abook_b

Xây dựng Recommendation Engine bằng Python

Áp dụng hàm cho dữ liệu

book_pairs = book_df.groupby('userId')['book_title'].apply(perm_function)
print(book_pairs.head())
                                book_a                                   book_b
userId                                                   
User_223     0        The Great Gatsby                   The Catcher in the Rye
             1  The Catcher in the Rye                         The Great Gatsby
User_965     0            Little Women                        40 Shades of Grey
             1       40 Shades of Grey                             Little Women
User_773     0       The Twilight Saga    Harry Potter and the Sorcerer's Stone
                                                                            ...
Xây dựng Recommendation Engine bằng Python

Làm gọn kết quả

book_pairs = book_pairs.reset_index(drop=True)
print(book_pairs.head())
                     book_a                                   book_b
0          The Great Gatsby                   The Catcher in the Rye
1    The Catcher in the Rye                         The Great Gatsby
3              Little Women                        40 Shades of Grey
4         40 Shades of Grey                             Little Women
5         The Twilight Saga    Harry Potter and the Sorcerer's Stone
                                                                 ...
Xây dựng Recommendation Engine bằng Python

Đếm số lần ghép cặp

pair_counts = book_pairs.groupby(['book_a', 'book_b']).size()
book_a                                book_b                             
The Twilight Saga                     Fifty Shades of Grey           16
                                      Pride and Prejudice            12
                                                                    ...
pair_counts_df = pair_counts.to_frame(name = 'size').reset_index()
print(pair_counts_df.head())
     book_a                                book_b                       size    
1    The Twilight Saga                     Fifty Shades of Grey           16
2    The Twilight Saga                     Pride and Prejudice            12
                                                                         ...
Xây dựng Recommendation Engine bằng Python

Tra cứu gợi ý

pair_counts_sorted = pair_counts_df.sort_values('size', ascending=False)
pair_counts_sorted[pair_counts_sorted['book_a'] == 'Lord of the Rings']
                  book_a                                     book_b size
137    Lord of the Rings                                 The Hobbit   12
147    Lord of the Rings      Harry Potter and the Sorcerer's Stone   10
143    Lord of the Rings                        The Colour of Magic    9
                                                                     ...
Xây dựng Recommendation Engine bằng Python

Ayo berlatih!

Xây dựng Recommendation Engine bằng Python

Preparing Video For Download...