Kategorik değişkenleri birçok seviyede çökertmenin ilkeli yolu?


58

İstatistiki bir modelde bir girdi (öngörücü) olarak kullanmak amacıyla birçok kategoriyi bir kaçına çökertmek (veya birleştirmek) için hangi teknikler mevcuttur?


Üniversite öğrencisi büyük (bir lisans öğrencisi tarafından seçilen disiplin) gibi bir değişken düşünün . Sırasız ve kategoriktir, ancak potansiyel olarak onlarca farklı seviyeye sahip olabilir. Diyelim ki regresyon modelinde majör belirleyici olarak kullanmak istiyorum.

Bu seviyeleri modelleme için olduğu gibi kullanmak, her türlü soruna yol açar çünkü çok fazla var. Bunları kullanmak için çok fazla istatistiksel hassasiyet atılır ve sonuçların yorumlanması zordur. Belirli ana dallarla nadiren ilgileniyoruz - ana dalların geniş kategorileriyle (altgruplarla) ilgilenme ihtimalimiz çok daha fazla. Ancak, seviyelerin nasıl bu kadar üst düzey kategorilere, hatta kaç tane üst seviye kategoriye ayrılacağı her zaman net değildir.

Tipik veriler için, faktör analizi, matris faktoringi veya ayrık bir latent modelleme tekniği kullanmaktan mutlu olurum. Ancak ana dallar birbirinden ayrı kategorilerdir, bu yüzden kovaryanslarını her şey için kullanmakta tereddüt ediyorum.

Dahası, ana kategorileri kendi başlarına umursamıyorum. Regresyon sonucumla uyumlu , daha üst düzey kategoriler üretmeyi önemsiyorum . İkili sonuç durumunda, bu bana ayrımcı performansı en üst seviyeye çıkarmak için daha üst düzey kategoriler oluşturmak için doğrusal ayrımcı analizi (LDA) gibi bir şey önerir. Ancak LDA sınırlı bir tekniktir ve bana taranan kirli veriler gibi geliyor. Dahası, herhangi bir sürekli çözümün yorumlanması zor olacaktır.

Bu arada, çoklu yazışma analizi (MCA) gibi kovaryanslara dayanan bir şey, bu örnekte, birbirini dışlayan kukla değişkenler arasındaki doğal bağımlılık nedeniyle şüpheli görünüyor - birden fazla kategorik değişkenleri çalışmak için daha uygun Aynı değişken

düzenleme : açık olmak gerekirse , bu daraltıcı kategorilerle ilgilidir (onları seçmeden) ve kategoriler prediktörler veya bağımsız değişkenlerdir. Gördüğünüzde, bu problem “hepsini düzenlemek ve Tanrı'nın bunları düzenlemesine izin vermek” için uygun bir zaman gibi görünüyor. Bu soruyu gördüğüme sevindim, birçok insan için ilginç!


2
Stats.stackexchange.com/questions/230636/… adresindeki yorumumda , burada benzer sorulardan oluşan uzun bir liste var! Bir göz atın ... Ayrıca, bu sitede "çok düzey" anahtar kelime ile benzer pek çok soru, iyi cevaplar bulabilirsiniz.
kjetil b halvorsen

3
Bu zamana geldiğimde buna geri döneceğim ... bu arada, aşağıda soruyu cevaplayacak gibi görünen çok alakalı bir makale var: epub.ub.uni-muenchen.de/12164/1/petry_etal_TR102_2011. pdf
kjetil b halvorsen

2
Soruyu aldığımı sanmıyorum, doğal dürtüm aslında hiyerarşileri kodlamak için daha fazla kukla değişkenler eklemek (belki de düşünebildiğiniz kadar farklı hiyerarşiler) ve ardından en üst düzey kategorileri sağlamak için L1 / L2 düzenini kullanmak olacaktır. daha ince seviye kategorileri yerine seçilir. ana dallar vb. ile ilgili sorun, açıkçası benzerlik olmaması (kukla değişken olarak gösterildiğinde) yani iyi bir model elde etmek (genelleştirmeye izin veren) bu benzerliği sağlamanız gerektiğidir
seanv507

1
@ ssdecontrol, evet, prototipik örneğim telefon numaraları (veya diğer kimlikler). Temel olarak bunları kullanarak modelleme sorulduğunda doğru cevap - yapmayın!
seanv507

