İş göstergelerinin çevrimdışı tahmini için bir test seti nasıl oluşturulur? (Kod bağlantısı ile)

Yazar: AARSHAY JAIN

Çeviri: Zhang Ruonan

Düzeltme: Zhang Ling

Bu makale hakkında 6500 kelime , Okumanız tavsiye edilir 10+ dakika

Bu makale ilke ve uygulama yönlerinden başlayacak ve yeni model çevrimiçi olmadan önce ön tarama ve değerlendirmeyi gerçekleştirmek için günlük verilerinin nasıl kullanılacağını tanıtacaktır.

Etiket: Makine Öğrenimi

Giriş

Kaggle tipi makine öğrenimi yarışmalarının çoğu, makine öğreniminin gerçek iş akışındaki önemli bir noktayı kapsamaz: Makine öğrenimi ürünleri oluştururken çevrimdışı bir değerlendirme ortamı oluşturun .

Gerçek eğitim makine öğrenimi modelleriyle karşılaştırıldığında, insanların eğitim setini / test setini net bir şekilde bölmek ve belirli bir makine öğrenimi endeksini sürekli olarak optimize etmek için genellikle daha fazla çaba harcamaları gerekir. Makine öğrenimi mühendisi olarak çalıştıktan ve denetlenen veri kümeleri üzerinde modelleri eğitmek için çok zaman harcadıktan sonra derin bir anlayışa sahip oldum.

Bu blog gönderisinde, çevrimdışı bir değerlendirme ortamı tasarlamanın önemli bir bileşenini tanıtmak istiyorum: doğruluk ve kesinlik gibi yalnızca bilgisayar öğreniminin temel göstergeleri için kullanılamayacak bir test seti oluşturma, Geri çağırma oranı (Geri çağırma); tıklama oranı, gelir vb. Gibi ürün göstergelerini de tahmin edebilir.

Karşı-olgusal değerlendirme teknolojisine dayalı nedensel çıkarım yöntemini kullanacağız ve yorumlama için endüstrinin sezgisel durumunu kullanacağız; daha sonra Python kod uygulamasını derinlemesine inceleyeceğiz ve sonunda gerçek bir senaryoyu simüle edeceğiz!

içindekiler

1. Çevrimiçi ve çevrimdışı makine öğrenimi modeli değerlendirme karşılaştırması

2. Reklam Endüstrisi Örnek Olay İncelemesi

Üç, bir neden-sonuç diyagramı tasarlayın ve oluşturun

4. Model müdahale

5. Karşı-olgusal analizi simüle etmek için Python kullanın (Karşı-Olgusal Analiz)

1. Çevrimiçi ve çevrimdışı makine öğrenimi modeli değerlendirme karşılaştırması

Bir üretim ortamında makine öğrenimi modellerinin geliştirilmesi ve devreye alınması genellikle bir temel veya sezgisel bir model belirleyerek, yani kararlar almak için gerçek zamanlı trafiği kullanarak başlar. Bu, yalnızca daha karmaşık modelleri eğitmek için veri toplamaya yardımcı olmakla kalmaz, aynı zamanda iyi performans için bir kıyaslama olarak da kullanılabilir.

Sonraki adım, eğitim / doğrulama / test veri kümeleri oluşturmak ve modeli çevrimdışı eğitmektir. Şimdiye kadar model, son kullanıcıları etkileyen herhangi bir karar almadı. Model oluşturulduktan sonra, olağan uygulama, onu çevrimiçi olarak dağıtmak ve sezgisel modelle karşılaştırmak için A / B testleri yapmaktır. Üretimdeki mevcut makine öğrenimi modellerini yinelerken, genellikle yukarıda açıklanan benzer süreci izleriz.

"Bu süreçte en büyük zorluklardan biri, çevrimdışı modellerin etkinliğinin nasıl doğrulanacağı ve hangi modelin çevrimiçi olarak test edileceğine karar verilmesi."

  • Çevrimdışı modelin çevrimdışı makine öğrenimi göstergeleri (AUC gibi) çevrimiçi modelden daha iyiyse bu, çevrimdışı modelin işletme için daha yararlı olduğu anlamına mı gelir?
  • Daha yüksek çevrimdışı makine öğrenimi göstergeleri, iş göstergelerinde bir gelişme anlamına mı geliyor?
  • Çevrimdışı modelin metriklerinin yeni bir model olarak dağıtılmaya veya A / B testi yapmaya değer olması için ne kadar iyileştirme gerekiyor?

