صيغة شعبية؟ (استنادًا إلى "أعجبني" ، "تعليقات" ، "وجهات نظر")

StackOverflow https://stackoverflow.com/questions/3003739

  •  25-09-2019
  •  | 
  •  

سؤال

لدي بعض الصفحات على موقع ويب وعلي إنشاء طلب بناءً على "شعبية"/"نشاط"

المعلمات التي يجب أن أستخدمها هي:

  • طرق عرض للصفحة
  • التعليقات التي تم إجراؤها على الصفحة (يوجد نموذج في الأسفل حيث يمكن للاستخدامات تقديم تعليقات)
  • النقرات التي تم إجراؤها على أيقونة "Like It"

هل هناك أي معايير لما ستكون عليه صيغة شعبية؟ (إذا لم تكن الآراء جيدة أيضًا)

(في البداية فكرت في وجهات النظر + 10*التعليقات + 10*مثل)

هل كانت مفيدة؟

المحلول

لا توجد صيغة قياسية لهذا (كيف يمكن أن يكون هناك؟)

ما لديك يبدو وكأنه حل طبيعي إلى حد ما ، وربما يعمل بشكل جيد. بالطبع ، يجب أن تلعب مع العشرة لتجد القيم التي تناسب احتياجاتك.

اعتمادًا على متطلباتك ، قد ترغب أيضًا في إضافة عامل زمني (أي نقاط -X في الأسبوع) بحيث تصبح الصفحات القديمة أقل شعبية. بدلاً من ذلك ، يمكنك تغيير "طرق عرض الصفحة" إلى "طرق عرض الصفحة في الشهر الماضي". مرة أخرى ، هذا يعتمد على احتياجاتك ، قد لا يكون ذا صلة.

نصائح أخرى

يمكنك أن تفعل شيئًا مثل ماذا موقع YouTube هل - فقط تم فرزها حسب أكبر عدد لكل فئة. على سبيل المثال - الأكثر عرضًا ، علق معظمهم ، أحبهم. في كل فئة ، يمكن أن تأتي صفحة مختلفة أولاً ، على الرغم من أن التصنيفات قد تكون مرتبطة. إذا كنت بحاجة فقط إلى ترتيب واحد ، فسيتعين عليك التوصل إلى صيغة من نوع ما ، ويفضل أن يتم اشتقاقها تجريبياً من خلال تحليل مجموعة من البيانات التي لديك بالفعل وتحديد ما ينبغي حسابه جيدًا/سيئًا ، والعمل للخلف لتناسب معادلة تناسب قرارك.

يمكنك حتى محاولة نهج التعلم الآلي لـ "تعلم" ما هو الترجيح الجيد للجمع بين كل من هذه الأرقام كما في صيغة مثالك. قد لا يكون القيام بذلك يدويًا صعبًا جدًا.

أنا أستعمل،

(C*comments + L*likeit)*100/views

حيث يجب استخدام C و L اعتمادًا على مقدار تقدير كل سمة. أنا استخدم C = 1 و L = 1.

يمنحك هذا النسبة المئوية للآراء التي تولد إجراءًا إيجابيًا ، مما يجعل العناصر ذات النسبة المئوية الأعلى "الأكثر شعبية". يعجبني هذا لأنه يجعل من الممكن أن تحظى العناصر الأحدث بشعبية كبيرة في البداية ، حيث تظهر أولاً والحصول على المزيد من المشاهدات وبالتالي تصبح أقل شعبية (أو أكثر) حتى الاستقرار.

على أي حال ، آمل أن يساعد ذلك. ملاحظة: من شأنه أن يعمل بنفس الشيء بدون "*100" لكني أحب النسب المئوية.

في الواقع هناك أفضل طريقة مقبولة لحساب هذا:
http://www.evanmiller.org/how-not-to--sort-by-valege-rating.html

قد تحتاج إلى الجمع بين "الإعجابات" و "التعليقات" في درجة واحدة ، وتعيين عامل الترجيح الخاص بك لكل منهما ، قبل توصيله بالصيغة كقيمة "التصويت الإيجابي".

من الرابط أعلاه:

النتيجة = الحد الأدنى من فاصل الثقة في WILSON لمعلمة Bernoulli

نحتاج إلى موازنة نسبة التصنيفات الإيجابية مع عدم اليقين في عدد قليل من الملاحظات. لحسن الحظ ، تم وضع الرياضيات لهذا في عام 1927 من قبل إدوين ب. ويلسون. ما نريد أن نسأله هو: بالنظر إلى التصنيفات التي لدي ، هناك فرصة بنسبة 95 ٪ لأن الجزء "الحقيقي" من التصنيفات الإيجابية هو على الأقل ماذا؟ ويلسون يعطي الجواب. بالنظر إلى التصنيفات الإيجابية والسلبية فقط (أي ليس مقياسًا 5 نجوم) ، يتم إعطاء الحد الأدنى لنسبة التصنيفات الإيجابية بواسطة: enter image description here

(استخدم ناقصًا حيث تقول زائد/ناقص لحساب الحد الأدنى.) هنا هل ملاحظ جزء من التقييمات الإيجابية ، zα/2 هل (1-α/2) كمية للتوزيع الطبيعي القياسي ، و n هو إجمالي عدد التقييمات. نفس الصيغة المنفذة في روبي:

require 'statistics2'

def ci_lower_bound(pos, n, confidence)
    if n == 0
        return 0
    end
    z = Statistics2.pnormaldist(1-(1-confidence)/2)
    phat = 1.0*pos/n
    (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end

pos هو عدد التقييمات الإيجابية ، n هو إجمالي عدد التقييمات ، وتشير الثقة إلى مستوى الثقة الإحصائي: اختر 0.95 للحصول على فرصة بنسبة 95 ٪ أن يكون الحد الأدنى الخاص بك صحيحًا ، 0.975 للحصول على فرصة بنسبة 97.5 ٪ ، إلخ. ، لذلك إذا لم يكن لديك حزمة إحصائيات في متناول يديك أو إذا كان الأداء مشكلة ، فيمكنك دائمًا تحديد قيمة هنا z. (استخدم 1.96 لمستوى الثقة 0.95.)

نفس الصيغة مثل استعلام SQL:

SELECT widget_id, ((positive + 1.9208) / (positive + negative) - 
                   1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) / 
                          (positive + negative)) / (1 + 3.8416 / (positive + negative)) 
       AS ci_lower_bound FROM widgets WHERE positive + negative > 0 
       ORDER BY ci_lower_bound DESC;

أود أن أقدر التعليقات أكثر من "كما لو كان المحتوى يدعو إلى مناقشة. إذا كان الأمر مجرد توضيح الحقائق ، فإن الحصة المتساوية للتعليقات ويبدو أن العد مثل على ما يرام (على الرغم من أن 10 أكثر من اللازم ، على ما أعتقد ...)

هل تأخذ الزيارة في الاعتبار الوقت الذي أنفقه المستخدم بطريقة ما؟ قد تستخدم ذلك أيضًا ، حيث أن العرض الثاني يعني أقل من 3 دقائق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top