Collaborative Filtering Là Gì

     

Recommendation phát âm một cách đơn giản và dễ dàng là khuyến cáo một sản phẩm đến đúng fan cần mua. Gỉa sử công ty của bạn chuyển động ở Việt Nam. Điều đó không tồn tại nghĩa rằng 95 triệu con người Việt sẽ cài hàng của người tiêu dùng bạn nhưng mà chỉ 1 phần trong số đó gồm nhu cầu. Trong số các khách hàng hàng mong muốn thì ko phải ai ai cũng sẽ mua toàn bộ các sản phẩm của bạn mà họ tất cả khi chỉ cài đặt một vài ba sản phẩm mà họ quan tâm.

Bạn đang xem: Collaborative filtering là gì

Một công ty nếu như muốn tối nhiều hóa roi thì điều quan trọng nhất họ yêu cầu hiểu được khách hàng họ phải gì? Recommendation là một thuật toán kì diệu có thể giúp bạn tiến hành điều đó.

Hãy tưởng tượng tình hình marketing sẽ như thế nào nếu không có thuật toán này? Một loạt những hệ quả mà ta có thể hình dung ra:

Công ty không thể tìm được đúng người tiêu dùng tiềm năng khi người có nhu cầu đối cùng với một thành phầm lại ko được kính chào bán. Tín đồ không có nhu cầu lại bị tiếp cận mời chào. Điều này tạo lãng phí thời gian và mang đến mất thiện cảm của khác sản phẩm về dịch vụ thương mại của công ty.

Hiệu quả marketing gần như thể không đáng chú ý nếu không tìm đúng tập khách hàng. Chi tiêu quảng cáo, ngân sách cho nhân viên sale tăng thêm nhưng lệch giá vẫn thế. Theo một nghiên cứu, một trong những doanh nghiệp chuẩn bị sẵn sàng bỏ ra tự 30-40% lợi nhuận cho vấn đề marketing. Đây là một ngân sách không hề nhỏ nhưng nhằm tồn tại bọn họ không thể chấm dứt đốt tiền. Cuối cùng người hưởng lợi những nhất lại là google, facebook.

Chính bởi thể ngày này thuật toán recommendation được cải tiến và phát triển và ứng dụng rộng rãi trong những doanh nghiệp thuộc phong phú và đa dạng các lĩnh vực khác biệt như thương mại điện tử, tài chính, ngân hàng, kinh doanh, cung cấp lẻ, phim ảnh,….

Các phương thức recommendation

Đối cùng với những bạn đã thân quen với recommendation thì các cách thức tôi sắp reviews sẽ không còn mới lạ, so với những bạn mới tiếp xúc đây có lẽ rằng là những tin tức hữu ích. Lịch sử dân tộc ra đời sau internet, recommendation chỉ mới xuất hiện và phát triển cách đây khoảng chừng 10 năm. Mặc dù có tuổi đời còn khá trẻ tuy thế recommendation là một nghành phát triển khôn cùng nhanh, có số lượng bài báo khoa học béo và thu hút được nhiều nhà nghiên cứu. Theo phe cánh machine learning cổ điển, recommendation sẽ bao hàm 2 nhánh chính:

content-based: Đưa ra các khuyến cáo mua bán cho người dùng dựa vào nội dung tương quan đến sản phẩm. Chẳng hạn một bài xích hát với các điểm sáng như: người biểu diễn - Xuân Mai, năm tạo ra - 2002, thể một số loại nhạc em nhỏ sẽ cân xứng với các nhỏ xíu học mẫu mã giáo. Một sản phẩm có sệt điểm: là xì gà, thương hiệu - Habanos, nước nhà sản xuất - Cuba sẽ phù hợp với những người dân giới tính nam, gồm thu nhập cao với sành hút thuốc lá.

