You are on page 1of 2

CÁI NHÌN ĐẦU TIÊN VỀ DỮ LIỆU

Chúng tôi không có quyền truy cập vào toàn bộ dữ liệu phim của lịch sử Netflix, nhưng có một bộ dữ liệu
tuyệt vời cho chúng tôi có thể sử dụng, được gọi là Movielens. Bộ dữ liệu này chứa hàng chục triệu xếp
loại của các bộ phim ( sự kết hợp của ID phim, ID người dùng và một đánh giá số ), mặc dù chỉ sử dụng
một tập hợp con số gồm 100.000 xếp hạng trong số đó cho ví dụ này. Nếu bạn cảm thấy nó thú vị, thì nó
sẽ là một dự án học tập tuyệt vời để có thể tạo ra một bản sao của phương pháp trên toàn bộ 25 triệu bản
tập dữ liệu đề xuất, thứ mà bạn có thể lấy ở website của họ.
Tập dữ liệu có sẵn thông qua các chức năng fastai thông thường :
Dựa trên README, bảng chính nằm trong tệp u.data. Nó được phân tách bằng tab và các cột lần lượt là
người dùng, phim, đánh giá và dấu thời gian. Vì những cái tên đó không được mã hóa nên chúng tôi chỉ
đưa ra chúng khi đọc tệp Pandas. Đây là một trong những cách để mở bảng :
Mặc dù nó đã có được những thông tin mà chúng ta cần, nhưng nó không phải là một cách đặc biệt hữu
ích cho con người tra cứu dữ liệu. Figure 8-1 cho thấy cùng một dữ liệu được lập bảng chéo thành một
bản dễ nhìn hơn với con người.
Chúng tôi đã chọn một vài bộ phim phổ biến nhất và những người dùng xem nhiều phim nhất, cho ví dụ
bảng chéo này. Các ô trống trong bảng này là những thứ mà chúng tôi muốn mô hình của mình học cách
điền vào nó. Đó là chỗ mà người dùng chưa xem lại phim, có lẽ là do họ chưa xem. Đối với mỗi người
dùng, chúng tôi muốn tìm ra những bộ phim mà họ có nhiều khả năng xem nhât. Nếu chúng tôi biết đối
với mỗi người dùng, về mức độ yêu thích của họ đối với từng danh mục mà bộ phim có thể có, chẳng hạn
như thể loại, độ tuổi, đạo diễn và diễn viên yêu thích, v.v., và chúng tôi biết cùng thông tin về từng bộ
phim, thì một cách đơn giản để có thể điền vào chiếc bảng này bằng cách nhân các thông tin lại với nhau
với từng bộ phim và kết hợp chúng. Ví dụ : giả sử các yếu tố này nằm trong khoảng từ -1 đến +1, với số
dương sẽ cho thấy những kết quả phù hợp hơn và số âm sẽ cho thấy những kết quả ít hợp hơn và các danh
mục như là khoa học viễn tưởng, hành động và phim cũ, thì chúng ta có thể có đại diện như bộ phim The
Last Skywalker như sau :
Vậy như ví dụ, ta thấy điểm khoa học viễn tưởng là 0.98, và độ không cũ là -0.9. Chúng tôi có thể trình
bày cho người dùng thích thể loại phim khoa học viễn tưởng mới bằng cách :
Chúng tôi bây giờ có thể tính toán độ hợp giữa 2 sự kết hợp này :
Khi ta nhân 2 vector lại với nhau và cộng chúng lại ta được tích vô hướng. Nó được sử dụng rất nhiều
trong học phần và tạo cơ sở cho phép nhân ma trận. Chúng ta sẽ xem xét nhiều hơn về phép nhân ma trận
và tích vô hướng trong Chapter 17.
Cũng như vậy chúng ta xét đến bộ phim Casblanca như trên :
Độ hợp giữa hai sự kết hợp được hiển thị như sau :
Vì chúng tôi không thể biết các yếu tố tiềm ẩn là gì và chúng tôi không biết cách để chấm điểm chúng để
cho từng người dùng và bộ phim, nên chúng tôi tìm hiểu được chúng.