2
Eğer hiyerarşilere bakmak istiyorsanız, Sinir ağı gömme şemalarına bakabilirsiniz. Temelde, kategoriler ve modelin geri kalanı arasında azaltılmış bir nöron seti kullanırlar, böylece modelin çözülmesinde benzer kategorilerin doğrusal izdüşümlerini bulması gerekir. Esasen faktoring makinelerinin doğrusallaştırılmamış bir versiyonudur. tensorflow.org/guide/embedding
seanv507

Yanıtlar:


41

Doğru anladıysam, yordayıcılardan birinin kategorik olduğu doğrusal bir model hayal edersiniz (örneğin, üniversite okulu); ve seviyelerinin bazı alt gruplarında (kategorilerin alt gruplarında) katsayıların tamamen aynı olmasını bekliyorsunuz. Bu yüzden, belki de Matematik ve Fizik için regresyon katsayıları aynıdır, ancak Kimya ve Biyoloji için olanlardan farklıdır.

A En basit durumda, tek bir kategorik prediktörü olan bir "tek yönlü varyans analizi" lineer model olurdu kategorik değişkenler seviyesini (kodlar kategori). Ancak bazı seviyeleri (kategorileri) birlikte bir çözümü tercih edebilirsiniz, örneğini { α 1 = α 2 , α 3 = α 4 = α 5 .

yij=μ+αi+ϵij,
i
{α1=α2,α3=α4=α5.

Bu, farklı alfalarla çözümleri cezalandıracak bir düzenleme cezası kullanmaya çalışabileceğini göstermektedir. Hemen akla gelen bir ceza terimiBu, benzer ve farklarının , tam olarak istediğiniz şey: çoğunun sıfır olmasını istersiniz. Düzenlileştirme parametresi çapraz doğrulama ile seçilmelidir.α i - α j ω

L=ωi<j|αiαj|.
αiαjω

Böyle modellerle hiç ilgilenmedim ve yukarıdaki aklıma gelen ilk şeydi. Sonra uygulanan böyle bir şey olup olmadığını görmeye karar verdim. Bazı google aramaları yaptım ve yakında bunun kategorilerin birleşmesi olduğunu anladım ; aramak lasso fusion categoricalsize okunacak çok fazla referans verecektir. İşte kısaca baktığım birkaç tane:

Annals of Applied Statistics dergisinde yayınlanan Gertheiss ve Tutz 2010, başka referanslar içeren yeni ve okunabilir bir makale gibi görünüyor. İşte özeti:

Regresyon analizinde daralma yöntemleri, genellikle metrik yordayıcılar için tasarlanmıştır. Bununla birlikte, bu makalede, kategori belirleyicileri için büzülme yöntemleri önerilmiştir. Bir uygulama olarak, örneğin şehir bölgelerinin kategorik bir öngörücü olarak değerlendirildiği Münih kirası standardına ait verileri ele alıyoruz. Bağımsız değişkenler kategorikse, normal küçültme prosedürlerinde bazı değişiklikler yapılması gerekir. Faktör seçimi ve kategorilerin kümelenmesi için iki temelli yöntem sunuldu ve araştırıldı. İlk yaklaşım nominal ölçekler için, ikincisi ise sıralı tahminler için tasarlanmıştır. Bunları Münih kira standardına uygulamanın yanı sıra, simülasyon çalışmalarında yöntemler gösterilmiş ve karşılaştırılmıştır.L1

Düzenleme gücü arttığında iki kategorik değişken seviyesinin nasıl birleştirildiğini gösteren Kement benzeri çözüm yollarını seviyorum:

Gertheiss ve Tutz 2010


1
Ve sadece şunu farkettim ki, @Kjetil zaten bir hafta önce Tutz'ın gazetelerinden birine bir link verdi ...
amip,

1
Bu konuda literatürü araştırdığın için teşekkürler! Bu kesinlikle iyi bir başlangıç ​​noktası, özellikle arayabileceğim bu teknik ("füzyon") adına sahip
shadowtalker 26:16

10

Üzerinde çalıştığım bir proje üzerinde bu güreşen ve gerçekten orada karar verdik bu noktada kategoriler kaynaştırmak için iyi bir yol değildir ve bu yüzden bir çalışıyorum ettik hiyerarşik / karma etkiler modeli nerede benim majörünüzün eşdeğeri rastgele bir etkidir.

Ayrıca, böyle durumlarda, aslında iki tane karar verme kararı veriliyor gibi görünmektedir: 1) modele uyduğunuzda sahip olduğunuz kategorileri nasıl sigortalayacağınız ve 2) hangi sigortalı kategorinin "diğer" halini aldığı; modele uyduktan sonra birinin hayalini kurduğunu söyler. (Rastgele bir efekt bu ikinci durumu otomatik olarak ele alabilir.)

