Các vấn đề về đo lường — 1

Mar 20 2023
Với bài viết này, tôi sẽ bắt đầu một loạt bài nhỏ mới về các vấn đề đo lường, vấn đề có một vị trí quan trọng trong lĩnh vực khoa học dữ liệu. Loạt bài này sẽ bao gồm ba tiêu đề chính: Giả sử chúng ta quyết định mua một sản phẩm.

Với bài viết này, tôi sẽ bắt đầu một loạt bài nhỏ mới về các vấn đề đo lường, vấn đề có một vị trí quan trọng trong lĩnh vực khoa học dữ liệu.

Loạt bài này sẽ bao gồm ba tiêu đề chính:

  • Đánh giá sản phẩm
  • Sắp xếp sản phẩm
  • Sắp xếp đánh giá

Giả sử chúng ta quyết định mua một sản phẩm. Khi chúng tôi tìm kiếm bất kỳ sản phẩm nào chúng tôi muốn mua trên internet, chúng tôi có thể thấy rằng có rất nhiều lựa chọn.

Vậy đâu là những điều sẽ giúp chúng ta quyết định trong tình huống như vậy?

Bằng chứng xã hội

Bằng chứng xã hội là hành vi sao chép hành vi của người khác. Tức là khi quyết định mua một sản phẩm nào đó, chúng ta xem nhận xét, đánh giá của người khác để cân nhắc nên chọn cái nào và điều này ảnh hưởng đến chúng ta khi mua sản phẩm.

Tất nhiên, tôi không thể giải thích định nghĩa này theo khía cạnh tâm lý học, nhưng tôi đoán tôi có thể nói rằng về cơ bản, việc nhận được những gì mọi người tán thành khiến chúng ta cảm thấy thoải mái.

Thuật ngữ Bằng chứng xã hội được đưa ra trong cuốn sách xuất bản năm 1984 của Robert Cialdini.

Điều này đưa chúng ta đến một định nghĩa khác:

Sự khôn ngoan của đám đông

Cảm giác rằng nếu mọi người đã mua sản phẩm đó trong số rất nhiều sản phẩm, tôi cũng nên mua sản phẩm đó. Vì tại sao không và tôi không muốn nghĩ nhiều!

Thuyết phục và bạn sẽ bị thuyết phục!

vấn đề đo lường

Ở đây, điều mà market cần làm là phân loại sản phẩm một cách chính xác và khách quan nhất cho khách hàng.

Có một số vấn đề đo lường gặp phải trong khi làm điều này.

Trong phần đầu tiên của loạt bài này, chúng tôi sẽ đề cập đến vấn đề đánh giá sản phẩm.

  • Đánh giá sản phẩm

*Trung bình

*Trung bình có trọng số dựa trên thời gian

*Trung bình có trọng số dựa trên người dùng

* Xếp hạng có trọng số

Tôi sẽ cố gắng giải thích các phương pháp nêu trên mà chúng tôi sẽ sử dụng để xếp hạng sản phẩm bằng một ví dụ.

Trong ví dụ này, chúng tôi sẽ kiểm tra xếp hạng của một khóa học trực tuyến.

Cài đặt và nhập khẩu

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()

Hiện tại có thể có điểm tăng hoặc giảm, điều này cũng cần được đánh giá.

Trong trường hợp này, chúng ta cũng nên sử dụng Trung bình có trọng số dựa trên thời gian để đánh giá các tình huống khác.

*Trung bình có trọng số dựa trên thời gian

Hãy chuyển đổi biến 'Dấu thời gian' thành biến thời gian

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)

*Trung bình có trọng số dựa trên người dùng

Xếp hạng của người dùng đã xem khóa học ở các mức độ khác nhau nên được đánh giá với các trọng số khác nhau:

df.groupby('Progress').agg({'Rating': 'mean'})

Để tính điểm trọng số với trạng thái xem của khóa học:

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)

* Xếp hạng có trọng số

Chúng tôi sẽ kết hợp các tính toán Trung bình có trọng số dựa trên thời gian và Trung bình có trọng số dựa trên người dùng trong một hàm duy nhất.

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)

Phần kết luận

Trong bài viết này, tôi đã giải thích những điều sẽ giúp chúng ta quyết định khi nào muốn mua sản phẩm và chúng ta đã thấy các vấn đề về đo lường có thể phát sinh khi chúng ta muốn sắp xếp sản phẩm theo cách khách quan và chính xác nhất.

Trong bài viết tiếp theo, chúng tôi sẽ đề cập đến vấn đề phân loại sản phẩm.

Thuyết phục và bạn sẽ bị thuyết phục!

Tốt nhất, Neslihan