สร้างระบบแนะนำภาพยนตร์ของคุณเองโดยใช้ Python
เผยแพร่แล้ว: 2021-03-09คุณสงสัยหรือไม่ว่า Netflix แนะนำภาพยนตร์ที่ตรงกับความสนใจของคุณมากขนาดไหน? หรือบางทีคุณอาจต้องการสร้างระบบที่สามารถให้คำแนะนำแก่ผู้ใช้ได้เช่นกัน?
หากคำตอบของคุณคือใช่ แสดงว่าคุณมาถูกที่แล้ว เพราะบทความนี้จะสอนวิธีสร้างระบบแนะนำภาพยนตร์โดยใช้ Python
อย่างไรก็ตาม ก่อนที่เราจะพูดถึง 'How' เราต้องคุ้นเคยกับ 'What' เสียก่อน
สารบัญ
ระบบคำแนะนำ: มันคืออะไร?
ระบบการแนะนำได้กลายเป็นส่วนสำคัญในชีวิตประจำวันของเรา ตั้งแต่ผู้ค้าปลีกออนไลน์อย่าง Amazon และ Flipkart ไปจนถึงแพลตฟอร์มโซเชียลมีเดีย เช่น YouTube และ Facebook บริษัทดิจิทัลรายใหญ่ทุกแห่งใช้ระบบคำแนะนำเพื่อมอบประสบการณ์ผู้ใช้ที่เป็นส่วนตัวให้กับลูกค้า
ตัวอย่างระบบการแนะนำในชีวิตประจำวันของคุณ ได้แก่:
- คำแนะนำที่คุณได้รับจาก Amazon เมื่อคุณซื้อผลิตภัณฑ์เป็นผลมาจากระบบผู้แนะนำ
- YouTube ใช้ระบบแนะนำเพื่อแนะนำวิดีโอที่เหมาะกับรสนิยมของคุณ
- Netflix มีระบบแนะนำที่มีชื่อเสียงสำหรับการแนะนำรายการและภาพยนตร์ตามความสนใจของคุณ
ระบบผู้แนะนำแนะนำผลิตภัณฑ์ของผู้ใช้โดยใช้ข้อมูล ข้อมูลนี้อาจเกี่ยวกับความสนใจของผู้ใช้ ประวัติ และอื่นๆ หากคุณกำลังศึกษาแมชชีนเลิร์นนิงและ AI จำเป็นต้องศึกษาระบบผู้แนะนำ เนื่องจากระบบเหล่านี้กำลังเป็นที่นิยมและก้าวหน้ามากขึ้น
ประเภทของระบบคำแนะนำ
ระบบการแนะนำมีสองประเภท:
1. ระบบแนะนำการทำงานร่วมกัน
ระบบแนะนำการทำงานร่วมกันจะแนะนำรายการต่างๆ ตามความคล้ายคลึงของผู้ใช้ที่คล้ายคลึงกันสำหรับรายการนั้น โดยจะจัดกลุ่มผู้ใช้ที่มีความสนใจและรสนิยมคล้ายคลึงกัน และแนะนำผลิตภัณฑ์ของตนตามนั้น
ตัวอย่างเช่น สมมติว่าคุณและผู้ใช้รายอื่นชอบ Sholay ตอนนี้หลังจากดู Sholay และชอบมันแล้ว ผู้ใช้รายอื่นก็ชอบ Golmaal เนื่องจากคุณและผู้ใช้รายอื่นมีความสนใจคล้ายกัน ระบบผู้แนะนำจึงแนะนำให้คุณดู Golmaal ตามข้อมูลนี้ นี่คือการกรองการทำงานร่วมกัน
2. ระบบคำแนะนำตามเนื้อหา
ระบบผู้แนะนำตามเนื้อหาแนะนำรายการตามข้อมูลที่ได้รับจากผู้ใช้ อาจอิงจากข้อมูลที่ชัดเจน ('ชอบ', 'แชร์' ฯลฯ) หรือข้อมูลโดยนัย (ประวัติการดู) ระบบการแนะนำจะใช้ข้อมูลนี้เพื่อสร้างโปรไฟล์เฉพาะผู้ใช้และจะแนะนำรายการตามโปรไฟล์นั้น
การสร้างระบบแนะนำภาพยนตร์ขั้นพื้นฐาน
ตอนนี้เราได้ครอบคลุมพื้นฐานของระบบแนะนำแล้ว มาเริ่มสร้างระบบแนะนำภาพยนตร์กัน
เราสามารถเริ่มสร้างระบบแนะนำภาพยนตร์ที่ใช้ Python ได้โดยใช้ ชุดข้อมูล MovieLens แบบเต็ม ชุดข้อมูลนี้มีการจัดประเภทมากกว่า 26 ล้านรายการ แอปพลิเคชันแท็ก 750,000 รายการที่ใช้กับภาพยนตร์มากกว่า 45,000 เรื่อง ข้อมูลจีโนมแท็กมีอยู่ในชุดข้อมูลนี้ซึ่งมีคะแนนความเกี่ยวข้องมากกว่า 12 ล้านคะแนน
เราใช้ชุดข้อมูลทั้งหมดเพื่อสร้างระบบแนะนำภาพยนตร์ขั้นพื้นฐาน อย่างไรก็ตาม คุณสามารถใช้ชุดข้อมูลที่เล็กกว่าสำหรับโปรเจ็กต์นี้ได้ ขั้นแรก เราจะต้องนำเข้าไลบรารีที่จำเป็นทั้งหมด:
ระบบแนะนำภาพยนตร์ขั้นพื้นฐานที่ใช้ Python จะแนะนำภาพยนตร์ตามความนิยมและประเภทของภาพยนตร์ ระบบนี้ทำงานโดยอิงจากแนวคิดที่ว่าภาพยนตร์ยอดนิยมที่มีการโห่ร้องอย่างมีวิจารณญาณจะมีโอกาสสูงที่ผู้ชมทั่วไปจะชอบ โปรดทราบว่าระบบแนะนำภาพยนตร์ดังกล่าวไม่ได้ให้คำแนะนำส่วนบุคคล
ในการใช้งาน เราจะจัดเรียงภาพยนตร์ตามความนิยมและการจัดเรตและส่งต่อไปในอาร์กิวเมนต์ประเภทเพื่อให้ได้ภาพยนตร์ยอดนิยมของประเภท:
ป้อนข้อมูล
md = pd read_csv('../input/movies_metadata.csv')
md.head()
เอาท์พุต
ผู้ใหญ่ | เป็นของ_to_collection | งบประมาณ | ประเภท | วีดีโอ | id | imdb_id | original_title | ภาพรวม | รายได้ | ชื่อ | |||||||
เท็จ | ('id'L 10194 'ชื่อ': 'Toy Story Collection') | 30000000 | [{'id': 16, 'name': 'Animvation'}… | เท็จ | 862 | tt0114709 | เรื่องของของเล่น | นำโดยวู้ดดี้ ของเล่นของแอนดี้ใช้ชีวิตอย่างมีความสุข... | 373554033 | เรื่องของของเล่น | |||||||
1 | เท็จ | น่าน | 65000000 | {{'id': 12, 'name': 'Adventure'}… | เท็จ | 8844 | tt0113497 | จูมันจิ | เมื่อพี่น้อง จูดี้ และ ปีเตอร์... | 262797249 | จูมันจิ | ||||||
2 | เท็จ | ('id': 119050 'name': 'Grumpy Old Men) | 0 | {{'id': 10749, 'name': 'Romance'}... | เท็จ | 15602 | tt0113228 | ชายชราไม่พอใจ | งานแต่งงานของครอบครัวจะจุดชนวนให้สมัยโบราณ... | 0 | คนแก่ขี้บ่น | ||||||
3 | เท็จ | น่าน | 16000000 | {{'id': 35, 'name': 'Comedy'}... | เท็จ | 31357 | tt0114885 | รอหายใจออก | ถูกหลอก ถูกทำร้าย และเหยียบย่ำ... | 81452156 | รอหายใจออก |
ป้อนข้อมูล
md['genres'] = md['genres'].fillna('[]').apply(literal_eval).apply(lambda x: [i['name'] for i in x] if isinstance(x, รายการ ) อื่น [])
สูตรสำหรับแผนภูมิของเรา
สำหรับการสร้างแผนภูมิภาพยนตร์ยอดนิยมของเรา เราใช้การจัดประเภท TMDB เราจะใช้สูตรการให้คะแนนแบบถ่วงน้ำหนักของ IMDB เพื่อสร้างแผนภูมิของเรา ซึ่งมีดังนี้:
คะแนนถ่วงน้ำหนัก (WR) = (iaouaouaouaou)
ในที่นี้ v หมายถึงจำนวนโหวตที่ภาพยนตร์ได้รับ m คือจำนวนโหวตขั้นต่ำที่ภาพยนตร์ควรได้รับบนชาร์ต R หมายถึงคะแนนเฉลี่ยของภาพยนตร์ และ C คือคะแนนโหวตเฉลี่ยสำหรับรายงานทั้งหมด .
การสร้างแผนภูมิ
ตอนนี้เรามีชุดข้อมูลและสูตรแล้ว เราก็เริ่มสร้างแผนภูมิได้ เราจะเพิ่มเฉพาะภาพยนตร์เหล่านั้นในชาร์ตของเราที่มีคะแนนโหวตขั้นต่ำ 95% เราจะเริ่มต้นด้วยการสร้างแผนภูมิ 250 อันดับแรก
ป้อนข้อมูล
vote_counts = md[md['vote_count'].notnull()]['vote_count'].astype('int')
vote_averages = md[md['vote_average'].notnull()]['vote_average'].astype('int')
C = vote_averages.mean()
ค
เอาท์พุต
5.244896612406511
ป้อนข้อมูล
m = vote_counts.quantile(0.95)
ม
เอาท์พุต
434.0
ป้อนข้อมูล
md['year'] = pd.to_datetime(md['release_date'], errors='coerce').apply(แลมบ์ดา x: str(x).split('-')[0] ถ้า x != np. น่าน อื่น np.nan)
ป้อนข้อมูล
คุณสมบัติ = md[(md['vote_count'] >= m) & (md['vote_count'].notnull()) & (md['vote_average'].notnull())][['title', 'year 'vote_count' 'vote_average' 'ความนิยม' 'ประเภท']]
คุณสมบัติ['vote_count'] = คุณสมบัติ['vote_count'].astype('int')
คุณสมบัติ['vote_average'] = คุณสมบัติ['vote_average'].astype('int')
คุณสมบัติ.รูปร่าง
เอาท์พุต
(2274, 6)
อย่างที่คุณเห็น การจะได้ตำแหน่งในชาร์ตของเรา ภาพยนตร์ต้องมีคะแนนโหวตไม่ต่ำกว่า 434 คะแนน คุณอาจสังเกตเห็นว่าเรตติ้งเฉลี่ยของภาพยนตร์ต้องเข้าสู่ชาร์ตของเราคือ 5.24
ป้อนข้อมูล
def weighted_rating(x):
v = x['vote_count']
R = x['vote_average']
ผลตอบแทน (v/(v+m) * R) + (m/(m+v) * C)
ป้อนข้อมูล
คุณสมบัติ['wr'] = คุณสมบัติสมัคร (weighted_rating, axis=1)
ป้อนข้อมูล
ผ่านการรับรอง =Qualified.sort_values('wr', ascending=False).head(250)
เมื่อพร้อมแล้ว มาสร้างแผนภูมิกัน:
ภาพยนตร์ยอดนิยมโดยรวม
ป้อนข้อมูล
คุณสมบัติหัว(15)
เอาท์พุต
ชื่อ | ปี | โหวต_count | โหวต_เฉลี่ย | ความนิยม | ประเภท | wr | |
15480 | การเริ่มต้น | 2010 | 14075 | 8 | 29.1081 | [แอ็คชั่น, เขย่าขวัญ, นิยายวิทยาศาสตร์, ความลึกลับ, A... | 7.917588 |
12481 | อัศวินดำ | 2008 | 12269 | 8 | 123.167 | [ดราม่า แอ็คชั่น อาชญากรรม ระทึกขวัญ] | 7.905871 |
22879 | ดวงดาว | 2014 | 11187 | 8 | 32.2135 | [การผจญภัย, ละคร, นิยายวิทยาศาสตร์] | 7.897107 |
2843 | Fight Club | 1999 | 9678 | 8 | 63.8696 | [ละคร] | 7.881753 |
4863 | เดอะลอร์ดออฟเดอะริงส์: มิตรภาพแห่งแหวน | 2001 | 8892 | 8 | 32.0707 | [ผจญภัย, แฟนตาซี, แอ็คชั่น] | 7.871787 |
292 | นิยายเยื่อกระดาษ | 1994 | 8670 | 8 | 140.95 | [ระทึกขวัญ, อาชญากรรม] | 7.868660 |
314 | การไถ่ถอน Shawshank | 1994 | 8358 | 8 | 51.6454 | [ละครอาชญากรรม] | 7.864000 |
7000 | เดอะลอร์ดออฟเดอะริงส์: การกลับมาของราชา | พ.ศ. 2546 | 8226 | 8 | 29.3244 | [ผจญภัย, แฟนตาซี, แอ็คชั่น] | 7.861927 |
351 | ฟอเรสท์กัมพ์ | 1994 | 8147 | 8 | 48.3072 | [ตลก, ดราม่า, โรแมนติก] | 7.860656 |
5814 | เดอะลอร์ดออฟเดอะริงส์: หอคอยสองหอ | 2002 | 7641 | 8 | 29.4235 | [ผจญภัย, แฟนตาซี, แอ็คชั่น] | 7.851924 |
256 | สตาร์ วอร์ส | พ.ศ. 2520 | 6778 | 8 | 42.1497 | [การผจญภัย, แอ็คชั่น, นิยายวิทยาศาสตร์] | 7.834205 |
1225 | กลับสู่อนาคต | พ.ศ. 2528 | 6239 | 8 | 25.7785 | [ผจญภัย, ตลก, นิยายวิทยาศาสตร์, ครอบครัว] | 7.820813 |
834 | เจ้าพ่อ | พ.ศ. 2515 | 6024 | 8 | 41.1093 | [ละครอาชญากรรม] | 7.814847 |
1154 | จักรวรรดิโต้กลับ | 1980 | 5998 | 8 | 19.471 | [การผจญภัย, แอ็คชั่น, นิยายวิทยาศาสตร์] | 7.814099 |
46 | Se7en | 1995 | 5915 | 8 | 18.4574 | [อาชญากรรม ความลึกลับ ระทึกขวัญ] |
Voila คุณได้สร้างระบบแนะนำภาพยนตร์พื้นฐานที่ใช้ Python!

ตอนนี้เราจะ จำกัด ข้อเสนอแนะของระบบผู้แนะนำของเราให้แคบลงตามประเภทเพื่อให้แม่นยำยิ่งขึ้น ไม่จำเป็นที่ทุกคนจะต้องชอบ The Godfather เท่ากัน
จำกัดประเภทให้แคบลง
ดังนั้น ตอนนี้ เราจะแก้ไขระบบผู้แนะนำของเราให้เจาะจงประเภทมากขึ้น:
ป้อนข้อมูล
s = md.apply(แลมบ์ดา x: pd.Series(x['genres']),axis=1).stack().reset_index(level=1, drop=True)
s.name = 'ประเภท'
gen_md = md.drop('genres', axis=1).join(s)
ป้อนข้อมูล
def build_chart(ประเภทเปอร์เซ็นไทล์=0.85):
df = gen_md[gen_md['genre'] == ประเภท]
คะแนนโหวต = df[df['vote_count'].notnull()]['vote_count'].astype('int')
vote_averages = df[df['vote_average'].notnull()]['vote_average'].astype('int')
C = vote_averages.mean()
m = vote_counts.quantile (เปอร์เซ็นไทล์)
คุณสมบัติ = df[(df['vote_count'] >= m) & (df['vote_count'].notnull()) & (df['vote_average'].notnull())][['title', 'year 'vote_count' 'vote_average' 'ความนิยม']]
คุณสมบัติ['vote_count'] = คุณสมบัติ['vote_count'].astype('int')
คุณสมบัติ['vote_average'] = คุณสมบัติ['vote_average'].astype('int')
คุณสมบัติ['wr'] = คุณสมบัติ.apply(แลมบ์ดา x: (x['vote_count']/(x['vote_count']+m) * x['vote_average']) + (m/(m+x[' คะแนนโหวต']) * C), แกน=1)
ผ่านการรับรอง =Qualified.sort_values('wr', ascending=False).head(250)
กลับมามีคุณสมบัติ
ตอนนี้เราได้สร้างระบบผู้แนะนำที่จัดเรียงภาพยนตร์ในแนวโรแมนติกและแนะนำภาพยนตร์ยอดนิยม เราเลือกแนวโรแมนติกเพราะมันไม่ปรากฏมากนักในชาร์ตที่แล้วของเรา
ภาพยนตร์แนวโรแมนติกยอดนิยม
ป้อนข้อมูล
build_chart('โรแมนติก').head(15)
เอาท์พุต
ชื่อ | ปี | โหวต_count | โหวต_เฉลี่ย | ความนิยม | wr | |
10309 | Dilwale Dulhania Le Jayenge | 1995 | 661 | 9 | 34.457 | 8.565285 |
351 | ฟอเรสท์กัมพ์ | 1994 | 8147 | 8 | 48.3072 | 7.971357 |
876 | อาการเวียนศีรษะบ้านหมุน | พ.ศ. 2501 | 1162 | 8 | 18.2082 | 7.811667 |
40251 | ชื่อของคุณ. | 2016 | 1030 | 8 | 34.461252 | 7.789489 |
883 | บางคนชอบมันร้อน | พ.ศ. 2502 | 835 | 8 | 11.8451 | 7.745154 |
1132 | โรงภาพยนตร์พาราดิโซ | พ.ศ. 2531 | 834 | 8 | 14.177 | 7.744878 |
19901 | คนกระดาษ | 2012 | 734 | 8 | 7.19863 | 7.713951 |
37863 | ซิง สตรีท | 2016 | 669 | 8 | 10.672862 | 7.689483 |
882 | ดิ อพาร์ตเมนต์ | 1960 | 498 | 8 | 11.9943 | 7.599317 |
38718 | สาวใช้ | 2016 | 453 | 8 | 16.727405 | 7.566166 |
3189 | แสงไฟของเมือง | พ.ศ. 2474 | 444 | 8 | 10.8915 | 7.558867 |
24886 | วิธีที่เขามอง | 2014 | 262 | 8 | 5.71127 | 7.331363 |
45437 | ในจังหวะการเต้นของหัวใจ | 2017 | 146 | 8 | 20.82178 | 7.003959 |
1639 | ไททานิค | 1997 | 7770 | 7 | 26.8891 | 6.981546 |
ค.ศ. 19731 | Playbook ซับเงิน | 2012 | 4840 | 7 | 14.4881 | 6.970581 |
ตอนนี้คุณมีระบบแนะนำภาพยนตร์ที่แนะนำภาพยนตร์ยอดนิยมตามประเภทที่เลือกแล้ว เราขอแนะนำให้ทดสอบระบบผู้แนะนำนี้กับประเภทอื่นๆ ด้วย เช่น แอ็คชั่น ดราม่า ใจจดใจจ่อ ฯลฯ แบ่งปันภาพยนตร์สามอันดับแรกในประเภทที่คุณชื่นชอบที่ระบบผู้แนะนำแนะนำในส่วนความคิดเห็นด้านล่าง
เรียนรู้เพิ่มเติมเกี่ยวกับระบบแนะนำภาพยนตร์
อย่างที่คุณคงสังเกตเห็นแล้วว่า การสร้างระบบแนะนำภาพยนตร์ที่ใช้ Python นั้นค่อนข้างง่าย สิ่งที่คุณต้องมีคือความรู้เพียงเล็กน้อยเกี่ยวกับวิทยาศาสตร์ข้อมูลและความพยายามเพียงเล็กน้อยในการสร้างระบบผู้แนะนำที่ทำงานได้อย่างสมบูรณ์
อย่างไรก็ตาม ถ้าคุณต้องการสร้างระบบผู้แนะนำขั้นสูงขึ้นล่ะ จะทำอย่างไรถ้าคุณต้องการสร้างระบบผู้แนะนำที่องค์กรขนาดใหญ่อาจพิจารณาใช้
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับระบบผู้แนะนำและวิทยาศาสตร์ข้อมูล เราขอแนะนำให้เรียนหลักสูตรวิทยาศาสตร์ข้อมูล ด้วยหลักสูตร คุณจะได้เรียนรู้แนวคิดพื้นฐานและขั้นสูงของวิทยาศาสตร์ข้อมูลและการเรียนรู้ของเครื่อง นอกจากนี้ คุณจะได้ศึกษาจากผู้เชี่ยวชาญในอุตสาหกรรมที่จะแนะนำคุณตลอดหลักสูตรเพื่อช่วยให้คุณหลีกเลี่ยงความสงสัยและความสับสน
ที่ upGrad เรามีหลักสูตรวิทยาศาสตร์ข้อมูลและแมชชีนเลิร์นนิงหลายหลักสูตร คุณสามารถเลือกใครก็ได้จากสิ่งต่อไปนี้ขึ้นอยู่กับความสนใจของคุณ:
- ประกาศนียบัตร PG สาขาวิทยาศาสตร์ข้อมูล
- วิทยาศาสตรมหาบัณฑิตสาขาวิทยาศาสตร์ข้อมูล
- การรับรอง PG ใน Data Science
- ประกาศนียบัตร PG ในการเรียนรู้ของเครื่องและ AI
- วิทยาศาสตรมหาบัณฑิตสาขาการเรียนรู้ของเครื่องและ AI
นอกเหนือจากหลักสูตรเหล่านี้แล้ว เรายังมีหลักสูตรอื่นๆ อีกมากมายในด้านวิทยาศาสตร์ข้อมูลและการเรียนรู้ของเครื่อง อย่าลืมตรวจสอบพวกเขา!
ความคิดสุดท้าย
ตอนนี้คุณรู้วิธีสร้างระบบแนะนำภาพยนตร์แล้ว หลังจากที่คุณสร้างระบบแล้ว อย่าลืมแบ่งปันกับผู้อื่นและแสดงความคืบหน้าของคุณให้พวกเขาเห็น ระบบผู้แนะนำมีการใช้งานที่หลากหลาย ดังนั้นการเรียนรู้เกี่ยวกับระบบเหล่านี้จะทำให้คุณได้เปรียบในอุตสาหกรรมอย่างแน่นอน
การกรองการทำงานร่วมกันเป็นระบบการแนะนำประเภทหนึ่งที่เข้าใกล้การสร้างแบบจำลองตามความชอบของผู้ใช้ ประวัติของผู้ใช้ทำหน้าที่เป็นชุดข้อมูลสำหรับการกรองการทำงานร่วมกัน Collaborative filtering เป็น 2 ประเภทที่กล่าวถึงด้านล่าง: การกรองตามเนื้อหาจะรวบรวมข้อมูลจากผู้ใช้และแนะนำรายการตามนั้น ข้อดีและข้อเสียบางประการมีการกล่าวถึงด้านล่าง: อัลกอริธึมการกรองการทำงานร่วมกันกำลังกลายเป็นอัลกอริธึมการขับเคลื่อนหลักสำหรับแอปพลิเคชันยอดนิยมมากมาย ธุรกิจจำนวนมากขึ้นเรื่อย ๆ มุ่งเน้นไปที่การนำเสนอเนื้อหาที่เป็นส่วนตัวที่สมบูรณ์ ตัวอย่างเช่น คุณอาจเคยเห็นข้อความนี้ในเว็บไซต์อีคอมเมิร์ซหลายแห่ง ลูกค้าที่ซื้อสิ่งนี้ก็ซื้อด้วยการกรองการทำงานร่วมกันคืออะไรและมีประเภทใดบ้าง
1. การกรองการทำงานร่วมกันแบบอิงตามผู้ใช้ : แนวคิดเบื้องหลังการกรองการทำงานร่วมกันประเภทนี้คือการที่เรากำหนดให้ผู้ใช้เป็นการตั้งค่า สมมติว่า "A" และค้นหาผู้ใช้รายอื่นที่มีการตั้งค่าที่คล้ายกัน จากนั้นจึงให้ "A" กำหนดการตั้งค่าของผู้ใช้เหล่านี้ว่า ยังไม่เคยเจอ
การกรองการทำงานร่วมกันตามรายการ : ที่นี่แทนที่จะค้นหาผู้ใช้ที่มีความชอบคล้ายกัน เราพบภาพยนตร์ที่คล้ายกับรสนิยมของ "A" และแนะนำภาพยนตร์ที่ยังไม่ได้ดู ข้อดีและข้อเสียของการกรองตามเนื้อหาคืออะไร
ข้อดี
1. ไม่เหมือนกับการกรองการทำงานร่วมกัน โมเดลไม่จำเป็นต้องรวบรวมข้อมูลเกี่ยวกับผู้ใช้รายอื่นที่มีความชอบคล้ายกัน เนื่องจากใช้คำแนะนำจากผู้ใช้หลักเอง
2. นางแบบสามารถแนะนำภาพยนตร์ที่ดีที่สุดบางเรื่องให้คุณได้ตามความต้องการซึ่งมีเพียงไม่กี่คนที่เคยดู
ข้อเสีย
1. เทคนิคนี้ต้องการข้อมูลจำนวนมากเกี่ยวกับโดเมนใดโดเมนหนึ่ง ดังนั้นคุณภาพของฟีเจอร์ที่มีให้นั้นเทียบเท่ากับฟีเจอร์ที่ออกแบบด้วยมือมากหรือน้อย
2. ความสามารถในการแนะนำภาพยนตร์มีจำกัด เนื่องจากใช้งานได้เฉพาะตามความสนใจของผู้ใช้ที่มีอยู่เท่านั้น แอปพลิเคชันยอดนิยมใดบ้างที่ใช้อัลกอริธึมการกรองการทำงานร่วมกัน
ต่อไปนี้คือแอปพลิเคชันบางตัวที่มีฐานผู้ใช้ที่ได้รับความนิยมทั่วโลก:
1. YouTube ใช้อัลกอริธึมนี้ร่วมกับอัลกอริธึมที่ทรงพลังอื่นๆ เพื่อให้คำแนะนำวิดีโอในหน้าแรก
2. เว็บไซต์อีคอมเมิร์ซเช่น Amazon, Flipkart และ Myntra ยังใช้อัลกอริทึมนี้เพื่อให้คำแนะนำผลิตภัณฑ์
3. แพลตฟอร์มการสตรีมวิดีโอเป็นตัวอย่างที่ใหญ่ที่สุดที่ใช้การให้คะแนนของผู้ใช้ คะแนนเฉลี่ย และเนื้อหาที่เกี่ยวข้องเพื่อให้คำแนะนำส่วนบุคคล