Cosine Similarity — কোণের মিল
Cosine Similarity
বাজারে রুচির মিল
ধর মামা, তুই আর তোর দোস্ত ফাহিম বাজারে গেছস। তোর কেনাকাটা vector: [চাল=১০কেজি, মুরগি=২কেজি, পেঁয়াজ=৫কেজি]। ফাহিমের: [চাল=২০কেজি, মুরগি=৪কেজি, পেঁয়াজ=১০কেজি]। ফাহিম সব দ্বিগুণ কিনছে — কিন্তু রুচি তো same! দুইজনেই চাল বেশি, মুরগি কম, পেঁয়াজ মাঝামাঝি কিনতেছস। আবার তোর আরেক দোস্ত জামাল কিনছে [চাল=১কেজি, মুরগি=১০কেজি, পেঁয়াজ=১কেজি] — পরিমাণ কম কিন্তু রুচি সম্পূর্ণ আলাদা!
Cosine Similarity পরিমাণ ignore করে শুধু 'রুচি' (direction) দেখে! তোর আর ফাহিমের cosine similarity ≈ 1.0 (same রুচি), কিন্তু তোর আর জামালের cosine similarity অনেক কম (আলাদা রুচি)। পরিমাণ যতই হোক, pattern match করলেই similar! বুঝলা?
সংজ্ঞা
Cosine Similarity দুইটা vector-এর মধ্যকার কোণের cosine মাপে। +১ মানে একই দিকে (identical), ০ মানে perpendicular (কোনো মিল নাই), -১ মানে বিপরীত দিকে। Magnitude ignore করে শুধু direction compare করে।
ব্যাখ্যা
Cosine Similarity vs Dot Product
Dot product magnitude-দ্বারা affected হয় — বড় vector-এর dot product বড় হবেই। কিন্তু cosine similarity normalize করে ফেলে, তাই শুধু 'দিক'-এর মিল দেখে। তোর বাজারের ১০কেজি চাল আর ফাহিমের ২০কেজি চাল — পরিমাণ আলাদা কিন্তু pattern same!
Value Range আর Interpretation
Cosine similarity সবসময় -১ থেকে +১ এর মধ্যে থাকে। +১ = হুবহু same direction, ০ = কোনো সম্পর্ক নাই, -১ = সম্পূর্ণ উল্টা। NLP-তে সাধারণত ০ থেকে +১ পাই কারণ word count negative হয় না।
Unit Vector-এর সাথে সম্পর্ক
যদি দুইটা vector আগেই unit vector হয় (norm = ১), তাইলে cosine similarity = dot product! কারণ denominator ১×১ = ১ হইয়া যায়। তাই embedding-গুলা normalize করে রাখলে cosine similarity হিসাব অনেক fast হয়!
বাজারের রুচির Similarity
তোর কেনাকাটা a = [10, 2, 5] আর ফাহিমের b = [20, 4, 10]। দুইজনের রুচির cosine similarity হিসাব কর।
Step 1: Dot Product
Component-wise গুণ করে যোগ কর
Step 2: Norms বাইর কর
দুইটা vector-এর L2 norm
Step 3: ভাগ কর
Dot product ÷ norms-এর গুণফল
Cosine similarity ≈ ১.০! ফাহিম তোর ঠিক দ্বিগুণ কিনছে, তাই direction same — রুচি ১০০% match! পরিমাণ আলাদা কিন্তু taste identical, মামা!
ML-এ কোথায় লাগে?
মনে রাখার ট্রিক
Cosine Similarity = বাজারের রুচি match — কে কতটুকু কিনছে (পরিমাণ) সেইটা বাদ দাও, কী ধরনের জিনিস কিনছে (pattern) সেইটা দেখো। +১ = টুইন রুচি, ০ = কোনো মিল নাই!