Bunlar, makine öğrenimi uygulayıcılarını günlük işlerinde, özellikle de kullanıcı odaklı makine öğrenimi ürünleri oluştururken rahatsız eden bazı yaygın problemlerdir. Bu sorunlar aşağıdaki 3 genel senaryodan kaynaklanmaktadır:

  • Makine öğrenimi uygulamaları, iş ölçütlerine (tıklama oranı, gelir, kullanıcı katılımı, vb.) Dayalı, kullanıcıların çevrimiçi geri bildirimlerine / etkileşimlerine dayanarak, çevrimdışı olarak değerlendirilmesi zor olan ürünleri yönlendirmeye çalışır;
  • Makine öğrenimi modelleri genellikle bazı iş stratejileriyle birlikte uygulanır.Bu stratejiler, modelin çıktısının ürün eylemlerine nasıl dönüştürüleceğini etkiler.Örneğin, içerik önerirken, içerik çeşitliliğini ve kullanıcıya özel tercihleri göz önünde bulundurun;
  • Birçok uygulama birden fazla modelden tahminler alacak ve yargıda bulunacaktır. Örneğin, hangi reklamın gösterileceğinin seçimi, tıklama oranı ve makine öğrenimi modelinin talep tahminine ve ayrıca reklam alanı envanteri ve kullanıcı eşleştirme gibi bazı iş kısıtlamalarına bağlı olabilir.

Bu durumlarda, tek bir modelin ortak göstergeleri (doğruluk, AUC-ROC, hassas geri çağırma oranı vb.) Genellikle çevrimdışı oluşturulan modelin kullanımdaki modele göre önemli bir gelişme gösterip göstermediğine karar vermek için yeterli değildir. A / B testleri genellikle bu tür bir değerlendirme için kullanılabilir, ancak para ve zaman açısından çalıştırılması pahalıdır.

Nedensel Çıkarım (Nedensel Çıkarım) literatüründen esinlenilen karşı-olgusal değerlendirme teknolojisi (Karşı-Olgusal Değerlendirme), çevrimiçi göstergeleri (tıklama oranı, gelir vb.) Tahmin etmek için üretim günlüklerini kullanma yöntemi sağlar. Bu, çevrimdışı modelleri taramaya ve A / B testi için uygun test nesnelerini seçmeye yardımcı olan iyi bir ara adımdır, böylece çevrimdışı ortamda daha fazla modeli keşfedebiliriz.

2. Reklam Endüstrisi Örnek Olay İncelemesi

Bunu daha iyi anlamak için reklamcılık sektörünü örnek alalım. Aşağıdaki iki tarafı düşünün:

  • Kullanıcı tarafı: Kullanıcı web sitesini ziyaret eder ve reklamı alır, kullanıcı reklamı beğenirse tıklar, aksi takdirde tıklamaz;
  • İş tarafı: Makine öğrenimi sistemi, mevcut kullanıcının bağlam bilgisini içeren bir reklamın seçilmesi için bir talep alır ve ardından gösterim için eşleşen bir reklamı seçer.

