[ad_1]
p99, hay giá trị mà 99% quan sát rơi vào dưới đó, được sử dụng rộng rãi để theo dõi và tối ưu hóa hiệu suất trong trường hợp xấu nhất trong các ngành. Ví dụ: thời gian tải trang, hoàn thành đơn đặt hàng hoặc giao hàng đều có thể được tối ưu hóa bằng cách theo dõi p99.
Mặc dù p99 chắc chắn có giá trị nhưng điều quan trọng là phải nhận ra rằng nó bỏ qua 1% quan sát hàng đầu, điều này có thể có tác động lớn ngoài mong đợi khi chúng tương quan với các số liệu kinh doanh quan trọng khác. Việc theo đuổi p99 một cách mù quáng mà không kiểm tra những mối tương quan như vậy có thể làm suy yếu các mục tiêu kinh doanh khác.
Trong bài viết này, chúng tôi sẽ phân tích các hạn chế của p99 thông qua một ví dụ với dữ liệu giả, hiểu khi nào nên dựa vào p99 và khám phá các số liệu thay thế.
Hãy xem xét một nền tảng thương mại điện tử trong đó một nhóm được giao nhiệm vụ tối ưu hóa trải nghiệm thanh toán giỏ hàng. Nhóm đã nhận được khiếu nại của khách hàng rằng việc thanh toán khá chậm so với các nền tảng khác. Vì vậy, nhóm lấy 1.000 lượt thanh toán mới nhất và phân tích thời gian thanh toán. (Tôi đã tạo một số dữ liệu giả cho việc này, bạn có thể tự do sử dụng và sửa đổi nó mà không bị hạn chế)
import pandas as pd
import seaborn as sns
order_time = pd.read_csv('https://gist.githubusercontent.com/kkraoj/77bd8332e3155ed42a2a031ce63d8903/uncooked/458a67d3ebe5b649ec030b8cd21a8300d8952b2c/order_time.csv')
fig, ax = plt.subplots(figsize=(4,2))
sns.histplot(information = order_time, x = 'fulfillment_time_seconds', bins = 40, shade = 'ok', ax = ax)
print(f'p99 for fulfillment_time_seconds: {order_time.fulfillment_time_seconds.quantile(0.99):0.2f} s')
Đúng như mong đợi, hầu hết quá trình thanh toán giỏ hàng dường như sẽ hoàn tất trong vòng vài giây. Và 99% số lần thanh toán diễn ra trong vòng 12,1 giây. Nói cách khác, p99 là 12,1 giây. Có một số trường hợp đuôi dài kéo dài tới 30 giây. Vì chúng quá ít nên chúng có thể là những ngoại lệ và có thể bỏ qua một cách an toàn, phải không?
Bây giờ, nếu chúng ta không dừng lại và phân tích hàm ý của câu cuối cùng thì có thể sẽ khá nguy hiểm. Việc bỏ qua 1% hàng đầu có thực sự an toàn? Chúng tôi có chắc chắn thời gian thanh toán không tương quan với bất kỳ số liệu kinh doanh nào khác không?
Giả sử công ty thương mại điện tử của chúng tôi cũng quan tâm đến tổng giá trị hàng hóa (GMV) và có mục tiêu tổng thể ở cấp công ty là tăng giá trị đó. Chúng ta nên kiểm tra ngay xem thời gian thanh toán có tương quan với GMV hay không trước khi bỏ qua 1% hàng đầu.
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter
order_value = pd.read_csv('https://gist.githubusercontent.com/kkraoj/df53cac7965e340356d6d8c0ce24cd2d/uncooked/8f4a30db82611a4a38a90098f924300fd56ec6ca/order_value.csv')
df = pd.merge(order_time, order_value, on='order_id')
fig, ax = plt.subplots(figsize=(4,4))
sns.scatterplot(information=df, x="fulfillment_time_seconds", y="order_value_usd", shade = 'ok')
plt.yscale('log')
ax.yaxis.set_major_formatter(ScalarFormatter())
Oh Boy! Giá trị giỏ hàng không chỉ tương quan với thời gian thanh toán mà còn tăng theo cấp số nhân khi thời gian thanh toán dài hơn. Hình phạt của việc bỏ qua 1% số lần thanh toán cao nhất là gì?
pct_revenue_ignored = df2.loc(df1.fulfilment_time_seconds>df1.fulfilment_time_seconds.quantile(0.99), 'order_value_usd').sum()/df2.order_value_usd.sum()*100
print(f'If we solely focussed on p99, we'd ignore {pct_revenue_ignored:0.0f}% of income')
## >>> If we solely focussed on p99, we'd ignore 27% of income
Nếu chỉ tập trung vào p99, chúng tôi sẽ bỏ qua 27% doanh thu (lớn hơn 27 lần so với 1% mà chúng tôi nghĩ mình đã bỏ qua). Nghĩa là, p99 số lần thanh toán là p73 doanh thu. Việc tập trung vào p99 trong trường hợp này vô tình gây tổn hại cho doanh nghiệp. Nó bỏ qua nhu cầu của những người mua sắm có giá trị cao nhất của chúng tôi.
df.sort_values('fulfillment_time_seconds', inplace = True)
dfc = df.cumsum()/df.cumsum().max() # p.c cumulative sum
fig, ax = plt.subplots(figsize=(4,4))
ax.plot(dfc.fulfillment_time_seconds.values, shade = 'ok')
ax2 = ax.twinx()
ax2.plot(dfc.order_value_usd.values, shade = 'magenta')
ax.set_ylabel('cumulative achievement time')
ax.set_xlabel('orders sorted by achievement time')
ax2.set_ylabel('cumulative order worth', shade = 'magenta')
ax.axvline(0.99*1000, linestyle='--', shade = 'ok')
ax.annotate('99% of orders', xy = (970,0.05), ha = 'proper')
ax.axhline(0.73, linestyle='--', shade = 'magenta')
ax.annotate('73% of income', xy = (0,0.75), shade = 'magenta')
Ở trên, chúng ta thấy lý do tại sao có sự không khớp lớn giữa phần trăm thời gian thanh toán và GMV. Đường cong GMV tăng mạnh gần phân vị thứ 99 của đơn đặt hàng, dẫn đến 1% đơn hàng hàng đầu có tác động quá lớn đến GMV.
Đây không chỉ là một tạo tác của dữ liệu giả của chúng tôi. Thật không could, những mối tương quan cực đoan như vậy không phải là hiếm. Ví dụ: 1% khách hàng hàng đầu của Slack chiếm 50% doanh thu. Khoảng 12% doanh thu của UPS đến từ chỉ 1 khách hàng (Amazon).
Để tránh những cạm bẫy khi chỉ tối ưu hóa cho p99, chúng ta có thể áp dụng cách tiếp cận toàn diện hơn.
Một giải pháp là theo dõi đồng thời cả p99 và p100 (giá trị tối đa). Bằng cách này, chúng tôi sẽ không có xu hướng bỏ qua những người dùng có giá trị cao.
Một giải pháp khác là sử dụng p99 tính theo doanh thu (hoặc tính theo tổng giá trị hàng hóa, lợi nhuận hoặc bất kỳ số liệu kinh doanh nào khác mà bạn quan tâm), điều này có tầm quan trọng lớn hơn đối với các quan sát có doanh thu liên quan cao hơn. Số liệu này đảm bảo rằng các nỗ lực tối ưu hóa sẽ ưu tiên các giao dịch hoặc quy trình có giá trị nhất, thay vì đối xử bình đẳng với tất cả các quan sát.
Cuối cùng, khi tồn tại mối tương quan cao giữa hiệu suất và số liệu kinh doanh, p99.5 hoặc p99.9 nghiêm ngặt hơn có thể giảm thiểu rủi ro bỏ qua người dùng có giá trị cao.
Thật hấp dẫn khi chỉ dựa vào các số liệu như p99 cho nỗ lực tối ưu hóa. Tuy nhiên, như chúng ta đã thấy, việc bỏ qua 1% quan sát hàng đầu có thể tác động tiêu cực đến phần lớn các kết quả kinh doanh khác. Theo dõi cả p99 và p100 hoặc sử dụng p99 theo trọng số doanh thu có thể mang lại cái nhìn toàn diện hơn và giảm thiểu rủi ro khi chỉ tối ưu hóa cho p99. Ít nhất, hãy nhớ tránh tập trung hạn hẹp vào một số chỉ số hiệu suất mà bỏ qua kết quả tổng thể của khách hàng.
[ad_2]
Source link