Fırınlama ile ilgili herhangi bir karar varsa (tamamen otomatik prosedürlerin aksine), genellikle herhangi bir ilkeli gruplandırmadan ziyade, içinde birkaç şey olan kategorilerden oluşan bir kepçe olan "diğer" kategorisinden şüpheliyim.

Rastgele bir efekt, birçok seviyeyi idare eder, dinamik olarak havuzlar ("dan ​​güç alır"), farklı seviyeler, önceden görülmeyen seviyeleri, vb. Öngörebilir.


1
Kümelenecek uzaklık matrisiniz olarak bir yakınlık matrisi kullandınız mı? stats.stackexchange.com/questions/270201/… ?
Keith

7

Zz1,...,zKYZImpact(Z)

Impact(zk)=E(Y | Z=zk)E(Y)

YYlogitEE

Category_encoders kütüphanesinde bir Python uygulaması var [2].

R paketi Vtreat [3] [4] 'de "darbe kodlaması" adı verilen bir değişken uygulanmıştır . Paket (ve kendi kendini kodlayan kodun kendisi) 2016'daki yazarlar tarafından yayınlanan bir makalede [5] ve birkaç blog yazısında [6] tanımlanmıştır. Mevcut R uygulamasının çok terimli (2'den fazla kategoriye sahip kategorik) veya çok değişkenli (vektör değerli) yanıtları işlemediğini unutmayın.

  1. Daniele Micci-Barreca (2001). Sınıflandırma ve Tahmin Problemlerinde Yüksek Kardinalite Kategorik Nitelikler İçin Ön İşleme Programı. ACM SIGKDD Keşifler Bülteni , Cilt 3, Sayı 1, Temmuz 2001, Sayfa 27-32. https://doi.org/10.1145/507533.507538
  2. Kategori Kodlayıcılar. http://contrib.scikit-learn.org/categorical-encoding/index.html
  3. John Mount ve Nina Zumel (2017). vtreat: İstatistiksel Olarak Sesli 'data.frame' İşlemci / Saç Kremi. R paket sürümü 0.5.32. https://CRAN.R-project.org/package=vtreat
  4. Kazanmak-Vektör (2017). vtreat. GitHub deposu https://github.com/WinVector/vtreat adresinde
  5. Zumel, Nina ve Dağ, John (2016). vtreat: Öngörülü Modelleme için bir data.frame İşlemcisi. 1611.09477v3, ArXiv e-baskıları yapıyor . Boş https://arxiv.org/abs/1611.09477v3 .
  6. http://www.win-vector.com/blog/tag/vtreat/

Logit E nedir? Lütfen formülü kendiniz paylaşır mısınız?
Optimus Prime

@OptimusPrime logit E, beklentinin
logitidir

Tamam. Dolayısıyla bu durumda, Etki (zk) = log (E (Y | Z = zk) −E (Y)) VEYA (Etki (zk) = log (E (Y | Z = zk))) günlüğü - E (Y) )?
Optimus Prime

2
Bu, denetimli öğrenmedir ve
Frank Harrell

3
Kuşkusuz, kategorik yordayıcı için kategorilerin nasıl işlendiğini yönlendirmek için Y'yi kullanan herhangi bir yöntem aşırı yüklenmeye maruz kalacak ve belirsizlik aralıklarının doğru olması için yeterince geniş olması zor olacaktır. Denetimsiz öğrenmeye odaklanmıştım, böylece bu sorunlar ortaya çıkmıyordu.
Frank Harrell,

6

Kategorik belirleyici için bir bağlantı noktası olarak kullanılması mantıklı olan bağımsız bir bağımsız değişkeniniz varsa, Fisher'ın doğrusal ayırt edici analiziyle ilgili olan optimum puanlama algoritmasını kullanmayı düşünün. Üniversite anaokulunu tek bir sürekli metriğe eşlemek istediğinizi varsayalım ve uygun bir çapanın kabul öncesi SAT nicel test puanı olduğunu varsayalım. Her bir majör için ortalama nicel skoru hesaplayın ve majör yerine bu değeri yazın. Bunu, ana konuyu özetlemek için birden fazla serbestlik derecesi yaratarak kolayca birden fazla çapa kadar uzatabilirsiniz.

