Problemi di misurazione — 1
Con questo articolo, inizierò una nuova mini-serie sui problemi di misurazione, che ha un posto importante nel campo della scienza dei dati.
Questa serie sarà composta da tre titoli principali:
- Valutazione dei prodotti
- Ordinamento dei prodotti
- Classificazione delle recensioni
Diciamo che decidiamo di acquistare un prodotto. Quando cerchiamo su Internet qualsiasi prodotto che desideriamo acquistare, possiamo vedere che ci sono molte opzioni.
Quindi quali sono le cose che ci aiuteranno a decidere in una situazione del genere?
Prova sociale
La prova sociale è l'atto di copiare il comportamento di altre persone. Cioè, quando decidiamo di acquistare un prodotto, guardiamo i commenti e le valutazioni di altre persone valutando quale scegliere, e questo ci riguarda quando acquistiamo un prodotto.
Certo, non posso spiegare psicologicamente questa definizione, ma immagino di poter dire che fondamentalmente ottenere ciò che tutti approvano ci fa sentire nella zona di comfort.
Il termine Social Proof è stato proposto nel suo libro pubblicato nel 1984 da Robert Cialdini.
Questo ci porta ad un'altra definizione:
La saggezza delle folle
La sensazione che se tutti hanno comprato quel prodotto tra tanti prodotti, dovrei comprare anche quello. Perché perché no e non voglio pensare troppo!
Problemi di misurazione
Qui, ciò che il mercato deve fare è ordinare i prodotti nel modo più accurato e obiettivo per i clienti.
Ci sono alcuni problemi di misurazione riscontrati durante questa operazione.
In questa prima parte della serie tratteremo la questione della valutazione dei prodotti.
- Valutazione dei prodotti
*Media
*Media ponderata basata sul tempo
*Media ponderata basata sull'utente
*Valutazione ponderata
Proverò a spiegare i metodi sopra menzionati che utilizzeremo per la valutazione del prodotto con un esempio.
In questo esempio, esamineremo le valutazioni di un corso online.
Installa e importa
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()
Al momento potrebbe esserci un aumento o una diminuzione dei punteggi, anche questo dovrebbe essere valutato.
In questo caso, dovremmo utilizzare la media ponderata basata sul tempo per valutare anche altre situazioni.
*Media ponderata basata sul tempo
Convertiamo la variabile 'Timestamp' nella variabile tempo
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)
*Media ponderata basata sull'utente
Le valutazioni degli utenti che hanno guardato il corso a velocità diverse dovrebbero essere valutate con pesi diversi:
df.groupby('Progress').agg({'Rating': 'mean'})
Per calcolare il punteggio ponderato con lo stato di visualizzazione del corso:
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)
*Valutazione ponderata
Combineremo i calcoli della media ponderata basata sul tempo e della media ponderata basata sull'utente in un'unica funzione.
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)
Conclusione
In questo articolo ho spiegato le cose che ci aiuteranno a decidere quando acquistare un prodotto e abbiamo visto i problemi di misurazione che possono sorgere quando vogliamo ordinare i prodotti nel modo più accurato e obiettivo.
Nel prossimo articolo tratteremo il problema dello smistamento dei prodotti.
Convinci e sarai convinto!
Migliore, Neslihan

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