HỌC VỀ CÁC YẾU TỐ TIỀM ẨN


Đáng ngạc nhiên là có rất ít sự khác biệt giữa việc chỉ định cấu trúc của một mô hình, như chúng ta đã
làm phần trước, và việc học một mô hình, vì chúng ta chỉ có thể sử dụng phương pháp giảm dần độ dốc
chung của mình.
Bước 1 : Khởi tạo ngẫu nhiên một tham số
Các tham số này sẽ là một tập hợp các yếu tố tiềm ẩn cho mỗi người dùng và bộ phim. Chúng tôi sẽ phải
có quyết định bao nhiêu để sử dụng. Chúng ta sẽ phải sớm thảo luận về cách chọn cái này, nhưng với mục
đích minh họa, bây giờ chúng ta sử dụng 5. Bởi vì mỗi người dùng sẽ có có một tập hợp các yếu tố này và
mỗi tập hợp các yếu tố này nên chúng tôi có thể hiển thị các giá trị được khởi tạo ngẫu nhiên này ngay
bên cạnh người dùng và bộ phim trong bảng chéo của mình và sau đó chúng tôi có thể điền vào các tích
chấm cho mỗi sự kết hợp này ở giữa. Ví dụ, Hình 8-2 cho thấy nó trông như thế nào trong Microsoft
Excel với công thức ô trên cùng bên trái được hiển thị làm ví dụ.
Bước 2 : Tính toán dự đoán
Như chúng ta đã thảo luận, chúng ta có thể làm điều này bằng cách đơn giản lấy tích vô hướng của mỗi
phim với mỗi người dùng. Ví dụ : nếu yếu tố người dùng tiềm ẩn đầu tiên biểu thị liệu phim có nhiều
cảnh hành động hay không, thì tích của những yếu tố đó sẽ đặc biệt cao nếu một trong hai người dùng
thích nhiều cảnh hành động trong phim hay người dùng không thích cảnh hành động trong phim và bộ
phim không có cảnh hành động nào. Mặt khác, nếu chúng ta có sự không phù hợp ( người dùng thích
phim hành động nhưng phim đó không phải phim hành động hoặc là người dùng không thích phim hành
động mà phim đó lại là phim hành động) thì sản phẩm đó sẽ không được tốt.
Bước 3 : Tính toán lại tổn thất
Chúng ta có thể sử dụng phần hàm mất mát mà chúng ta muốn; bây giờ hãy chọn sai số bình phương
trung bình, vì đó là một cách hợp lý để thể hiện độ chính xác của một dự đoán.
Đó là tất cả những gì mà chúng ta cần. Với điều này, ta có thể tối ưu hóa các tham số của mình (các yếu tố
tiềm ẩn) bằng cách sử dụng hệ số giảm dần độ dốc ngẫu nhiên, chẳng hạn như để giảm thiểu tổn thất. Ở
mỗi bước, trình tối ưu hóa giảm dần độ dốc ngẫu nhiên sẽ tính toán sự phù hợp giữa từng bộ phim và từng
người dùng bằng cách sử dụng tích vô hướng và sẽ so sánh chúng với đánh giá thực tế mà mỗi người đưa
ra cho từng bộ phim. Sau đó, nó sẽ tính toán đạo hàm của giá trị này và bước dịch chuyển trọng số mô
hình. Sau khi làm điều này nhiều lần, tổn thất sẽ ngày càng giảm và các đánh giá ngày càng tốt hơn.
Để sử dụng được chức năng Leaner.fit thông thường, ta cần phải đưa dữ liệu của mình vào DataLoaders,
vì vậy hãy tập trung vào nó ngay bây giờ.

You might also like