collaborative filtering: Hay còn được gọi là lọc tương tác, sử dụng sự cửa hàng qua lại trong hành vi sắm sửa giữa các khách hàng để search ra sở trường của một quý khách đổi với cùng 1 sản phẩm. Hầu hết các hành động hoặc sở trường của mọi người đều phải sở hữu những điểm sáng chung và hoàn toàn có thể nhóm lại thành các nhóm tương đồng. Một thiếu phụ A trường hợp đến ẩm thực ăn uống mua dầu ăn uống thường download thêm nước tương và nước mắm. Hành động này lặp lại đối với 100 lượt buôn bán là 90 lần thì năng lực cao một phụ nữ B nếu sở hữu dầu ăn cũng biến thành mua thêm nước tương và nước mắm. Từ đó sẽ khuyến nghị sản phẩm cho người sử dụng dựa trên hành vi của các khách hàng khác liên quan nhất.

kết hợp cả hai phương pháp: hình như chúng ta cũng hoàn toàn có thể sử dụng phối hợp cả 2 cách thức trên để tạo ra thành một thuật toán kết hợp. Ưu điểm của phương thức này chính là vừa tận dụng được các thông tin từ phía sản phẩm và các thông tin về hành vi bán buôn của tín đồ dùng.

Về diễn giải mã toán 2 phương pháp này tôi thấy các bài viết từ 23 mang lại 25 bên trên machine learning cơ bạn dạng là chi tiết và chuẩn chỉnh mực nhất. Để phát âm cặn kẽ về thuật toán các bạn có thể tham khảo các nội dung bài viết này.

Ngoài ra, nếu khách hàng là một tình nhân thích deep learning, sẽ sở hữu thêm không hề ít những phương thức khác được áp dụng trong recommendation với lại công dụng cao đó là:

Thuật toán LSTM dự kiến sản phẩm có khả năng mua tiếp theo của người sử dụng dựa vào lịch sử hào hùng mua sắm.

Sử dụng các thuật toán NLP (Natural language processing - Xử lý ngữ điệu tự nhiên) nhằm phân tích các thông tin như phần tên sản phẩm, diễn đạt sản phẩm, phản hồi khách hàng về sản phẩm để tìm kiếm ra sản phẩm tương đồng.

Các khối hệ thống search engine dựa vào hình ảnh của sản phẩm.

Sử dụng reignforcement learning để recommend thành phầm dựa trên những dự báo về hành vi tiếp sau của khách hàng hàng.

Thuật toán association nhằm tìm các thành phầm hoặc nhóm quý khách hàng có mối tương tác trong hành vi sắm sửa thông sang 1 chỉ số là levarage.

Và hiện tại các thuật toán về recommendation vẫn đang tiếp tục phát triển trẻ trung và tràn đầy năng lượng tại các công ty và lab nghiên cứu trên toàn thế giới.

Recommendation giúp ích gì cho gian hàng của bạn?

Gỉa sử chúng ta có một quầy hàng rất lớn, hoàn toàn có thể chứa tới vài nghìn sản phẩm. Theo nguyên tắc pareto thì 20% những sản phẩm đặc trưng nhất sẽ mang lại 80% doanh thu, trong khi không gian trưng bày là có hạn nên chúng ta không thể show ra hết 100% các sản phẩm bạn có. Một cách thường thì nhất mà bọn họ thường nghĩ về tới kia là:

Trưng bày số đông sản phẩm phổ cập hoặc bán chạy nhất tại vị trí dễ tiếp cận nhất. Gom các sản phẩm có tác dụng tương tự nhau thành những nhóm thành phầm và triển lẵm một ít thành phầm trong mỗi đội tới khách hàng hàng.

Tuy nhiên việc này có nhược điểm là chưa phải 100% các quý khách hàng tìm mang đến đều có nhu cầu mua mọi sản phẩm phổ cập nhất. Bởi vì đó cần có một thuật toán đọc được với từng nhóm khách hàng có sệt điểm cụ thể sẽ mua gì? cửa hàng cần bày trí các sản phẩm nào? trên đâu? đối với khách mặt hàng nào? thì sẽ buổi tối ưu được doanh thu, tận dụng tối đa được nguồn hàng sẵn có và gia tăng khả năng phân phối hàng.

Đây đó là một trong số những yếu tố then chốt làm cho sự biệt lập giữa các sàn dịch vụ thương mại điện tử bởi vì số số lượng sản phẩm của một sàn thương mại điện tử rất có thể lên cho tới vài triệu nhưng giao diện chỉ có thể chấp nhận được hiển thị một số lượng ít những sản phẩm. Vấn đề cá thể hóa (personalization) để mang ra số đông hiển thị sản phẩm hợp lý nhất cho tới từng cá thể người cần sử dụng sẽ là việc mà phần lớn sàn thương mại điện tử luôn tìm cách cải thiện. Bao gồm nhiều phương pháp để thực hiện tại việc cá thể hóa người dùng và recommendation để giúp đỡ bạn tiến hành việc đó.