Önceki önerilerin bazılarının aksine, optimum puanlamanın denetimsiz bir öğrenme yaklaşımını temsil ettiğini, bu nedenle serbestlik derecelerinin (Y'ye göre tahmin edilen parametre sayısının) az ve iyi tanımlandığını, uygun istatistiksel çıkarımlarla sonuçlandığını (sık sık, doğru standart hatalar varsa, güven içinde olduğunu) unutmayın. (uyumluluk) aralıklar ve p değerleri).

Https://stats.stackexchange.com/users/28666/amoeba @ amoeba tarafından verilen ceza öneri- sini çok beğeniyorum.


Stats.stackexchange.com/q/383887/44368 Soruma bir göz atmak ister misiniz ? Teşekkür ederim.
Hans,

Optimum puanlama bu dersin 15. slaytında açıklanan yöntem midir? Bu terimleri aramak biraz zor, hepsi başka bağlamlarda ortak.
shadowtalker

1
Ben 0.85 eminim
Frank Harrell

Bu , makine öğrenmesinden gelen hedef kodlama fikrinin (daha iyi) bir versiyonuna benziyor , örneğin stats.stackexchange.com/questions/398903/…
kjetil b halvorsen

2

" Sınıflandırma ve tahmin problemlerinde yüksek kardinalite kategorik nitelikler için ön işleme şeması " makalesi , kategorik değişkeni her sınıf / kategorideki iç içe geçmiş bir 'ampirik Bayes' programında, kategorik değişkeni arka sınıf bir olasılıkla eşleştiren her bir deneysel “ampirik Bayes” programında kullanır. doğrudan veya diğer modellere giriş olarak kullanılabilir.


Bu temelde @Wayne'nin önerdiği şey (karışık etki modelleri ~ Bayesian hiyerarşik modellerinin sık görülen versiyonudur) ve soruya yorumda önerdiğim şey. Ancak OP, hiyerarşileri anlamak istiyor.
seanv507

1

Burada birden fazla soru var ve bazıları daha önce soruldu ve cevaplandı. Eğer problem uzun sürüyorsa , hesaplamanın üstesinden gelmek için birden fazla yöntem var, seyrek özellik matrisine ve Maechler ve Bates tarafından yazılan kağıda büyük ölçekli regresyon bakın .

Ancak problem modelleme ile ilgili olabilir, kategorik yordayıcı değişkenleri tedavi etmenin olağan yöntemlerinin gerçekten de çok seviyeli kategorik değişkenler bulunduğunda yeterli rehberlik sağladığından emin değilim, etiket için bu siteye bakın [many-categories]. Birinin deneyebileceği birçok yol var, biri olabilir (eğer bu sizin örneğiniz için iyi bir fikirse, bize özel uygulamanızı söylemediniz) bir çeşit hiyerarşik kategorik değişken (ler), yani ilham biyolojik sınıflandırmada kullanılan sistem tarafından, bkz. https://en.wikipedia.org/wiki/Taxonomy_(biology). Bir birey (bitki veya hayvan) önce Domain, ardından Kingdom, Phylum, Class, Order, Family, Genus ve son olarak Species olarak sınıflandırılır. Yani sınıflandırmadaki her seviye için bir faktör değişkeni oluşturabilirsiniz. Örneğin, bir süpermarkette satılan ürünleriniz varsa, [gıda maddesi, mutfak gereçleri, diğer] ile başlayan hiyerarşik bir sınıflandırma oluşturabilirsiniz, o zaman gıda maddesi [et, balık, sebzeler, hububatlar ...] ve yakında. Sadece sonuçla ilgili olmayan önceki bir hiyerarşi veren bir olasılık.

Ama sen dedin:

Regresyon sonucumla uyumlu, daha üst düzey kategoriler üretmeyi önemsiyorum.

Sonra kaynaşmış kementi deneyebilir , bu başlıktaki hiyerarşik bir önerim tarafından ima edilen seviyelerin önceki bir organizasyonu değil, tamamen verilere dayanarak seviyeleri daha büyük gruplara daraltmanın bir yolu olarak görülebilecek diğer cevapları görebilirsiniz. seviyelerin organizasyonu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.