ปัญหาการวัด — 1
ในบทความนี้ ฉันจะเริ่มต้นซีรี่ส์ใหม่เกี่ยวกับปัญหาการวัดซึ่งมีสถานที่สำคัญในสาขาวิทยาศาสตร์ข้อมูล
ซีรีส์นี้จะประกอบด้วยสามชื่อหลัก:
- ให้คะแนนผลิตภัณฑ์
- คัดแยกสินค้า
- การจัดเรียงรีวิว
สมมติว่าเราตัดสินใจซื้อสินค้า เวลาเราค้นหาสินค้าที่ต้องการซื้อทางอินเตอร์เน็ตจะเห็นว่ามีตัวเลือกมากมาย
แล้วอะไรคือสิ่งที่จะช่วยเราตัดสินใจในสถานการณ์เช่นนี้?
หลักฐานทางสังคม
หลักฐานทางสังคมคือการคัดลอกพฤติกรรมของผู้อื่น นั่นคือ เมื่อเราตัดสินใจซื้อสินค้า เราจะดูความคิดเห็นและการประเมินของผู้อื่นในขณะที่พิจารณาว่าจะเลือกผลิตภัณฑ์ใด และสิ่งนี้ส่งผลต่อเราเมื่อซื้อสินค้า
แน่นอน ฉันไม่สามารถอธิบายคำจำกัดความนี้ในเชิงจิตวิทยาได้ แต่ฉันเดาว่าฉันสามารถพูดได้ว่าโดยพื้นฐานแล้วการได้รับสิ่งที่ทุกคนยอมรับทำให้เรารู้สึกอยู่ในโซนสบาย
คำว่า Social Proof ถูกนำมาใช้ในหนังสือ ของเขา ที่ตีพิมพ์ในปี 1984 โดย Robert Cialdini
สิ่งนี้นำเราไปสู่คำจำกัดความอื่น:
ภูมิปัญญาของฝูงชน
ความรู้สึกที่ว่าถ้าทุกคนซื้อสินค้านั้นท่ามกลางสินค้ามากมาย ฉันก็ควรซื้อแบบนั้นเหมือนกัน เพราะอะไรถึงไม่อยากคิดมาก!
ปัญหาการวัด
ที่นี่ สิ่งที่ตลาดต้องทำคือการจัดเรียงผลิตภัณฑ์ด้วยวิธีที่ถูกต้องและตรงเป้าหมายที่สุดสำหรับลูกค้า
มีปัญหาการวัดบางอย่างที่พบขณะดำเนินการนี้
ในส่วนแรกของซีรีส์นี้ เราจะกล่าวถึงปัญหาของการให้คะแนนผลิตภัณฑ์
- ให้คะแนนผลิตภัณฑ์
*เฉลี่ย
*ถัวเฉลี่ยถ่วงน้ำหนักตามเวลา
*ค่าเฉลี่ยถ่วงน้ำหนักตามผู้ใช้
* คะแนนถ่วงน้ำหนัก
ฉันจะพยายามอธิบายวิธีการดังกล่าวข้างต้นที่เราจะใช้ในการให้คะแนนผลิตภัณฑ์ด้วยตัวอย่าง
ในตัวอย่างนี้ เราจะตรวจสอบการให้คะแนนของหลักสูตรออนไลน์
ติดตั้งและนำเข้า
import pandas as pd
import datetime as dt
import math
import scipy.stats as st
from sklearn.preprocessing import MinMaxScaler
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.width', 500)
pd.set_option('display.expand_frame_repr', False)
pd.set_option('display.float_format', lambda x: '%5f' % x)
df = pd.read_csv(r'C:\course_reviews.csv')
df.head()
df.shape
df['Rating'].value_counts()
df['Questions Asked'].value_counts()
df.groupby('Questions Asked').agg({'Questions Asked': 'count',
'Rating': 'mean'})
df['Rating'].mean()
อาจมีคะแนนเพิ่มขึ้นหรือลดลงในขณะนี้ควรได้รับการประเมินด้วย
ในกรณีนี้ เราควรใช้ Time-Based Weighted Average เพื่อประเมินสถานการณ์อื่นๆ ด้วย
*ถัวเฉลี่ยถ่วงน้ำหนักตามเวลา
ลองแปลงตัวแปร 'Timestamp' เป็นตัวแปรเวลา
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
current_date = pd.to_datetime('2021-02-10 0:0:0')
df['days'] = (current_date - df['Timestamp']).dt.days
df[df['days'] <= 30] .count()
df.loc[df['days'] <= 30, 'Rating'].mean()
df.loc[df['days'] <= 30, 'Rating'].mean() * 28/100 + \
df.loc[(df['days'] > 30) & (df['days'] <= 90), 'Rating'].mean() * 26/100 + \
df.loc[(df['days'] > 90) & (df['days'] <= 180), 'Rating'].mean() * 24/100 + \
df.loc[(df['days'] > 180), 'Rating'].mean() * 22/100
def time_based_weighted_average(dataframe, w1=28, w2=26, w3=24, w4=22):
return dataframe.loc[df['days'] <= 30, 'Rating'].mean() * w1/100 + \
dataframe.loc[(df['days'] > 30) & (dataframe['days'] <= 90), 'Rating'].mean() * w2/100 + \
dataframe.loc[(df['days'] > 90) & (dataframe['days'] <= 180), 'Rating'].mean() * w3/100 + \
dataframe.loc[(df['days'] > 180), 'Rating'].mean() * w4/100
time_based_weighted_average(df)
time_based_weighted_average(df, 30, 26, 22, 22)
*ค่าเฉลี่ยถ่วงน้ำหนักตามผู้ใช้
การให้คะแนนของผู้ใช้ที่ดูหลักสูตรในอัตราที่แตกต่างกันควรได้รับการประเมินด้วยน้ำหนักที่แตกต่างกัน:
df.groupby('Progress').agg({'Rating': 'mean'})
ในการคำนวณคะแนนถ่วงน้ำหนักด้วยสถานะการดูของหลักสูตร:
df.loc[df['Progress'] <= 10, 'Rating'].mean() * 22/100 + \
df.loc[(df['Progress'] > 10) & (df['Progress'] <= 45), 'Rating'].mean() * 24/100 + \
df.loc[(df['Progress'] > 45) & (df['Progress'] <= 75), 'Rating'].mean() * 26/100 + \
df.loc[(df['Progress'] > 75), 'Rating'].mean() * 28/100
def user_based_weighted_average(dataframe, w1=22, w2=24, w3=26, w4=28):
return dataframe.loc[df['Progress'] <= 10, 'Rating'].mean() * w1/100 + \
dataframe.loc[(df['Progress'] > 10) & (dataframe['Progress'] <= 45), 'Rating'].mean() * w2/100 + \
dataframe.loc[(df['Progress'] > 45) & (dataframe['Progress'] <= 75), 'Rating'].mean() * w3/100 + \
dataframe.loc[(df['Progress'] > 75), 'Rating'].mean() * w4/100
user_based_weighted_average(df)
user_based_weighted_average(df, 20, 24, 26, 30)
* คะแนนถ่วงน้ำหนัก
เราจะรวมการคำนวณถัวเฉลี่ยถ่วงน้ำหนักตามเวลาและค่าเฉลี่ยถ่วงน้ำหนักตามผู้ใช้ไว้ในฟังก์ชันเดียว
def course_weighted_rating(dataframe, time_w=50, user_w=50):
return time_based_weighted_average(dataframe) * time_w/100 + user_based_weighted_average(dataframe) * user_w/100
course_weighted_rating(df)
บทสรุป
ในบทความนี้ ฉันได้อธิบายสิ่งต่าง ๆ ที่จะช่วยเราตัดสินใจเมื่อเราต้องการซื้อผลิตภัณฑ์ และเราได้เห็นปัญหาการวัดที่สามารถเกิดขึ้นเมื่อเราต้องการจัดเรียงผลิตภัณฑ์ด้วยวิธีที่ถูกต้องและเป็นกลางที่สุด
ในบทความหน้าเราจะพูดถึงเรื่องการคัดแยกสินค้า
เชื่อแล้วคุณจะเชื่อ!
ดีที่สุดเนสลิฮาน





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)