Bên dưới bọn họ sẽ lần lượt đi qua các thuật toán này để nắm rõ hơn về phương pháp, cơ chế hoạt động vui chơi của nó.

2.1. Content-based filtering

Về cách thức của content-based filtering vẫn được trình diễn rất chi tiết tại bài xích 23: Content-based Recommendation Systems. Tôi sẽ ra mắt khái quát tuyệt nhất về thuật toán này.

Hàm loss function đối với những thành phầm mà quý khách $i$ đã rating sẽ sở hữu được dạng:

Trong đó $y_ij$ là 1 phần tử của véc tơ $mathbfy_i$, $b_i$ là hệ số tự vày trong phương trình hồi qui con đường tính và $s_i$ là số lượng sản phẩm mà người sử dụng $i$ đã đánh giá.

Xem thêm: Mua Tủ Lạnh 180 Lít Giá Bao Nhiêu, Mua Tủ Lạnh Từ 150

Nếu ta trích xuất ra ma trận nhỏ $mathbfX_i$ có những thành phầm mà quý khách $i$ đã rating. Mỗi chiếc của ma trận là một trong véc tơ những đặc trưng khớp ứng với một sản phẩm. Khi ấy hàm loss function hoàn toàn có thể được viết gọn lại thành:

Với $mathbfe_i$ là véc tơ cột gồm $s_i$ phần từ bằng 1.

Để rút gọn không dừng lại ở đó hàm loss function ta màn trình diễn nó đưới dạng phương trình của ma trận mở rộng:

Ở phía trên ma trận $mathbfarX_i$ là ma trận không ngừng mở rộng của $mathbfX_i$ bằng phương pháp thêm một véc tơ cột bằng 1 sinh hoạt cuối. $mathbfarw_i$ cũng là véc tơ mở rộng của $mathbfw_i$ khi thêm phần tử 1 sinh sống cuối.

Đây là 1 trong những phương trình hồi qui đường tính thân quen nên bài toán giải nó tương đối dễ. Trong một số trong những trường hợp để bớt overfiting thì ta sẽ thêm thành phần điều hành và kiểm soát (regularization term) theo norm chuẩn chỉnh bậc 2 của $mathbfw_i$ cùng với trọng số là $lambda$ (thường có mức giá trị cực kỳ nhỏ). Hàm loss function cùng với thành phần kiểm soát điều hành sẽ như sau:

Ưu điểm của cách thức này là việc phân một số loại hoặc đoán trước rating của các user sẽ tự do nhau. Điểm rating của một quý khách hàng A lên sản phẩm P sẽ không còn bị phụ thuộc vào bởi hầu như user khác nhưng chỉ phụ thuộc vào các đặc điểm liên quan đến sản phẩm P. Vày đó unique dự báo đang được tăng lên khi tài liệu được tích lũy về sản phẩm là phần nhiều trường tất cả quan trọng ảnh hưởng đến sở thích của khách hàng hàng.

2.2. Collaborative filtering

Collaborative filtering là thuật toán lọc tương tác có nghĩa là tìm ra sản phẩm mà khách hàng hàng có công dụng ưa say đắm nhất phụ thuộc những thành phầm mà những khách hàng khác bao gồm hành vi tương tự đã lựa chọn. Thuật toán sẽ không cần sử dụng thông tin thành phầm là nguồn vào cho dự báo rating. Đầu vào của thuật toán là một trong những ma trận nhân tiện ích (ultility matrix) cất giá trị rating của các cặp (user, item). Mỗi cột là các rating nhưng mà một user đang rate với mỗi chiếc là những rating của một tác phẩm được rate. Có 2 phương thức chính được sử dụng trong collaborative filtering bao gồm: Neighborhood-based collaborative Filtering cùng Matrix Fractorization.

2.2.1. Neighborhood-based collaborative Filtering