Sistemi tanımlamak için aşağıdaki değişkenler kullanılabilir:

  • Kullanıcı niyeti (u): Kullanıcı web sitesini bir amaçla ziyaret eder (örneğin, kullanıcı ayakkabı satın almak için amazon.com'u ziyaret eder);
  • Kullanıcı bağlamı (x): Kullanıcılar web sitesinde gezinmeye başlar ve tarama davranışları bağlamsal bir içerik vektörü olarak paketlenir;
  • Reklam envanteri (v): Görüntülenebilecek reklam alanlarının envanteri;
  • Teklif (b): Bir reklam alanına tıklama başına teklif verme sistemi;
  • Seçilen reklam (a): Teklif ve tıklama tahminlerine göre seçilen son reklam;
  • Kullanıcı işlemi (y): İkili. Kullanıcı görüntülenen reklamı tıklarsa 1, aksi takdirde 0;
  • Gelir (r): Kullanıcı etkileşiminden sonra elde edilen belirli bir gelir türü ($$).

Not: Burada kullanılan örnekler ve aşağıdaki matematiksel formüller, kullanılan örneklerin biraz basitleştirilmiş versiyonlarıdır (bu makalenin altındaki bağlantıya bakın). Bu orijinal çalışma değil, çalışmanın fikirlerini sezgisel örneklerle özetleme ve bunları simüle edilmiş verilere uygulama girişimidir.

Üç, bir neden-sonuç diyagramı tasarlayın ve oluşturun

Birincisi, sebep-sonuç diyagramı nedir? Aşağıdaki Wikipedia'dan alınan tanımdır:

"Nedensel diyagramlar (yol diyagramları, nedensel Bayes ağları veya DAG'ler olarak da adlandırılır), veri üretme sürecinin varsayımlarını kodlamak için kullanılan olasılıklı bir grafik modelidir."

Yukarıdaki değişkenlere sahip yukarıdaki sistem, aşağıdaki gibi bir neden sonuç diyagramı çizebilir:

Bu resimden, farklı değişkenler arasındaki bağımlılık veya ilişki ilişkisini görebiliriz:

  • u, v bağımsız değişkenlerdir, "eksojen değişkenler" olarak da adlandırılır
  • x = f (u)
  • b = f (x, v)
  • a = f (x, b)
  • y = f (a, u)
  • r = f (y, b)

Bu anlayışa dayanarak, tüm sistemin ortak olasılığını bir olasılık oluşturma modeli olarak inşa edebiliriz:

W, tüm değişkenlerin kümesidir.

Sezgisel olarak konuşursak, bağımsız değişkenlerle başlıyoruz, nedensellik diyagramına göre daha fazla değişkeni birbirine bağlıyoruz ve yeni elde edilen değişkenleri sonraki koşul değişkenleri olarak kullanmaya devam ediyoruz. Lütfen bunun döngüsel olmayan bir grafik olduğunu, yani a'nın b'ye yol açabileceğini ve b'den a'ya ters nedensellik olmadığını unutmayın.

Sebep ve sonuç diyagramının izolasyon varsayımı:

Devam etmeden önce, bu modelin temel varsayımlarından birini anlayalım. Herhangi bir nedensellik diyagramı gibi, bu diyagram da dışsal değişkenlerin ilişki ağına herhangi bir arka kapı yoluna sahip olmadığını, yani dışsal değişkenler (u, v) ile ilişki ağındaki diğer değişkenler arasında ortak etkili bir değişken olmadığını varsayar. Örneğin, neden sonuç diyagramını şu şekilde değiştiren bir dış faktör (e) olduğunu varsayalım:

Bu durumda, kırmızıyla gösterilen nedensel yol, önceden tanımlanan formül kümesini geçersiz kılan bir arka kapı yoludur. Bu varsayımı ifade etmenin başka bir yolu şudur: Dışsal değişkenlerin tüm gözlemlerinin, bilinmeyen ancak sabit bir ortak dağılımdan bağımsız olarak örneklendiğini varsayıyoruz. Bu, izolasyon varsayımıdır (İzolasyon Varsayımı).

Çoğu neden ve sonuç diyagramı bu varsayımı benimseyecektir. Beklenen tüm etki faktörleri değerlendirilemediğinden / modellenemediğinden, en etkili olayları değerlendirmeye çalışmalıyız. Sonuçları analiz ederken bu varsayımı akılda tutmak çok önemlidir.

4. Model müdahale

Neden ve sonuç diyagramları ve denklemler, diyagramdaki tek tek öğeleri değiştirmemize ve bunun aşağı akış olayları tarafından tanımlanan göstergeler üzerindeki etkisini tahmin etmemize izin verir.

" Tıklama oranının maksimize etmeye çalıştığımız işletme metriği olduğunu varsayalım. Tıklama oranı, kullanıcıların tüm kullanıcı oturumunda tıkladıkları reklamların yüzdesi olarak tanımlanır. Bir çevrimiçi sistem çalıştırdığımızı ve şimdi reklamları seçmek için yeni bir model geliştirdiğimizi, yani, a değişkenini elde etmek için yeni bir yolumuz olduğunu varsayalım. Bu yeni modelin tıklama oranını mevcut çevrimiçi modelle karşılaştırma olarak tahmin etmek istiyoruz. "

Bu denklem sistemi, modelin müdahalesini cebirsel bir hesaplama olarak ele almamızı sağlar, yani, belirli bir girdi için farklı sonuçlar çıkarabilmemiz için bazı ara dağılımları değiştirebiliriz.

Karşı-olgusal analiz-varsayımsal bir modelin dağıtımını değerlendirin:

Şimdi karşı olgusal analizin ilkelerini anlayalım ve yukarıdaki problemleri çözmeye çalışalım.

  • Karşı-olgusal analiz nedir?

Mevcut M modelini yeni bir M 'modeliyle değiştirirsek ne olur? - Bu soru karşı olgusaldır, çünkü aslında değişiklik yapmadık ve kullanıcı deneyimini etkilemeyeceğiz. M 'modelini devreye almak istediğimizi ve bu senaryodaki iş göstergelerini tahmin etmeye çalıştığımızı varsayalım.

  • Geleneksel makine öğrenimine benzetme

Bu senaryoyu geleneksel denetimli öğrenmeyle karşılaştırmaya çalışalım.

Modeli denetimli bir öğrenme ortamında eğitirken, bazı bağımsız değişkenler x ve gerçek değer y kullanırız ve ardından y'yi y = f (x) olarak tahmin etmeye çalışırız. y 'varsayımsal bir tahmindir, yani veri üretmek için sistem yerine f (x) modeli kullanılsaydı ne olurdu. Daha sonra kayıp fonksiyonunu tanımlar ve modeli optimize ederiz. Bu işe yarar çünkü f (x) tam olarak tanımlanmıştır, bizim sorunumuzda durum böyle değildir (farklı reklamlar görüntülenirse kullanıcıların nasıl etkileşime gireceğini bilmenin bir yolu yoktur). Dolayısıyla, sistemin her bileşenini tam olarak tanımlamadan göstergeleri tahmin edebilmemiz için bazı çözümlere ihtiyacımız var.

  • Markov faktör ikamesi, karşı-olgusal analize etki eder

Şimdi denklem sisteminde cebirsel işlemler yapmaya çalışalım. Fiyatlandırılmış reklamları seçmek için yeni bir M modelimiz olduğunu varsayalım. Bu, denklemin yalnızca bir bileşenini etkiler:

Yeni ortak dağıtım şu hale gelir:

Lütfen burada yalnızca bir dağıtımın değiştirildiğini unutmayın. Bu sistemdeki tıklama oranı, her bir reklam gösterimi için beklenen tıklamaların değeri olarak tanımlanabilir:

Sezgisel olarak konuşursak, bu, w ile temsil edilen farklı bağlamsal eylem senaryolarında meydana gelen ortalama tıklama sayısı olarak anlaşılabilir (Çevirmenin Notu: buradaki yazar r olmalıdır), yukarıda olduğu gibi w'nin olasılık dağılımı ile ağırlıklandırılır. Metinde w, kullanıcı davranışının ve çevrimiçi model M'nin bir işlevidir.

Yeni model M için tıklama oranı şöyle olacaktır:

Yeni M 'modelinin tıklama oranını analiz etmek için, kullanıcı davranışı girdisinin değişmeden kaldığını varsayabiliriz ve basitçe olasılık dağılımını ayarlamak için yeni M' modelini kullanabiliriz. Şu şekilde yeniden yazılabilir:

Burada integraldeki payda teriminin w aralığında sıfırdan büyük olduğu varsayılmaktadır. Büyük sayılar yasasına göre, r yi şu şekilde tahmin edebiliriz:

Lütfen son tahminde sistemdeki bileşenlerin çoğunu nasıl ortadan kaldırdığımızı gözlemleyin. Bu çok güçlü, çünkü şimdi yeni model M 'için bu ortak dağıtımı P' (w) tamamen inşa etmemiz gerekmiyor, sadece değişen ve etkilenen parçaları belirlememiz gerekiyor. Model müdahalesi kontrol edildiğinden, yukarıdaki içeriğin belirlenmesi kolaydır.

Bu fikir, karşı-olgusal tahminler elde etmek için çevrimdışı model M 'kullanılarak olasılık dağılımına (P' (w) dayalı olarak verilen herhangi bir l (w) endeksine genişletilebilir. Bu yükselme, aşağıdaki gibi olasılık dağılımı P (w) ile günlük verileri kullanılarak hesaplanabilir:

  • Marko faktör ikamesinin ilham kaynağı

Bu kavramı küçük bir örnekle anlamaya çalışalım. 5 veri noktası olduğunu varsayalım:

buraya:

  • Her veri satırı, reklamları görüntülemek için bir göz atma içeriği bağlamını temsil eder;
  • P (M), çevrimiçi model M'yi kullanarak günlükte reklamların görüntülenme olasılığıdır;
  • P (M ), M çevrimdışı modelini kullanarak aynı reklamı gösterme olasılığıdır;
  • y bir kullanıcı işlemidir, tıklanırsa 1'dir, aksi takdirde 0'dır.

Çevrimiçi modelin genellikle kullanıcılar üzerine tıkladıklarında reklam gösterme olasılığının daha yüksek olduğunu görebiliriz, bu nedenle daha iyi bir modeldir ve yukarıdaki tahmin edicilerimiz kullanılarak benzer çıkarımlar yapılabilir. Bu nedenle, modelleri sezgisel olarak sıralamak için karşı olgusal tahminleri kullanabiliriz.

  • Kısıtlamalar ve pratik hususlar

Son denkleme yakından bakarsak, değerlendirilecek modele kısıtlamalar getirir. Bu yeni model, doğası gereği olasılıksal bir model olmalıdır ve her zaman küçük bir olasılık olmayabilen günlükteki modelle tam olarak aynı kararı üretme olasılığını hesaplayabiliriz.

Günlük verilerini girdikten sonra yeni model tarafından yalnızca nihai reklam seçimi kararına sahip olduğumuzu varsayarsak, eğilim puanı eşleştirmesine dayalı yöntemden ilham alabilir ve bu denklemi aşağıdaki gibi yeniden yazabiliriz:

Sezgisel olarak konuşursak, yeni modeli olasılıksal bir model olarak ele almak olarak anlayabilirsiniz.Yeni model, bir satır günlük verisi üzerinde günlük modelinden farklı bir karar aldığında, burada olasılık dağılımı P '(w) = 0 dikkate alınır. .

Aslında, yeni modelimizdeki karar sayısı azsa ve günlük verilerinden birçok kararı eşleştirmeyi bekliyorsak, yukarıdaki eşleştirme yöntemi uygulanabilir. Bununla birlikte, çoğu durumda (öneri algoritmaları, bilgi alma veya çok kollu slot makinesi problemleri gibi), güvenilir bir tahmin yapmak için yeterli eşleşme elde etmek için yeterli veriye sahip olmayabiliriz ve bu da tahmin edicide yüksek varyansa neden olur.

Basitlik uğruna, bu makalede varyansı nasıl ele alacağımızı tartışmayacağız, ancak okuyucular bu makalenin altında verilen referanslarda her zaman daha fazlasını okuyabilirler.

5. Karşı olgusal analizi simüle etmek için Python kullanın

Bu noktada, karşı-olgusal analiz konusunda bazı sezgisel ve matematiksel anlayışınız var. Daha ileri gitmek için üzerinde çalıştığımıza benzer bir simüle edilmiş örnek kullanalım. Varsayım:

  • Listemizde tüm kullanıcılar için geçerli olan 3 reklam bulunmaktadır;
  • N kullanıcı göz atma bağlamını, yani N farklı kullanıcı senaryosunu simüle ettik. Her kullanıcı senaryosu, her reklam için bağımsız bir tıklama olasılığına sahiptir;
  • Bazı çevrimiçi verileri, reklamları farklı koşullar altında kullanıcılara rastgele yerleştirerek ve tıklama davranışını gözlemleyerek topluyoruz. Rastgele yerleştirme, çevrimiçi modelleri değerlendirmek için adil çevrimiçi veri toplamanın iyi bir yoludur ve bu yöntem mümkün olduğunda kullanılmalıdır.

1. Veri Hazırlama

Üretim sistemindeki verilere benzeyen bazı kayıtlı verileri simüle edelim. Önce gerekli paketleri içeri aktaralım.

numpy olarak npimport pandaları pdimport olarak içe aktar matplotlib.pylab olarak pltfrom uuid import uuid4% matplotlib inline
  • İçeriği görüntüleyen kullanıcı

Önce içeriği (x) görüntüleyen 10.000 kullanıcının kimliklerini tanımlıyoruz ve ardından bunların oluşma olasılık dağılımını tanımlıyoruz, yani bazı içeriklerin diğerlerine göre yeniden görünme olasılığı daha yüksektir.

# set user contextsnum_contexts = 10000user_contexts = np.asarray () # bu bağlamlardan önce seçimi ata random_normal_sample_sum_to_1 (boyut): sample = np.random.normal (0, 1, boyut) sample_adjusted = sample-sample.min () return sample_adjusted / sample_adjusted.sum () user_context_selection_prior = random_normal_sample_sum_to_1 (num_contexts) plt.hist (user_context_selection_prior, bins = 100) user_context_selection_prior.sum (). round (2) == 1.0
  • Farklı içerik altında olasılığa tıklayın

Envanterde 3 reklam tanımlayalım. Basit olması açısından, belirli bir içerikteki bir reklamın tıklama oranının aşağıdakilerden biri olabileceğini varsayalım:

  • Düşük:% 10
  • Orta:% 40
  • Yüksek:% 60

Daha sonra hangi reklamın düşük / orta / yüksek frekans olduğunu rastgele belirleyebiliriz, bu durumda. Buradaki fikir, iyi bir modelin etkileşimli reklamları düşük etkileşimli reklamlar yerine belirli bir okuma içeriği bağlamında daha sık görüntülemeyi seçmesidir.

2. Rastgele veri seti

Şimdi, 100.000 yinelemeyi simüle edelim, her seferinde rastgele 1 parça 10.000 kullanıcı okuma bilgisini modelin girdisi olarak alıp rastgele bir reklam yerleştirelim. Ardından, görüntüleme bilgilerinde reklamın önceki olasılığına dayalı olarak rastgele tıklama veya tıklama oluşturmaz.

Buradaki fikir, herhangi bir modelin üretim günlüğü için benzer veriler oluşturmaktır, fark, kullanıcı tarafı davranışını simüle etmemizdir.

Simüle edilen veriler dört sütun içerecektir:

  • log_id: Kaydın her satırını temsil eder;
  • context_id: 10.000 içerik listesinden çıkarılan 1 içerik kimliğini temsil eder;
  • selected_ad: Çevrimiçi modellerde görüntülenen reklamlar;
  • Kullanıcı etkileşimi: İkili, kullanıcı etkileşimde bulunduysa 1'dir; aksi takdirde 0'dır.
num_iterations = 100000 # logsdf_random_serving = pd.DataFrame (sütunlar =) # her günlük girişi için benzersiz kimlik oluşturundf_random_serving = # her günlük girişine bir bağlam kimliği atayındf_random_serving = np.random.choice (user_contexts, size = numiter = Doğru, p = user_context_selection_prior) # o contextdf_random_serving = np.random.choice içinde gösterilecek bir reklamı rastgele örnekleyin (reklamlar, size = num_iterations, replace = True) # her günlük girişi için, bir eylemi örnekleyin veya tıklamayı kullanıp kullanmama adım 1def sample_action_ad (context_id, ad_id) adımında bağlam-reklam çiftine atanan olasılık: previous = user_context_priors.get (context_id) return np.random.binomial (1, önceki) df_random_serving = df_random_serving.apply (lambda x: sample_action_for x), axis = 1) # datadf_random_serving.sample (10) 'un anlık görüntüsü

Özetlemek gerekirse, bu simüle edilmiş günlük verilerindeki her satır bir örneği temsil eder, burada:

  • Kullanıcı web sitesini bir amaç için ziyaret etti ve context_id (x) ile temsil edilen içeriğe göz atan kullanıcı oluşturdu;
  • Çevrimiçi model (bu durumda, rastgele seçim modeli) kullanıcılara gösterilecek reklamları seçer;
  • Gözlemlenen ve kaydedilen kullanıcı davranışı.

3. Yeni model değerlendirmesi

  • Yeni bir model tanımlayın

Sonra, bazı modeller tanımlayalım, bu modellerin tıklama oranlarının performans sıralamasını sezgisel olarak bilmemiz gerekiyor. Bu, çevrimdışı model tahminlerini simüle etmemize, göstergeler elde etmek için karşı olgusal tahminler kullanmamıza ve bunları beklenen sonuçlarla karşılaştırmamıza olanak tanır.

Bir yöntem, belirli bir tarama içeriği için düşük / orta / yüksek farklı önceki olasılıkları temsil etmek için vektörleri kullanmaktır. Bu senaryo için daha yüksek etkileşimli reklamcılığı seçmeye daha meyilli bir modelin daha iyi olacağını sezgisel olarak söyleyebiliriz. Lütfen modelin tıklama oranını önceden bilmediği için gerçek modelin böyle çalışmadığını unutmayın; bunları, bu önceki olasılıkların farklı tahmini doğruluğuna sahip mevcut modeller olarak düşünebilirsiniz.

İşte 10 model, beklenen etkileri giderek artıyor:

new_model_priors = np.atleast_2d ()

Daha açık olmak gerekirse, onu bir DataFrame'e dönüştüreceğiz:

new_model_names = np.asarray () pd.DataFrame (veri = np.hstack (), sütunlar =)

Modelleri bu şekilde tanımlamanın bir yararı, her model için beklenen tıklama oranını gerçekten hesaplayabilmemizdir. Modelin özü, düşük / orta / yüksek frekanslı reklamları seçmek için kullanılan bir olasılıklar kümesi olduğundan ve düşük / orta / yüksek frekanslı reklamların tıklama oranını tanımladığımız için, her modeli tahmin etmek için doğrudan nokta ürününü kullanabiliriz. Tıklama oranı:

# beklenen etkileşim oranı: beklenen_ etkileşim_rates = np.dot (yeni_model_priors, np.atleast_2d (ad_interaction_priors) .T) beklenen_ etkileşim_rates.ravel () # Çıktı: dizi ()

Beklenen tıklama oranının beklediğimiz sıra olduğunu görebiliriz. Şimdi, reklam seçimlerini örneklemek için her bir politikayı kullanmaya çalışacağız ve bu tıklama oranlarını yalnızca her modelin kayıtlı verilerini ve örnekleme sonuçlarını kullanarak tahmin edip edemeyeceğimizi görmek için yukarıda öğrenilen karşı olgusal teknikleri kullanacağız.

  • Tahmini tıklama oranı: eğilim puanı eşleşmesi

İlk olarak, eğilim eşleme tahminlerini kullanalım:

onların arasında:

  • yi: kullanıcı davranışı;
  • a : Yeni modelin ürettiği kararlar;
  • a: Çevrimiçi modeller tarafından oluşturulan kararlar;
  • P (a | x, b): Çevrimiçi modelin günlükte bir reklam göstermeyi seçme olasılığı (çevrimiçi modelin rastgele seçildiğini unutmayın).
# günlüğe kaydedilen verilerle aynı bağlam kimliklerini kullanın: df_new_models_matching = df_random_serving.copy () def sample_ad_for_context_n_model (context_id, model_priors): # verilen bağlam etkileşimi için reklam etkileşim önceliklerini alın_priors = verilen kullanıcı_context_priors.get (önceki bağlam_kimliği) # alın etkileşim önceliklerine dayalı model selection_priors = model_priors # öncelikleri kullanarak bir reklam seçin ve seçili_ad = np.random.choice seçim olasılığını günlüğe kaydedin (ads, None, replace = False, p = selection_priors) # selected_ad_prior = selection_priors return selected_adfor policy_name, model_prior içinde zip (new_model_names, new_model_priors): df_new_models_matching.loc = df_new_models_matching.apply (lambda x: sample_ad_for_context_n_model (x, model_prior)) df_new_models_matching.sample (5)

Her günlük girişi için, tüm yeni modellerden reklam seçimini hesapladığımızı görebiliriz.

# match and estimate: tahmin_matching = aralıktaki i için (len (new_model_names)): model = "model _ {}". format (i) matching_mask = (df_new_models_matching == df_new_models_matching.values) .astype (int) # günlük kaydı politikası rasgele olduğundan P (w) = 1/3 tahmin = (df_new_models_matching * matching_mask / 0.333) .sum () / df_new_models_matching.shape tahmin_matching.append (tahmin) plt.figure (figsize = (10,5)) plt.plot (beklenen_ etkileşim_ oranları, etiket = "beklenen oran") plt.xticks (aralık (10), etiketler = yeni_model_names, rotasyon = 30) plt.plot (tahmin_matching, label = "gerçek oran") plt.legend () plt.show ()

  • Tahmini TO: Eğilim Puanı Ağırlıklı

İlk olarak, eğilim eşleme tahminlerini kullanalım:

onların arasında:

  • yi: kullanıcı davranışı;
  • P (a | x, b): Çevrimdışı modellerin seçim olasılığını değerlendirin;
  • P (a | x, b): Üretim modelinin log olasılığı (rastgele teslimat).
# günlüğe kaydedilen verilerle aynı bağlam kimliklerini kullanın: df_new_models_weighting = df_random_serving.copy () def sample_prior_for_context_n_model (context_id, model_priors, selected_ad): # verilen bağlam etkileşimi için reklam etkileşimi önceliklerini alın_priors = user_context_priors.get için önceki seçim etkileşim önceliklerine dayalı verilen model selection_priors = model_priors # seçilen reklamdan önce al selected_ad_prior = selection_priors model_name için select_ad_prior, zip içinde model_prior (new_model_names, new_model_priors): df_new_models_weighting.loc = df_new_modelrior_for_for_for x), axis = 1) df_new_models_weighting.sample (5)

Her bir günlük girişi için, modelin ve çevrimiçi modelin tüm yeni modeller için aynı reklam gösterimini benimseme olasılığını hesapladığımızı görebiliriz.

# eşleştir ve tahmin et: tahmin_ağırlığı = aralıktaki i için (len (new_model_names)): model = "model _ {}". format (i) # günlük politikası rastgele olduğundan P (w) = 1/3 tahmin = ( df_new_models_weighting * df_new_models_weighting / 0.333) .sum () / df_new_models_weighting.shape tahmin_weighting.append (tahmin) plt.figure (figsize = (10,5)) plt.plot (beklenen_ etkileşim_rates, etiket = "beklenen oran") plt. (10), tags = new_model_names, rotation = 30) plt.plot (tahmin_ağırlığı, etiket = "gerçek oran") plt.legend () plt.show ()

sonuç olarak

İki tahmincide, her model için doğru tıklama oranını tahmin edebildiğimizi görebiliriz. Diğer bir deyişle, her modelin çevrimiçi olduktan sonra hangi sıralamayı gerçekleştireceğini önceden bilemezsek, bu teknoloji yalnızca günlük verilerindeki her modelin tahmin sonuçlarından daha uygun bir model seçmemize yardımcı olacaktır.

Bu simüle edilmiş durumda, doğru bir tıklama oranı elde ettiğimizi belirtmekte fayda var. Ama aslında, kesin sayıları elde etmemizi engelleyen çeşitli müdahale edici faktörler olabilir. Bununla birlikte, çevrimdışı değerlendirme yöntemlerini değerlendirirken, her zaman önem sırasına göre sıralanmış üç kuralı takip edebiliriz:

1. Yönlülük: A modelinin çevrimiçi göstergesi > Model B, ardından Model A'nın karşı olgusal endeksi > Model B.

2. Oranı değiştirin: A modelinde, B modeline göre% 10 daha fazla çevrimiçi gösterge varsa, karşı olgusal göstergeler de benzer bir miktarda daha yüksektir.

3. Tam değer: Örneğimizin gösterdiği gibi, çevrimiçi göstergelerin ve karşı olgusal göstergelerin mutlak değerleri çok yakındır (bu ideal bir durumdur).

Bunu yararlı buluyor musunuz? Teknolojinin günlük işlerde yararlı olabileceği durumları düşünebiliyor musunuz? Makalenin bu yöntemin bazı sınırlamalarını hesaba katmadığını gördünüz mü? Lütfen geri bildirim / eleştiri / soru içeren yorumlarınızı bırakın, umarım daha fazla tartışma yaparsınız.

Kaynakça / Genişletilmiş Okuma

Bu makale esas olarak ve esinlenmiştir. Daha fazla araştırmayla ilgileniyorsanız, benzer bağlamda daha fazla uygulamayla birlikte okumak ilginçtir:

Karşı-olgusal Akıl Yürütme ve Öğrenme Sistemleri

https://arxiv.org/abs/1209.2355

. Arama Motorları için Tıklama Metriklerinin Karşı Gerçeğe Dayalı Tahmini ve Optimizasyonu

https://arxiv.org/abs/1403.1891

Karşı-olgusal Öğrenme için Kendi Kendini Normalleştiren Tahmin Aracı

https://papers.nips.cc/paper/5748-the-self-normalized-estimator-for-counterfactual-learning

Bağlamsal haydut tabanlı Haber Makalesi Öneri Algoritmalarının Tarafsız Çevrimdışı Değerlendirmesi

https://arxiv.org/abs/1003.5956

. Seçenek listesi önerisi için politika dışı değerlendirme

https://arxiv.org/abs/1605.04812

Orjinal başlık:

Çevrimdışıyken Yaklaşık İş Metrikleri İçin Bir Test Seti Nasıl Oluşturulur

Orijinal bağlantı:

https://www.analyticsvidhya.com/blog/2020/02/how-to-create-test-set-approximate-business-metrics-offline/

Editör: Huang Jiyan

Redaksiyon: Lin Yilin

Çevirmen Profili

Zhang Ruonan , UIUC istatistik yüksek lisans mezunu, Güney Kaliforniya medya endüstrisinin veri bilimcisi. Yurt içi ve yurt dışı ticari bankalar, internet, perakende sektörü ve gıda şirketlerinde staj yaptım, farklı alanlardaki veri analizi ve uygulama vakaları ile iletişime geçmeyi seviyorum ve veri bilimi ürün geliştirme konusunda çok heyecanlıyım.

-Bitiş-

Tsinghua-Qingdao Veri Bilimi Enstitüsü'nün resmi WeChat kamu platformunu takip edin " AI Veri Pastası "Ve kız kardeş numarası" Veri Pastası THU "Daha fazla ders avantajı ve kaliteli içerik elde edin.

Arkadaşlar yakında geri geliyor! Klasik konu: Aman Tanrım Arkadaşlar'da kaç kez bahsediliyor?
önceki
Bairong Yunchuang ve Tsinghua Üniversitesi "Salgın Altındaki Çin Ekonomisi" araştırma raporunu yayınladı
Sonraki
Marbury, kendi kendini izole etme fotoğraflarını paylaştı ve beğendi
CBA İngiliz ev sahibi izolasyonu "hapishane" ile karşılaştırıyor Şangay Erkek Basketbol Takımı: İşbirliğini sonlandırın!
Bir şey söyler ve başka bir şey yaparlar! İngiliz ve Amerikalı politikacıların bu çirkin tavırları Almanya ve İtalya'ya bile dayanamıyor.
Pek çok yerin sekreterleri ve belediye başkanları maskeleri çıkarmada başı çekerek güçlü bir sinyal gönderdiler!
Pekin'deki mezar temizleyicilerin trafiği önümüzdeki hafta kademeli olarak artacak ve bu yerlerdeki trafik baskısı sabah trafiği yoğun olacak.
Tiantangzhai Manzara Bölgesi Düzenli Açılış, Doğal Oksijen Bar "Akciğer Yıkamanızı" Bekliyor
Günde 15.000 şiş satan Jinan barbekü merkezi geri geliyor ve genç grup tabanlı yemek servisi hızla iyileşiyor
Başlangıç fiyatı 6,5 milyon RMB, gecikmiş 38,83 milyon RMB ve kimse Jinan Court'un çevrimiçi açık artırmasına kaydolmadı
Earth Bureau | Hazır! Biden, Trump'la savaşır ama sonra seçim daha bulanıklaşır
Yeni başlayanlar açısından uluslararası bir akademik makale nasıl yazılır?
Tsinghua'nın `` Jitu Tu '' ve `` Tianyuan''ı hor görmesi açık kaynaklı!
AutoFlip: akıllı video uyarlama için açık kaynaklı bir çerçeve (bağlantı)
To Top