58 Şehirde Akıllı Öneri Sisteminin Gelişimi ve Uygulaması

Çin'in en büyük gizli bilgi web sitesi olan 58.com, kullanıcılara ev arama, iş arama, ikinci el arabalar ve sarı sayfalar gibi çeşitli yaşam bilgileri sağlar. Böyle bir senaryoda, öneri sistemi, kullanıcıların kendileri için değerli bilgileri keşfetmelerine ve kullanıcı deneyimini geliştirmelerine yardımcı olabilir.Bu makale, 58.com akıllı öneri sisteminin teknik gelişimini ve uygulamasını tanıtacaktır.

58. Şehrin akıllı öneri sistemi 2014 yılında doğdu (C ++ ile uygulandı) Sistem, işe alım, emlak, kullanılmış arabalar, sarı sayfalar ve ikinci el öğeler gibi ürün gruplarının tavsiye iş yinelemelerini art arda deneyimledi, ancak sistem oldukça bağlantılı ve uyarlanması zor. Stratejinin hızlı yinelemesi. 58.com Uygulaması, öneriyi beğendiğinizi ve projenin hızla yinelenmesini istediğinizi tahmin ediyor ve kararlı, yüksek performanslı ve düşük kuplajlı olan ve öneri stratejilerinin hızlı yinelemesini destekleyen mikro hizmet mimarisine (Java'da uygulanan) dayalı bir öneri sistemi seti oluşturdu. , Bu, öneri işinin yinelemeli verimliliğini büyük ölçüde artırır. O zamandan beri, eski öneri sistemini yeniden yapılandırdık ve tüm hizmetleri yeni öneri sistemine bağladık ve sonunda birleşik 58 şehir içi akıllı öneri sistemini başarıyla oluşturduk. Aşağıda 58 şehir içi akıllı öneri sistemini tanıtacağız: Önce genel mimariyi gözden geçireceğiz ve ardından algoritmayı, sistemi ve verileri ayrıntılı olarak tanıtacağız.

Genel mimari İlk olarak üç katmana ayrılmış olan 58.com öneri sisteminin genel mimarisine bakın: veri katmanı, strateji katmanı ve uygulama katmanı. 58 platform tarafından oluşturulan çeşitli iş verilerine ve kullanıcılar tarafından biriktirilen zengin davranış verilerine dayanarak, verilere çeşitli stratejiler uygularız. Madencilik ve analiz gerçekleştirin ve son olarak sonuçları çeşitli önerilen senaryolara uygulayın.

Veri katmanı:

Esas olarak iş verilerini ve kullanıcı davranışı günlük verilerini içerir. İş verileri temel olarak kullanıcı verilerini ve posta verilerini içerir Kullanıcı verileri, C-son kullanıcıların ve kurumsal kullanıcıların bilgilerini içeren 58 platformundaki kayıtlı kullanıcıların temel verileridir.Posta verileri, 58 platformunda kullanıcılar tarafından yayınlanan gönderilerin temel öznitelik verileridir. Buradaki gönderiler, kullanıcılar tarafından gönderilen listeler, araba kaynakları, pozisyonlar ve sarı sayfalar gibi bilgilere atıfta bulunur.İfade kolaylığı için, bu bilgiler toplu olarak aşağıdaki metinde gönderiler olarak anılır. Kullanıcı davranışı günlük verileri, kullanıcının seçimi, tıklama, favori, arama, mikro sohbet ve APP üzerindeki diğer işlem günlükleri gibi ön uçtaki ve arka uçtaki gömme noktalarından gelir. Bu veriler için iki depolama yöntemi vardır; biri çevrimdışı analiz için HDFS'de toplu depolama, diğeri gerçek zamanlı hesaplama için Kafka'ya gerçek zamanlı akıştır.

Strateji katmanı:

Çevrimdışı ve gerçek zamanlı verilere dayalı olarak, ilk olarak kullanıcı portreleri, post portreler ve çeşitli veri analizleri gibi çeşitli temel veri hesaplamaları gerçekleştirilir.Bu temel verilerin yanı sıra, öneri sistemindeki en önemli iki bağlantı vardır: hatırlama ve sıralama. Geri çağırma bağlantısı, popüler geri çağırmalar, kullanıcının ilgi duyduğu geri çağırmalar, ilişkilendirme kuralları, işbirliğine dayalı filtreleme, matris ayrıştırma ve DNN gibi birden çok geri çağırma kaynağının hesaplanmasını içerir. Öneri sıralaması yapmak, LR, FM, GBDT, füzyon modeli ve DNN'yi art arda yinelemek için bir makine öğrenimi modeli kullanıyoruz. Bu temel makine öğrenimi modellerine dayanarak, tıklama oranı, dönüşüm oranı ve kalma süresinin birden çok göstergesini bir sıralama gerçekleştirdik. Bu veri işleme katmanı, çevrimdışı hesaplama için MapReduce ve Hive, çok boyutlu veri analizi için Kylin, büyük ölçekli dağıtılmış makine öğrenimi modeli eğitimi için Spark ve DMLC ve derin modeller için theano ve tensorflow gibi çeşitli hesaplama araçlarını kullanır. Eğitim.

Uygulama katmanı:

Harici olarak rpc ve http arayüzleri sağlayarak önerilen hizmetlere erişimi gerçekleştiriyoruz. 58.com'un önerilen uygulamalarının çoğu, kullanıcılara en üstN öneri moduna ait önerilen sonuçların bir listesini gösterir. 58.com'un önerilen bazı önemli ürünleri şunlardır:

1. Beğendiğinizi tahmin edin: Aynı şehirde önerilen en önemli 58 ürün. Önerilen senaryolar, APP ana sayfasını ve farklı kategori sayfalarını içerir. Amaç, kullanıcıların APP'yi açarken veya kategori sayfasına girerken istedikleri gönderi bilgilerini hızlı bir şekilde bulmalarını sağlamaktır. Öneriler esas olarak kullanıcıların kişisel tercihlerine dayanmaktadır.

2. Ayrıntı sayfasındaki ilgili öneri: Kullanıcı gönderi ayrıntı sayfasına girdiğinde, kullanıcı mevcut gönderiyle ilgili gönderileri önerecektir. Bu senaryoda, kullanıcının niyeti açıktır ve öneri, ek olarak ana kullanıcı tercih bilgisi olarak mevcut gönderi bilgileriyle yapılacaktır.

3. Birkaç arama sonucu önerisi: Kullanıcılar, kategori listesi sayfasındaki filtre öğesi veya arama kutusu aracılığıyla bilgi almak için kategori listesi sayfasına girecektir.Geçerli filtre öğesi veya arama kriterinde daha az sonuç varsa veya hiç sonuç yoksa, öneri mantığı tetiklenecektir. Bilgi önerilerinde bulunun. Şu anda, mevcut arama kriterlerinin ve kullanıcı tercih bilgilerinin genişletilmesine dayalı olarak önerilecektir.

4. Kişiselleştirilmiş itme (İtme): Kullanıcı APP'yi açmadan önce, kullanıcının ilgilendiği bilgiler kendisine iletilerek kullanıcının tıklaması istenir ve kullanıcı etkinliği artırılır. Bu, iki öneri mantığını içerir: push bildirimlerinin oluşturulması ve push iniş sayfasındaki gönderi listesinin oluşturulması. Push uygulamasının kullanıcılar için tacize neden olacak zorunlu bir tavsiye olduğunu belirtmekte fayda var.Bu nedenle, kullanıcı tacizinin nasıl azaltılacağı ve kullanıcıların gerçekten ilgilendikleri bilgilerin nasıl önerilebileceği özellikle önemlidir.

5. Feed akışı önerisi: Önerilen ürünlerimiz, APP mesaj merkezindeki bugünün öneri senaryosu ve push açılış sayfası senaryosu gibi bazı önerilen senaryolarda feed akışı biçiminde görüntülenir. Kullanıcılar, popüler haber akışı akışı önerilerine benzer şekilde, bu sayfalardaki tüketim bilgilerini yenilemek için sürekli olarak aşağı çekebilir.

Öneri sistemi, üç yönü içeren karmaşık bir projedir: algoritma stratejisi, mühendislik mimarisi ve etki verisi değerlendirmesi Aşağıdaki makale, bu üç açıdan 58.com öneri sistemini tanıtacaktır.

algoritma

Öneri, ön sayfadan arka uç algoritma stratejisine kadar çeşitli süreçleri içerir.Önerme sürecini dört ana bağlantıya ayırıyoruz: aşağıdaki şekilde gösterildiği gibi geri çağırma, sıralama, kurallar ve görüntüleme:

Geri çağırma bağlantısı, kullanıcıların ilgilendikleri aday gönderi kümesini çok sayıda gönderiden ayırmak için çeşitli algoritmik mantık kullanır.Genel küme boyutu onlarca ila yüzler arasındadır.

Sıralama, aday kümesindeki gönderilerin puanlanması ve sıralanması anlamına gelir.Makine öğrenimi sıralama modelleri genellikle burada kullanılır ve sıralama sürecinde bir sıralama listesi oluşturulur.

Kural bağlantısı, sıralanmış liste için belirli bir kural stratejisi benimseyebileceğimiz ve son olarak N sonuç içeren bir liste oluşturabileceğimiz anlamına gelir. Örneğin, kural bağlantısında, metin tekilleştirme, görüntü tekilleştirme, karma tekilleştirme vb. Gibi farklı tekilleştirme stratejileri benimseyebiliriz, farklı liste kırma stratejileri benimseyebilir ve ürün yöneticileri tarafından önerilen çeşitli kural mantıklarını yineleyebiliriz. Öneri sisteminin son değerlendirmesi istatistiksel sonuçlara dayandığından, çeşitli yapay kurallar nihai sonucu etkileyecektir.Kuralları soyutladıktan sonra, ilgili mantığın makul olup olmadığını nihayet değerlendirmek için herhangi bir mantık üzerinde çevrimiçi bir ABTest yapabiliriz.

N öneri sonucu listesi oluşturulduktan sonra, farklı ön uç görüntüleme yöntemleri de nihai öneri efektini etkileyecektir. Örneğin, farklı kullanıcı arayüzü tasarımları, büyük görüntü modu veya küçük resim modu ve sayfada görüntülenen alanlar kullanıcının öneri listesi sayfasını etkileyecektir. Tıklayın, bu nedenle önerilen ürünlerin yinelemeli sürecinde farklı görüntü stili yinelemeleri de önemlidir.

Yukarıdaki dört bağlantı arasında, geri çağırma ve sıralama, öneri sistemindeki en önemli iki bağlantıdır. Kurallar ve gösterim stilleri genellikle uzun bir süre içinde değişir, geri çağırma ve sıralama, madencilik için çok fazla alana sahiptir ve sürekli olarak yinelenecektir.Önerme algoritmamız çalışmamız da esas olarak geri çağırma ve sıralama etrafında yürütülür. Aşağıdaki şekil, temel verilerin hesaplanmasını ve üst düzey geri çağırma stratejisinin ve sıralama modelinin yinelemesini içeren tavsiye algoritmamızın genel çerçevesidir.

Temel veri hesaplaması, temel olarak kullanıcı etiketleri ve posta etiketlerinin madenciliğini içerir.İşin bu kısmı, birden çok kullanıcı portreleri, arama ve tavsiye ekibi tarafından yapılır ve son olarak her takım verileri paylaşır. Kayıt sırasında kullanıcı tarafından doldurulan temel öznitelik bilgileri ve kullanıcı davranışı günlüklerine dayalı olarak, kullanıcının yaşı, cinsiyeti, eğitim geçmişi, geliri ve diğer temel özellikler gibi kullanıcının demografik özellikleri ve ilgi tercihi bilgileri çıkarılabilir. Fiyat, oda, dekorasyon seviyesi vb. Tercih bilgileri Etiket sonrası madencilik, yazıların sabit özniteliklerinin çıkarılmasını, türetilmiş özniteliklerin çıkarılmasını ve dinamik özniteliklerin hesaplanmasını içerir. Kategori, bölge, başlık, metin, resimler, konut fiyatları, salonlar ve topluluklar gibi sabit özellikler doğrudan posta veritabanından çıkarılabilir. Ayrıca, gönderi bilgilerinin eksiksiz olup olmadığı, fiyatın makul olup olmadığı, görüntünün kalitesi ve posterin kalitesi gibi birden çok boyuta göre gönderi kalitesi puanını da hesaplarız. Kullanıcı davranışı günlük verilerine dayalı olarak, PV, UV, tıklama oranı, dönüşüm oranı ve kalma süresi gibi dinamik özellikler hesaplanabilir. Bu veriler nihayetinde geri çağırma sürecinde ve sıralama sürecinde kullanılacaktır.Örneğin, ilgi alanı geri çağırma, kullanıcı etiketleri ve posta etiketlerine dayalı olarak gerçekleştirilebilir ve kullanıcı etiketleri ve posta etiketleri, özellik yinelemeli makine öğrenme modelleri olarak kullanılır.

Geri çağırma, esas olarak önerilen aday kümelerinin oluşturulmasından sorumludur. Süreci tamamlamak için çeşitli geri çağırma kaynağı birleştirme yöntemleri kullanıyoruz. Çeşitli geri çağırma stratejilerini aşağıdaki gibi art arda yineledik:

Popüler hatırlama. Karşılaşma ve tıklama günlüklerine dayalı olarak, farklı ayrıntılara sahip popüler verileri hesaplayacağız. Örnek olarak ikinci el otomobil iş kolunu ele alırsak, kaba taneli ile ince taneli arasında değişen veriler şunları içerir: şehirlerdeki popüler iş bölgeleri, iş bölgelerindeki popüler araba serileri ve markalar ve belirli otomobil serileri ve markaları altındaki popüler araba kaynakları. Her otomobil kaynağının popülaritesi, PV, UV, CTR ve son gönderilerin diğer göstergeleri ile ölçülür. Buradaki TO, Bayesian ve COEC tarafından yumuşatılacaktır. Soğuk başlangıçlar sırasında popüler geri çağırma stratejileri geniş çapta benimsenecektir.

Bölgesel geri çağırma. 58.com, kullanıcılara yerel yaşam hizmeti bilgileri sağlamak içindir ve kullanıcının her ziyareti, seçilen şehir, konum vb. Gibi bölgesel bilgileri getirecektir. Yakındaki en son veya en sıcak gönderilerin hatırlanması ve popüler kentsel gönderilerin hatırlanması gibi geri çağırmalar yapmak için esas olarak coğrafi bilgileri ve popüler verileri birleştiriyoruz.

Faiz hatırlama. Post temel öznitelik alanlarına ve gönderi etiketi bilgilerine dayanarak, en son yayınlanan gönderilerin etiket veya öznitelik alanlarına göre alınabildiği bir sonradan geri alma sistemi oluşturduk. Kullanıcı portresinde, her kullanıcının ilgi etiketini hesapladık, böylece kullanıcı ilgi etiketine bağlı olarak, geri çağırma kaynağı olarak kullanılabilen geri çağırma sisteminde bir grup gönderi alınabilir. Ek olarak, gönderi detay sayfasının ilgili öneri senaryosunda, geri çağırma veri kaynağı olarak geri çağırma sisteminden ilgili gönderiyi almak için mevcut gönderinin özniteliklerini ve etiket bilgilerini de kullanabiliriz. Bu iki geri çağırma, aslında genellikle içeriğe dayalı öneriler dediğimiz şeydir.

İlişkilendirme kuralları. Burada doğrudan geleneksel Apriori, FP-büyüme ilişkilendirme kuralı algoritması kullanılmıyor, ancak ilişkilendirme kuralı fikrine atıfta bulunarak, her bir kullanıcının tüm öğeleri bir işlem olarak tıkladığı son zaman dilimi, böylece iki öğe arasındaki desteği hesaplıyor ve Zaman zayıflatma faktörü, destek derecesine dahil edilir ve son olarak, her bir öğe için güçlü alaka düzeyine sahip en iyi K öğeler elde edilebilir. Bu geri çağırma yöntemi aslında işbirlikçi filtrelemedeki öğe benzerlik matrisi hesaplamasına benzer ve biz bunu esas olarak ayrıntı sayfasındaki ilgili önerilere uygularız.

İşbirlikçi filtreleme. Spark'ı, kullanıcı tabanlı ve Öğe tabanlı toplu işbirliğine dayalı filtreleme hesaplamaları uygulamak için kullanıyoruz. Büyük miktarda veri nedeniyle toplu hesaplamalar daha fazla zaman alacaktır. Öğe tabanlı gerçek zamanlı işbirliğine dayalı filtreleme algoritmaları uyguladık. Normal şartlar altında, kullanıcının öneri sonuç listesini doğrudan bir geri çağırma kaynağı olarak kullanacağız ve ayrıntı sayfasındaki ilgili öneri senaryolarında, ortak filtreleme ile hesaplanan Öğe benzerlik matrisini de kullanacağız. Bir hatırlama kaynağı.

matris ayrışımı. Kullanıcıların farklı düzeylerdeki gönderileri puanlaması olarak, kullanıcının tıklama, yer işareti koyma, paylaşma, mikro sohbet ve telefon görüşmeleri gibi gönderiler üzerindeki eylemlerini dikkate alan ve böylece öneri için bir puanlama matrisi veri seti oluşturan SVD algoritmasını kullanıma sunduk.

DNN geri çağrıldı. Google, YouTube video önerilerini geri çağırmak için DNN'yi kullanır. Ayrıca, kullanıcı vektörlerini öğrenmek ve DNN aracılığıyla vektörleri yayınlamak ve geri çağırma kaynağı olarak kullanıcılara en yakın olan en iyiK gönderileri hesaplamak için ilgili girişimlerde bulunuyoruz.

Yukarıda belirtilen farklı geri çağırma algoritmaları, önerilen aday verilerinin bir parçasını oluşturmuştur. Aday setin çeşitliliğini ve kapsamını iyileştirmek için farklı geri çağırma verilerini birleştirmemiz gerekir. Burada esas olarak iki geri çağırma füzyon stratejisi kullanıyoruz:

Dereceli füzyon. Aday küme için bir hedef sayı değeri belirleyin ve ardından aday küme boyutu karşılanana kadar etkinlik sırasına göre aday öğeleri seçin. Geri çağırma algoritmasının etki sırasının A, B, C, D olduğu varsayıldığında, veriler önce A'dan alınacak, aday kümedeki hedeflerin sayısı yetersizse, veriler B'den alınacak vb. Sistemimiz, hiyerarşik füzyon stratejilerinin yapılandırmasını destekler ve farklı geri çağırma algoritmalarının sırası esnek bir şekilde yapılandırılabilir. Buradaki etki sırası, çevrimdışı değerlendirme ve çevrimiçi değerlendirmeye göre belirlenir. Örneğin, çevrimdışı olarak, farklı geri çağırma algoritmalarının geri çağırma oranını ve doğruluğunu karşılaştıracağız ve çevrimiçi olarak, son tıklama veya dönüşüm verilerindeki farklı geri çağırma algoritmalarının kapsamını karşılaştıracağız. .

Modülasyon füzyonu. Farklı oranlara göre, veriler farklı geri çağırma algoritmalarından alınır ve daha sonra nihai toplam aday kümesini oluşturmak için üst üste bindirilir. Sistemimiz ayrıca, seçilecek algoritmaları geri çağıran modülasyon füzyon stratejilerinin konfigürasyonunu da destekler ve her geri çağırma algoritmasının seçim oranı esnek bir şekilde yapılandırılabilir. Buradaki oran, temel olarak, son çevrimiçi tıklama veya dönüşüm verilerindeki farklı geri çağırma algoritmalarının kapsamına göre ayarlanır.

Geri çağırma sürecinde, yeni geri çağırma kaynakları eklenir veya yeni bir geri çağırma algoritmasının geliştirilmesi, modülasyon füzyon stratejilerinin oranını değiştirme ihtiyacı gibi yeni füzyon stratejileri başlatılır, çevrimiçi ABTest'i yapacağız ve sonunda farklı stratejilerin etkilerini karşılaştırarak rehberlik edeceğiz. Yinelememiz. Geri çağırma sürecinde, düşük kaliteli gönderileri filtreleme ve belirli belirli senaryolarda geri çağırma algoritmasının sonuçlarına bazı koşullar empoze etme gibi bazı filtreleme kurallarımız da olacağını belirtmekte fayda var.

Sıralama sürecinde, esas olarak her gönderiyi puanlamak ve sıralamak için Pointwise yöntemini kullanırız ve gönderilerin tıklama oranını, dönüşüm oranını ve kalış süresini tahmin etmek için makine öğrenimi modellerini kullanarak sıralama yaparız. İlk günlerde, esas olarak tıklama oranını optimize ettik. Şu anda, yalnızca tıklama oranına değil, aynı zamanda dönüşüm oranının iyileştirilmesine de odaklanıyoruz. 58.com'un ürün senaryosunda, dönüşüm temel olarak kullanıcıların yayın ayrıntıları sayfasındaki mikro sohbet ve arama işlemlerini ifade eder.

Çevrimdışı ayıklama süreci temel olarak örnek oluşturma ve seçme, özellik çıkarma, model eğitimi ve değerlendirmeyi içerir. İlk olarak, gömülü nokta günlüğündeki pozlama, tıklama, dönüştürme ve kalma süresi verilerini çıkarın ve analiz edin, örneğin maruz kalma seri numarasına göre çeşitli işlemleri ilişkilendirme, gömülü nokta parametrelerini analiz etme (günlüğe kaydedilen gerçek zamanlı özellikler gibi) ve bağlam özelliklerini analiz etme. Ve model örnekleri oluşturmak için aynı anda etiketleyin. Ardından, kötü amaçlı kullanıcı örneklerini filtreleme, geçersiz maruz kalma örneklerini filtreleme vb. Gibi örnekleri filtreleyin. Daha sonra özellik örnekleri oluşturmak için örnekler üzerinde öznitelik çıkarımı gerçekleştiriyoruz.Ağırlıklı olarak kullanıcı, posta, poster ve bağlam olmak üzere dört boyuttan mühendislik yapıyoruz. Bundan sonra, belirli bir pozitif ve negatif örnek oranına göre örnekleme yapılır ve son olarak model eğitimi ve değerlendirmesi yapılır.Dönüş değerlendirme göstergeleri ağırlıklı olarak AUC'yi ifade eder. Çevrimdışı etki iyileştirildikten sonra, ABTest başlatılacak ve kademeli olarak yinelenecektir. Aşağıdaki sıralama stratejilerini yinelemeli olarak başlattık:

Kural sırası. Makine öğrenimi modeli ilk günlerde başlatılmadığında, aday kümesindeki gönderiler doğrudan yenileme süresine, istatistiksel TO'ya veya bazı ürün kurallarına göre sıralanacaktır.

Tek makine öğrenimi modeli. İlk uygulamamız LR modelidir. Doğrusal bir modeldir, basit, verimli ve yorumlanabilir, ancak özellik mühendisliği için yüksek gereksinimleri vardır. Modelin doğrusal olmayan ifade yeteneğini geliştirmek için özellik kombinasyonları yapmamız gerekir. İlk günlerde, eğitmek için LibLinear'ı kullandık Model daha sonra Spark'a taşındı. Bundan sonra, XGBoost ağaç modelini tanıttık.Güçlü doğrusal olmayan ifade kabiliyetine, yüksek verimliliğe ve kararlılığa sahip. Şu anda açık kaynak topluluğundaki en sıcak modellerden biri. Başlangıçta, eğitim için bağımsız sürümü kullandık ve daha sonra dağıtımı kullanarak iplik kümemize XGBoost'u yerleştirdik Eğitim. Aynı zamanda FM modelini de uyguluyoruz.LR modeline kıyasla, özellik kombinasyonu problemini büyük ölçekli seyrek veriler altında çözebilecek özellik kombinasyonu sunuyor.Model eğitimi için ağırlıklı olarak dağıtılmış FM (DiFacto, FM on Yarn) kullanıyoruz. Yukarıdaki modeller gruplar halinde, genellikle günde bir kez güncellenir. Kullanıcı davranışındaki değişiklikleri hızlı bir şekilde yakalamak için, Çevrimiçi Öğrenme modelini de tanıtıyoruz. Esas olarak LR modelini güncellemek için FTRL kullanmaya çalışıyoruz. Bazı senaryolarda, kararlı efektler iyileştirildi. .

Füzyon modeli. Facebook ve Kaggle uygulamalarına benzer şekilde, GBDT + LR ve GBDT + FM model füzyon şemasını uyguladık. İlk olarak, yüksek seviyeli özellikler oluşturmak için orijinal özellikleri işlemek için XGBoost'u kullanın ve ardından bunları LR ve FM modellerine girin. Şu anda, GBDT + LR füzyon modeli tıklama oranı tahmin modelimizdeki en iyisidir ve dönüşüm oranı tahmin modeli en etkili olanıdır En iyisi GBDT + FM füzyon modelidir. Ek olarak, birden çok modelin tahmin sonuçlarını tek bir gösterge altında (tıklama oranı gibi) birleştirmeye çalışacağız (ekleme veya çarpma gibi) Ayrıca birden çok göstergeyi (tıklama oranı, dönüşüm oranı ve bekleme süresi) birleştireceğiz. ) Etkiyi gözlemlemek için füzyon modeli (çarpma gibi).

Derin model. Derin öğrenme, büyük şirketler tarafından yavaş yavaş öneri sistemlerine uygulanıyor ve biz de deney yapıyoruz. Şu anda, tavsiye sıralamamıza FNN (Faktorisasyon makinesi destekli sinir ağı) modelini uyguladık.Tek makine öğrenme modeli ile karşılaştırıldığında, FNN daha istikrarlı bir etki geliştirmesine sahiptir, ancak etki füzyon modelinden biraz daha kötüdür. Model ayarlama ve WideDeep gibi diğer derin modelleri tanıtmaya çalışma.

Yukarıda bahsedilen temel makine öğrenimi araçlarına dayanarak, şu anda esas olarak tıklama oranını, dönüşüm oranını ve konaklama süresi tahmin modellerini yineleyeceğiz. Çevrimiçi ABTest, öneri etkisini iyileştirmek için tek endeksli bir model ve çok endeksli bir füzyon modeli başlatacak.

Mimari

Öneri sistemi için, algoritma stratejilerinin verimli yinelemesini destekleyen bir dizi öneri arka uç sistemi gereklidir. Öneri arka uç sistemini mikro hizmet mimarisine dayalı olarak tasarladık.İyi ölçeklenebilirliğe ve yüksek performansa sahiptir. Sistem mimarisi aşağıdaki şekilde gösterilmiştir. Veri katmanı, mantık katmanı ve erişim katmanı Veri katmanı çeşitli temel verilere erişim sağlar.Mantık katmanı geri çağırma ve sıralama stratejilerini uygular ve farklı stratejilerin ABTestini destekler.Erişim katmanı dış dünyaya genel bir erişim arayüzü sağlar.

Veri katmanı, öneri mantığının gerektirdiği çeşitli veri türlerini sağlar. Bu veriler, WRedis, dosyalar, WTable, vb. Gibi çeşitli cihazlarda depolanır. Okumakta olan tüm verileri, temeldeki depolama ayrıntılarını koruyarak RPC hizmetlerinde kapsıyoruz. Bu, geri alma hizmetini, kaynak okuma hizmetini geri çağırmayı, özellik merkezi ve kullanıcı özellik merkezini içerir:

Arama hizmeti. Geri çağırma için, çeşitli arama koşullarına dayalı verilerin alınmasını destekleyen bir dizi arama motoru oluşturduk. Örneğin, Huilongguan'daki iki odanın listelerini 2 milyon ila 3 milyon arasında bir fiyatla ve Zhongguancun yakınlarındaki en son evleri alabiliriz. kaynak. Hizmet esas olarak şu tür senaryolarda kullanılır: tahmin senaryosunda kullanıcı etiketlerine göre gönderileri almak için öneri senaryosunda, ilgili öneri senaryosunda mevcut gönderi özniteliklerine göre ilgili gönderileri almak ve soğuk başlatma sırasında coğrafi bilgilere dayalı olarak yakındaki gönderileri geri çağırmak için.

Kaynak okuma hizmetini geri çağırın. Popüler veriler, işbirliğine dayalı filtreleme verileri, ilişkilendirme kuralı verileri, matris ayrıştırma sonuçları vb. Dahil olmak üzere çevrimdışı veya gerçek zamanlı hesaplamalar yoluyla elde edilen çeşitli geri çağırma kaynak verilerine erişim sağlar. Hizmet daha esnek olacak şekilde tasarlanmıştır ve keyfi geri çağırma kaynaklarının artmasını destekler.

Yayın özelliği merkezi. Tüm gönderi öznitelik alanlarının okunmasını sağlar. Bu gönderi öznitelikleri, geri çağırma, sıralama ve öneri mantığında kullanılır.Genel olarak, geri çağırma sürecindeki tüm gönderi özniteliklerini okuyacağız ve sonra bunları sıralama ve kural mantığına uygulayacağız. Geri çağırma ile elde edilen aday kümenin boyutu genellikle onlarca ila yüzler arasındadır.Yüksek performanslı toplu okumayı desteklemek için, post özniteliklerini depolamak ve çok iş parçacıklı eşzamanlı okuma, önbelleğe alma ve JVM ayarı gibi birden çok teknolojiyi sağlamak için WRedis kümesini kullanmayı seçiyoruz. Servis performansı. Şu anda, hizmet her gün yüz milyonlarca isteği kabul ediyor, her seferinde ortalama 150 parça veri okuyor ve harcanan zamanın 2 ms içinde olması garanti ediliyor.

Kullanıcı özellik merkezi. UserProfile verileri, kullanıcı çevrimdışı / gerçek zamanlı ilgi etiketleri, demografik öznitelikler vb. İçerir. Bu veriler, geri çağırma kaynağı olarak gönderileri almak için kullanıcı ilgi etiketlerinin kullanılması gibi geri çağırma sürecinde kullanılır ve ayrıca makine öğrenimi olarak kullanıcı etiketlerinin kullanılması gibi sıralama sürecinde de kullanılır. Sıralama modelinin özellikleri.

Mantık katmanı, tavsiye konusu hizmeti, geri çağırma hizmeti, sıralama hizmeti ve ABTest deney merkezi dahil olmak üzere ayrıntılı öneri stratejileri uygular. Bu hizmetler, öneri stratejisinin verimli yinelemesini sağlamak için farklı geliştiriciler tarafından sürdürülür.Örneğin, geri çağırma ve sıralama, farklı algoritma personeli tarafından tamamlanan sık yineleme bağlantılarımızdır. Geri çağırma hizmetlerinin ve sıralama hizmetlerinin ayrılması, birleştirmeyi azaltır ve yinelemeyi iyileştirir etkililik.

Konu servisini tavsiye edin. Öneri talebini alın, önerilen sahne parametrelerini ayrıştırın, kullanıcı bilgilerini almak için kullanıcı özellik merkezini arayın ve ABTest deney merkezinden geri çağırma stratejisi numarası, sıralama algoritması numarası, kural numarası ve ekran numarası gibi karşılık gelen sahnenin ABTest deney parametrelerini almasını isteyin. Daha sonra önerilen sahne parametreleri, ABTest deney parametreleri vb. Aday set listesi elde etmek için geri çağırma servisine gönderilir ve ardından aday setlerin sıralanması için sıralama servisi çağrılır ve son olarak sıralama listesi ilgili kurallarla işlenir ve sonuç listesi paketlenerek geri gönderilir.

Geri çağırma servisi. Sahne parametrelerini alın ve strateji numarası parametrelerini geri çağırın, geri çağırma hizmetlerini çağırın ve çeşitli geri çağırma verilerini okumak için kaynak okuma hizmetlerini geri çağırın ve hiyerarşik füzyon veya modülasyon füzyonu gerçekleştirin. Geri çağırma stratejisinin konfigürasyonunu gerçekleştirdik.Bir geri çağırma sayısı, bir geri çağırma stratejisine karşılık gelir.Stratejide hangi füzyon yönteminin kullanıldığı, her bir füzyon yönteminde hangi geri çağırma kaynaklarının yer aldığı ve farklı geri çağırma kaynaklarının sayısı konfigürasyon yoluyla tamamlandı. Geri çağırma konfigürasyonunu web tabanlı yapıyoruz ve algoritmanın veya ürün personelinin geçerli olması için yalnızca web sayfasında politikayı yapılandırması gerekiyor. Ek olarak, geri çağırma katmanı, düşük kaliteli bilgileri filtreleme, kullanıcı geçmiş tarama kayıtlarını filtreleme, belirli belirli koşulları karşılayan ürünler tarafından belirtilen verileri filtreleme vb. Gibi bazı filtreleme kurallarını da içerir.

Sıralama hizmeti. Sahne parametreleri, kullanıcı bilgileri, aday küme listesi ve sıralama algoritma numarası gibi parametreleri alın ve aday küme listesini sıralamak için makine öğrenimi sıralama modülünü çağırın. Makine öğrenimi çevrimdışı model eğitiminin ve çevrimiçi sıralamanın aynı özellik çıkarma kodunu paylaşmasını sağlamak ve farklı modeller arasında özellik paylaşımını esnek bir şekilde desteklemek için genel bir özellik çıkarma çerçevesi tasarladık. Sıralama hizmetinde bir model başlatmanın maliyeti çok düşüktür. Yalnızca model dosyasını ve özellik yapılandırma dosyasını sağlamanız gerekir. Gelecekte, çevrimiçi süreci basitleştirmek için sıralama yapılandırmasını web tabanlı yapacağız. Şu anda, sıralama hizmetimiz LR, XGBoost, FM, XGBoost + LR, XGBoost + FM ve DNN'ye dayalı düzinelerce sıralama modeli çalıştırmaktadır.

ABTest Deney Merkezi. Öneri sisteminin strateji yinelemesini desteklemek için bir dizi esnek ve evrensel ABTest deney platformu (dahili olarak "güneş saati" olarak adlandırılır) tasarladık. Akış kontrolü, gerçek zamanlı efekt veri istatistikleri ve görselleştirme gibi işlevleri içerir ve kullanıcıların deneyleri yapılandırmasına ve Trafik ve gerçek zamanlı performans verilerini görüntüleyebilir. Bu deneysel platform yalnızca öneri sistemlerinde değil, aynı zamanda ABTest deneyleri gerektiren diğer iş sistemlerinde de kullanılabilir.Çok katmanlı ABTest deneylerini destekler ve iş yinelemelerini tamamlamak için her trafiği tam olarak kullanabilir. Örneğin, öneri sistemimiz ABTest deneyimiz dört katman içerir: geri çağırma, sıralama, kurallar ve görüntüleme.Farklı katmanlar, trafiğin yeniden dağıtımını gerçekleştirir ve farklı katmanlar arasında deneylerin ortogonalliğini sağlar. İstek öneri sistemimize ulaştığında, tavsiye hizmeti, isteğe karşılık gelen geri çağırma numarası, sıralama numarası, kural numarası ve ekran numarası gibi deneysel parametreleri elde etmek için "güneş saati" ni ister ve ardından istek, bu deneysel parametrelerle işaretlenir. Takip önerisi süreci boyunca, her bir katmanda mantığın hangi kısmının gideceğini belirleyin ve son olarak bu deneysel parametreler, son deneysel etki istatistikleri için arka uç ve istemci tarafı gömülü günlüklere kaydedilecektir.

Erişim katmanı, müşteriyle doğrudan etkileşime girer, istemciden talepler alır ve tavsiye edilen sonradan kimliklerin bir listesini almak için öneri konusu hizmetini çağırır ve ardından gönderinin ayrıntılı özniteliklerini sorgular ve görüntülenmesi için istemciye gönderir. Önerilen çoğu senaryoda, erişim katmanı, PHP veya Java tarafından uygulanan http arayüzü olabilecek iş tarafı tarafından korunur; erişim katmanının tarafımızca korunduğu az sayıda senaryo da vardır. İlgili olanı uygulamak için kendi geliştirdiğimiz 58 MVC çerçevesi WF kullanıyoruz. http arayüzü.

Yukarıda bahsedilen mikro hizmet mimarisinin öneri sistemini uygulamak için kendi geliştirdiğimiz 58 RPC çerçevesi SCF'yi ve öneri sisteminin üç boyutlu izlenmesini uygulamak için kendi geliştirdiği 58 izleme sistemi WMonitor'u kullanıyoruz.Teknoloji yığınının tamamı Java'dır. Önerici sistemin kararlılığını ve yüksek kullanılabilirliğini sağlamak için çoklu iş parçacığı, eşzamansız, önbelleğe alma, JVM ayarı, düşürme ve mevcut sınırlama gibi önlemler alıyoruz. Şu anda, öneri sistemimiz her gün ortalama 30 milisaniye süren yüz milyonlarca öneri isteğini işliyor.

veri

Buradaki veriler temel olarak önerilen gömülü nokta verilerine ve önerilen etki verilerine atıfta bulunur: gömülü nokta verileri, öneri sisteminin temel taşıdır, model eğitimi ve etki verileri istatistikleri, gömülü nokta verilerine dayanır ve gömülü nokta verilerinin doğruluğu sağlanmalıdır; etki verileri öneri sistemi içindir Önerilen stratejilerin yinelenmesine rehberlik etmek ve eksiksiz bir etki veri sistemi oluşturmak önemlidir.

Önerilen gömme günlüğü verilerimiz, teşhir günlükleri, tıklama günlükleri, dönüştürme günlükleri ve sayfa kalma süresi günlüklerini içerir. Bu günlük verilerinin, müşteri tarafından gömme noktaları aracılığıyla oluşturulması gerekir. İşte bu işlemlerin anlamının kısa bir açıklaması: müşteri, önerilen sonuçların bir listesini almak için bir öneri arayüzü ister, teşhir olarak adlandırılır; bir kullanıcı, gönderi ayrıntıları sayfasına girmek için öneri listesindeki bir gönderiye tıklar, tıklama olarak adlandırılır; kullanıcı, gönderi ayrıntıları sayfasında bir mikro sohbet gerçekleştirir Arama, yer imi, vb. Gibi işlemlere dönüştürme adı verilir; bir kullanıcının gönderi ayrıntıları sayfasındaki okuma süresine sayfada kalma süresi denir. Buradaki karşılaşma, tıklamalar ve dönüşümler bir hunidir ve işlemlerin sayısı giderek azalmaktadır. Aynı şehirdeki kullanıcıların gönderilere yaptığı ziyaretler; öneri, arama ve operasyon faaliyeti sayfaları gibi senaryolardan gelebileceğinden, tavsiyenin tıklama / dönüştürme / kalma süresini belirlemek için gömülü noktaya tavsiye ile ilgili parametreleri eklememiz gerekir. Gömme parametrelerini, teşhirin benzersiz seri numarasını, önerilen pozisyonun tanımlamasını, geri çağırma numarasını, sıralama numarasını, kural numarasını, ekran numarasını, gönderi kimliği listesini, gönderi kimliğini ve diğer alanları içeren sabit bir format dizgisine tasarlıyoruz. Bu alanlar Makine öğrenimi modeli eğitimi örnek oluşturma ve öneri etkisi istatistiklerinde kullanılacaktır. Gömülü nokta parametreleri esas olarak iki türe ayrılır: liste parametreleri ve tek posta parametreleri: öneri arayüzü, bir gönderi listesi döndürür ve maruz kalma seri numarası, önerilen pozisyon tanımlama, geri çağırma numarası, sıralama numarası, kural numarası ve ekran numarası dahil olmak üzere karşılık gelen bir liste parametresi döndürülür. , Gönderi kimliği listesi ve diğer alanlar; döndürülen gönderi listesinde, her gönderi, karşılık olarak, karşılaşma seri numarası, önerilen konum kimliği, geri çağırma numarası, sıralama numarası, kural numarası, ekran numarası, posta kimliği ve diğer alanlar dahil olmak üzere tek bir gönderi parametresi döndürür. Müşteri öneri arayüzü tarafından döndürülen gömme noktası parametrelerini aldıktan sonra, liste parametrelerini teşhir günlüğüne gömer ve tek kayıt parametrelerini tıklama günlüğüne, dönüştürme günlüğüne ve kalma süresi günlüğüne gömer. Noktaları buraya gömerken önerilen liste sayfası gerektiğini unutmayın. Tek gönderi parametrelerinin gönderi ayrıntıları sayfasına aktarılması genellikle atlama protokolünün değiştirilmesiyle gerçekleştirilmelidir. Nihai nokta günlüğündeki bu parametrelerle, model eğitimi örnekleri ve huni etkisi verileri oluşturmak için maruz kalmanın benzersiz seri numarasına dayalı olarak teşhir, tıklama, dönüşüm ve süre verilerini birleştirebiliriz. Gömülü nokta parametresi dizesini öneri arka ucu, erişim katmanı ve istemci arasında geçirmek için şeffaf bir aktarım yöntemi benimsediğimizi belirtmekte fayda var.Tüm gömülü nokta parametreleri öneri sisteminin arka ucu tarafından üretilir ve ne erişim katmanı ne de istemci hiçbir şey yapmaz. uğraşmak. Gömme parametrelerinden tarafımızdan önerilen yalnızca bir taraf sorumludur.Bu, birden fazla tarafın gömme parametrelerini değiştirmesini önleyebilir, böylece gömme hataları olasılığını azaltabilir. Şeffaf bir aktarım süreci olduğundan, gömme parametrelerinin ileride genişletilmesi için de uygundur.

Gömülü nokta verileri, öneri sisteminin temel taşıdır. Herhangi bir eksiklik veya hata olmamalıdır. Bu, geliştirme ve test sürecini, özellikle de APP üzerindeki yerleşik noktaları sıkı bir şekilde kontrol etmemizi gerektirir. Yayınlandıktan sonra hatalar bulunursa, bir sonraki sürüme kadar beklememiz gerekir. çözmek. Müşteri geliştirme ve test meslektaşları, gömülü parametrelerin anlamını bilmiyorlar, ancak test ortamının dağıtımında uzmanlar ve Android ve IOS test makinelerine sahipler. Arka uç çalışanların gömülü parametrelerin anlamını bilmeleri, ancak test ortamına nispeten aşina olmaları ve test makinelerinden yoksun olmaları önerilir, bu nedenle sonuca varıyoruz Ortam dağıtımından sorumlu olan test çalışma arkadaşlarının ve gömülü nokta parametrelerini kontrol etmeleri için arka uç çalışanlarının önerilmesinin test süreci aşağıdaki şekilde gösterilmektedir. Ayrıca 58 aynı şehirde APP geliştirme daha karmaşıktır.Farklı ürün grupları kendi APP iş modüllerini geliştirir.AP platform tarafı ana modülü geliştirir.Her bir entegrasyon aşaması olduğunda, tüm iş tarafları tarafından sunulan kod birleştirilerek nihai APP paketinin entegrasyon aşamasında, işletme tarafının yerleştirme noktasının etkili olmaması çok muhtemeldir. Bu nedenle gömme testimiz, gömme işleminin kusursuz olmasını sağlamak için işletme tarafının dahili testi ve entegrasyon testi olmak üzere iki aşama içerir.

Öneri performans verilerimiz çok boyutlu bir veri kümesidir ve esas olarak tıklamalar, dönüşümler ve öneri konumunda kalma süresi gibi göstergelere odaklanırız. Günlük çalışmalarımızda, bu gösterge verilerini farklı iş kolları, farklı müşteriler, farklı öneri pozisyonları ve farklı öneri algoritmaları gibi birden çok boyuttan analiz etmemiz gerekiyor.Örneğin, aynı öneri pozisyonundaki gayrimenkul ve otomobilin veri karşılaştırmasını gözlemleyip beğendiğinizi tahmin edeceğiz Sahnedeki farklı geri çağırma veya sıralama algoritmalarının veri karşılaştırması, Android ve IPhone'da ikinci el ev ayrıntıları sayfasının veri karşılaştırması vb. Çeşitli veri analizleri ve karşılaştırmalar, öneri stratejisini optimize etmemize ve hatta bazı iş kollarının işlevsel mantığındaki gizli HATALARI bulmamıza yardımcı olabilir.Örneğin, öneri projemizin zorlu aşamasında, Android ve iPhone'daki ikinci el konut ayrıntıları sayfalarının öneri etkilerini analiz ediyor ve karşılaştırıyoruz. , IPhone'da ayrıntılı sayfa taramasının geri alınmasında bir hata buldum ve sonunda onu iş tarafına geri besledim ve sorunu çözdüm. Bu hatanın çözümü, ikinci el konut detay sayfası öneri konumuna önerdiğimiz tıklamaları yüzbinlerce artırdı.

Hem çevrimdışı hem de gerçek zamanlı yönlerden tavsiye etkisi verileri oluşturuyoruz. Veri istatistikleri süreci aşağıdaki şekilde gösterilmektedir:

İlk günlerde, çevrimdışı efekt veri istatistikleri MapReduce + Hive + MySQL aracılığıyla gerçekleştiriliyordu.Önce, Hive tabloları oluşturmak için orijinal gömülü nokta günlüklerini çıkarmak için bir MapReduce programı yazacağız ve ardından çeşitli gösterge verilerini saymak için çok sayıda Hive SQL yazacağız ve Sonuç verileri MySQL veri tablosuna yazılır ve son olarak görselleştirilmiş ekran ve posta raporu. Karşılaştırdığımız birçok boyut ve gösterge nedeniyle, Hive SQL deyimlerinin yazılması insan gücümüzün büyük kısmını tüketir. Veri platformu departmanında Kylin çok boyutlu analiz sistemini devreye aldıktan sonra, etki veri istatistikleri çalışmasını Kylin'e taşıdık. Sadece Hive kaynak veri tablosunu tasarlamamız ve boyutları ve ölçüleri ayarlamamız gerekiyor. Kylin, boyutlara ve ölçülere göre otomatik olarak tahmin yapabilir. Sonuç verilerini hesaplayın, bu da bizi Hive SQL yazma işinden kurtarır ve verimliliği büyük ölçüde artırır. Çok boyutlu bir veri kümesi oluşturmak için Kylin'in nasıl kullanılacağı hakkında bilgi için "Kylin Tabanlı Bir Öneri Sistemi Etkinliği Değerlendirme Sistemi" makalesine başvurabilirsiniz.

Gerçek zamanlı etki verilerini hesaplamak için Storm + HBase kullanıyoruz. Gerçek zamanlı etki verileri temel olarak anormal gömülü nokta izleme, yeni çevrimiçi öneri algoritmalarının etkisinin hızlı geri bildirimi ve model anormallik izleme için kullanılır. Daha az boyuta sahip çok boyutlu bir veri istatistiği uyguladık. Gelecekte, biz Önerilen gerçek zamanlı etki verilerinin oluşturulmasını iyileştirmek için Druid ve diğer gerçek zamanlı çok boyutlu analiz sistemlerini tanıtmaya çalışacaktır.

sonuç olarak

Bu makale algoritma, mühendislik ve veri açısından 58.com akıllı öneri sisteminin teknolojik gelişimini tanıtmaktadır. Geçtiğimiz yıl, tavsiye işimizin yinelemeli hızını hızlandırdık.Emlak, araba ve diğer iş kollarını APP, PC ve M'nin üç terminalindeki yaklaşık yüz öneri pozisyonuna bağladık. Önerimiz tıklama yüzdesi endeksimiz (öneri pozisyonunda oluşturulmuştur) Toplam tıklamalardaki tıklama yüzdesi) bir yıl öncesine göre 2 ~ 3 kat artarak% 20 ~% 30'a ulaştı. Her gün on milyonlarca önerilen tıklama oluşturabilir ve bu da iş koluna trafik artışı getirir .

Herhangi bir öneri sisteminin geliştirilmesi, iki aşamalı öneri bit genişletme ve öneri algoritması derinlemesine optimizasyondan geçmelidir. Trafik dizini, öneri bitini genişleterek hızla iyileştirilebilir. Öneri biti kararlı olduktan sonra, dizini iyileştirmeye devam etmek için daha derinlemesine algoritma optimizasyonuna güvenmesi gerekir. Şu anda, etki nispeten yavaş olacaktır. Şu anda, trafik göstergelerimiz nispeten istikrarlı ve kullanıcıların bir mikro sohbette veya posterle telefon iletişiminde bir gönderi girme olasılığını artırmak için dönüşüm göstergelerine daha fazla odaklanacağız ve böylece kullanıcıların gerçekten yararlı bilgiler bulmasına yardımcı olacağız.

Beklenmedik bir şekilde mi? Bu ilginç şeyler hafıza fiyatı artışı sırasında oldu!
önceki
Çin'in kentsel rekabet edebilirlik raporu yayınlandı, Ningbo'nun rekabet gücü ülkedeki ilk ona ilk kez girdi
Sonraki
Küçük ekran müjdesi! iPhone SE, yalnızca 1687 yuan'dan başlayan fiyatlarla yeniden raflarda
Makine öğreniminin on yaygın algoritmasını kolayca anlayın
WeChat 7.0 Android beta sürümü resmi olarak indirilmeye açık: yeni özellikler burada
Orijinal ekibin orijinal deneyimi olan 360 hızlı tarayıcının Mac sürümü yayınlandı
E-ticaret platformu alıcı mı oluyor? Seçilmiş e-ticaret şirketleri yün için fırsatları saklıyor
Telefonunuzla otobüse bindiniz mi? Telefonunuzu kaydırın ve tekrar trene binin
2019 Küresel Yapay Zeka Gelişim Trend Raporu
Dikkatli ol! Elektrikli scooterlar, tek tekerlekli bisikletler ve kendi kendini dengeleyen araçlar yolda para cezasına çarptırılacak
Görünüşe göre kızarmış tavuk sadece bir yan çizgi! KFC aslında çok sayıda eğlenceli siyah teknoloji ürünü piyasaya sürdü
Lu Ding Ji bir film üçlemesi yapacak, yönetmen bir zamanlar bu işle Berlin Film Festivali'nin ana yarışması için kısa listeye girmişti.
Tencent iOS sürümü TIM 2.0 burada: ücretsiz 10GB bulut diski + süper uzun mesaj dolaşımı
Önümüzdeki yıl Redmi Note 7 Pro olacak, gerçekten 48 milyon piksel + NFC
To Top