Ở phương thức này ta sẽ đề xuất xây dựng ma trận hệ số đối sánh của véc tơ rating của các users nhằm tìm ra nhóm users có cùng sở thích. Hệ số đối sánh tương quan giữa những users càng phệ thì sở thích của chúng ta càng giống như nhau với trái lại thì chúng ta càng có sở thích khác biệt. Thuật toán sẽ dự kiến giá trị rating trên một cặp (user, item) chưa được rate bằng cách tính tổng tất cả trọng số các giá trị rating của $k$ users đối sánh tương quan nhất với user đó mà đã rate thành phầm trên. Trọng số thông thường sẽ bẳng chính thông số tương quan.

Để thiết kế một thuật toán Neighborhood-based collaborative Filtering chúng ta cần trải qua công việc cơ phiên bản bên dưới. Để đơn giản hóa quá trình tính toán, tôi xin phép rước hình vẽ minh họa từ blog machine learning cơ bản.

*

Hình 1: Sơ đồ công việc thực hiện tại thuật toán Neighborhood-based collabrative Filtering (source - bài xích 24: Neighborhood-Based Collaborative Filtering). Bao gồm các bước: a) rước trung bình những cột, b) chuẩn chỉnh hóa ma trận bằng phương pháp trừ đi trung bình, c) Tính hệ số đối sánh của ma trận chuẩn chỉnh hóa, d) dự đoán trên ma trận chuẩn chỉnh hóa những vị trí không được rate, e) Diễn giải phương pháp dự báo rating, f) biến đổi sang cực hiếm rating thực tế.

Thuật toán đã trải qua lần lượt các step sau đây:

Chuẩn hóa dữ liệu ở ma trận tiện ích $mathbfY$ bằng cách trừ đi nghỉ ngơi mỗi cột (là những rating của cùng 1 user) trung bình cực hiếm rating của cột. Việc này là để loại trừ sự biệt lập về nấc độ đến điểm của các user. Do ví dụ: Có một số user khó tính có thể cho điểm tối đa là 3 nhưng lại user dễ tính thì điểm thấp duy nhất là 3. Lúc ấy nếu nhận định và đánh giá user khó chịu không thích thắng lợi (nếu ta coi 3 là điểm thấp) hoặc user dễ dàng tính yêu dấu item (nếu ta coi 3 là điểm cao) là không chuẩn chỉnh xác. Chuẩn hóa quý hiếm rating nhằm mục đích mục đích chuyển trung bình rating của những user sau khi chuẩn chỉnh hóa về 0. Gía trị rating dương miêu tả user ái mộ item và trái lại âm vẫn là không thích, bởi 0 là trung lập.

Tính ma trận hệ số tương quan giữa những véc tơ cột. Ma trận tương quan thể hiện sự tương đồng trong hành vi buôn bán giữa các user. Trường đoản cú ma trận tương quan ta hoàn toàn có thể xác định ra những users có sở trường tương đồng hóa với một user xác định. Hệ số đối sánh tương quan dương và càng ngay gần 1 chứng tỏ 2 users có sở thích giống nhau. Hệ số đối sánh tương quan âm là 2 users gồm hành vi trái ngược.

Dự báo rating của một user $u$ cho 1 item $i$ bằng cách xác định bên trên ma trận hệ số đối sánh một tập $mathcalS(u, k | i)$ gồm $k$ users có mức giá trị tương quan lớn nhất đối với user $u$ mà đã rate cửa nhà $i$. Gía trị đoán trước rating của user $u$ sẽ được tính bởi tổng tất cả trọng số của những rating trong tập $k$ users đối sánh tương quan nêu bên trên theo công thức mặt dưới:(haty_i, u = fracsum_u_j in mathcalS(u, k ary_i, u_j extsim(u, u_j))

Chuyển quý hiếm dự báo sinh sống ma trận chuẩn hóa sang quý hiếm dự báo rating bằng phương pháp cộng các giá trị ở ma trận chuẩn chỉnh hóa với giá trị mức độ vừa phải của từng cột.

Hạn chế của phương pháp collaborative filtering:

Thường yêu cầu lưu một ma trận hệ số tương quan với size rất lớn. Bài toán này mang tới tốn tài nguyên tàng trữ và thời hạn tính toán.

Ở bên trên ta đã chọn lựa việc chuẩn chỉnh hóa theo chiều user. Bên cạnh ra, ta cũng rất có thể lựa chọn chuẩn chỉnh hóa theo hướng item mà không làm biến hóa phương pháp bằng phương pháp chuyển vị ma trận nhân thể tích $mathbfY$. Việc lựa chọn chuẩn hóa theo chiều như thế nào sẽ địa thế căn cứ trên kích cỡ theo chiều nào là béo hơn. Thường thì số lượng user sẽ nhiều hơn thế nữa item. Khi đó chuẩn chỉnh hóa theo thành tựu sẽ bổ ích thế hơn bởi: kích thước ma trận hệ số đối sánh giữa những user là nhỏ dại hơn bắt buộc tốn ít tài nguyên. Thêm nữa lúc một user rating một item mới thì giá chỉ trị đổi khác về vừa phải trên từng cột thắng lợi là nhỏ tuổi hơn đối với trường hợp chuẩn chỉnh hóa theo user. Điều này dẫn tới ma trận hệ số đối sánh ít chuyển đổi hơn với tần suất cập nhật cũng ít hơn.

Bên cạnh thuật toán Neighborhood-based collaborative Filtering, một thuật toán không giống cũng nằm trong lớp các bài toán collabrative filtering sẽ là matrix fractorization. Thuật toán này thường mang về độ đúng mực cao hơn và đồng thời yêu ước ít tài nguyên tàng trữ hơn. Rõ ràng về mặt mũi thuật toán thế nào hãy xem phần reviews bên dưới.

2.2.2. Matrix fractorization

Ngoài ra còn một phương pháp collaborative filtering khác dựa trên một phép phân rã ma trận (matrix fractorization). Tức là họ sẽ đối chiếu ma trận ứng dụng thành tích của các ma trận items và ma trận users.

<eginequationmathbfY approx left< eginmatrixmathbfx_1mathbfw_1 và mathbfx_1mathbfw_2 và dots & mathbfx_1 mathbfw_M\mathbfx_2mathbfw_1 & mathbfx_2mathbfw_2 và dots & mathbfx_2 mathbfw_M\dots & dots & ddots và dots \mathbfx_Nmathbfw_1 & mathbfx_Nmathbfw_2 và dots và mathbfx_N mathbfw_M\endmatrix ight> = left< eginmatrixmathbfx_1 \mathbfx_2 \dots \mathbfx_N \endmatrix ight>left< eginmatrixmathbfw_1 và mathbfw_2 và dots và mathbfw_Mendmatrix ight> = mathbfXWendequation>

Khi đó mỗi chiếc của ma trận $mathbfX$ đại diện cho một véc tơ yếu tố ẩn của một item, đó là những yếu tố bất kì, khôn xiết trừu tượng mà bọn họ không nên được sắp xếp tên cho chúng. Từng cột của ma trận $mathbfW$ đại diện cho một véc tơ các hệ số thể hiện mức độ mến mộ của user so với các yếu tố ẩn. Số lượng nhân tố ẩn thông thường là một số trong những có cực hiếm rất nhỏ tuổi so với số lượng user và sản phẩm nên dung lượng cần lưu trữ so với 2 ma trận $mathbfX$ và $mathbfW$ là rất bé dại so với giữ trữ cục bộ ma trận $mathbfY$.

Sau khi tìm kiếm được các ma trận items $mathbfX$ và ma trận users $mathbfW$, giá trị ước lượng rating của một user $j$ lên một thành phầm $i$ sẽ chính bởi tích:(haty_ij = mathbfx_i^Tmathbfw_j)Như vậy giá trị dự báo được xem toán đơn giản và dễ dàng hơn so với Neighborhood-based collaborative Filtering vì chỉ việc thực hiện nay phép nhân véc tơ mà không cần thiết phải cộng với mức độ vừa phải cột để chuyển về giá trị gốc.

Qúa trình dự báo thông số cho quy mô hồi qui của từng user giống như như phương thức content-based filtering. Nhưng tất cả sự phối hợp giữa tìm kiếm nghiệm buổi tối ưu của ma trận items cùng ma trận users. Qúa trình này được tiến hành xen kẽ nhau nên không chỉ tận dụng được các thông tin là nguồn vào của users mà hơn nữa tận dụng được sự giống như nhau vào sở thích của những users. Bởi vì thế phương pháp mới được xếp vào đội collaborative filtering.

Thuật toán

Thuật toán này yêu cầu ta phải tiến hành tối ưu đồng thời cả 2 ma trận users và ma trận items dựa vào hàm mất mát. Khi yêu cầu tối ưu ma trận users $mathbfW$ ta sẽ cố định ma trận items $mathbfX$ và dịch chuyển theo phương gradient descent đạo hàm của $mathbfW$ và ngược lại. Tùy chỉnh cấu hình hàm loss function và quá trình tối ưu sẽ giống như như thuật toán content-based Filtering thường thì ngoại trừ bao gồm thêm thành phần tìm soát regularization của $mathbfX$ với $mathbfW$ với không chứa hệ số tự do. Hàm loss function bao gồm dạng như sau:

Bên dưới là hàm mất mát của ma trận user $mathbfW$ khi thắt chặt và cố định ma trận thành tựu $mathbfX$.

Hàm mất non của ma trận nhà cửa $mathbfX$ khi thắt chặt và cố định ma trận user $mathbfW$:(mathcalL(mathbfX) = sum_j=1^Mfrac12s_j ||mathbfx_jW_j - mathbfy_j||_2^2 + fraclambda2 ||mathbfX||_F^2)

Về bản chất bài toán của chúng ta có thể chia thành $N$ bài bác toán bé dại và mỗi bài xích toán tương ứng với đi kiếm nghiệm tối ưu cho 1 user. Khi đó phương trình mất đuối trên một user sẽ là:

Đạo hàm đối với một user sẽ là:

Một vượt trình cập nhật nghiệm theo gradient descent đã được thực hiện như sau:

Hoàn toàn tương tự ta cũng suy ra phương trình update nghiệm theo gradient descent bên trên $mathbfx_j$:

Qúa trình đào tạo theo gradient descent sẽ khá lâu vì tốc độ hội tụ dựa vào vào learning rate. Trong lúc ta nhận biết hàm loss function trên mỗi user hoặc item hoàn toàn có thể tính toán được nghiệm tối ưu thông qua giải phương trình đạo hàm. Qúa trình hội tụ xen kẹt $mathbfX$ với $mathbfW$ lúc tính theo phương trình nghiệm sẽ nhanh hơn tương đối nhiều so cùng với gradient descent. Phương thức này có tên là ALS (Alternating Least Square). Giải phương trình đạo hàm so với user sản phẩm công nghệ $i$:

<egineqnarrayfrac1s_imathbfX_i^T(mathbfX_imathbfw_i-mathbfy_i) + lambda mathbfw_i & = và 0 \(mathbfX_i^TmathbfX_i+lambda" mathbfI)mathbfw_i và = và mathbfX_i^Tmathbfy_i \mathbfw_i & = và (mathbfX_i^TmathbfX_i+lambda" mathbfI)^-1mathbfX_i^Tmathbfy_iendeqnarray>

Với $lambda’=s_i lambda$.

Tương tự, nghiệm buổi tối ưu đối với item máy $j$:

Chúng ta sẽ tiến hành vòng lặp xen kẹt như sau:

Khởi tạo $mathbfX, mathbfW$

repeat

for i = 1,2,…,M do

$mathbfw_i = (mathbfX_i^TmathbfX_i+lambda’ mathbfI)^-1mathbfX_i^Tmathbfy_i$

end for

for j = 1,2,…,N do

$mathbfx_j = mathbfy_jmathbfW_j^T(mathbfW_jmathbfW_j^T+lambda’ mathbfI)^-1$

end for

Huẩn luyện quy mô ALS bên trên python

Bước 1: Load tài liệu và phân chia mẫu train/test.

Xem thêm: Đơn Vị Kwh Là Gì - Giới Thiệu Về Kwh Trong Điện Mặt Trời

Dữ liệu sẽ được load dưới dạng rdd. Đây là định dạng dữ liệu chịu lỗi tốt và có tác dụng phân tán linh hoạt trên nhiều cụm xử lý của spark. Vị những tiện ích này chúng thường được thực hiện trong các tính toán và thay đổi dữ liệu.