Kategorik özellikleri makine öğrenimi için sayılara kodlama


14

Yapay sinir ağları gibi birçok makine öğrenimi algoritması sayıları ele almayı beklemektedir. Yani, kategorik verileriniz olduğunda, dönüştürmeniz gerekir. Kategorik olarak, örneğin:

Araba markaları: Audi, BMW, Chevrolet ... Kullanıcı kimlikleri: 1, 25, 26, 28 ...

Kullanıcı kimlikleri sayı olsa da, bunlar yalnızca etiketlerdir ve yaş veya para toplamı gibi süreklilik açısından herhangi bir anlam ifade etmez.

Yani, temel yaklaşım kategorileri kodlamak için ikili vektörler kullanıyor gibi görünüyor:

Audi: 1, 0, 0 ... BMW: 0, 1, 0 ... Chevrolet: 0, 0, 1 ...

Birkaç kategori olduğunda sorun yok, ancak bunun ötesinde biraz verimsiz görünüyor. Örneğin, kodlanacak 10.000 kullanıcı kimliğiniz varsa, bu 10 000 özelliktir.

Soru, daha iyi bir yol var mı? Belki bir olasılıkla ilgili?


3
Tahmin modeline neden bir kullanıcı kimliği eklemek istersiniz? Açıkladığınız gibi kukla değişken kodlaması kullandığınızda, kardinalitesi daha büyük olan diğer kategorik değişkenlere gelince, seviyeleri daraltmak için bunları tek belirleyici olarak önce bir karar ağacı üzerinden çalıştırıyorum. Ayrıca "nadir" seviyeleri vb.
Gruplayarak

Bu, belirli bir bireye özgü efektlerle ilgilendiğiniz istatistiksel bir modelde ilginç - rastgele efektler gibi görünüyor. Yararlı olacağı durumları hayal edebilirim, örneğin aynı kişileri tekrar tekrar görürseniz ve o kişinin ne yapacağını tahmin etmek isterseniz. Mümkünse lütfen planlarınız hakkında daha fazla bilgi paylaşın. Ayrıca, makine öğreniminden ziyade çıkarımsal ortamlarda daha geleneksel olarak kullanılmasına rağmen, çok düzeyli modellemeye bakabilirsiniz.
Anne Z.

Bazı akıllı araştırmacıların verilerdeki kullanıcı kimliklerinin kullanıcı hesabı oluşturulduğu sırada verildiğini tespit ettiği bir ML yarışması hakkında okuduğumu hatırlıyorum. Böylece, gizlenmiş olan zaman damgaları ortaya çıkarılmıştır (yanıt tahminini olumlu yönde etkiler). Bu gibi vakaların ve Anne (tavsiye sistemleri) tarafından belirtilenlerin yanı sıra userID'yi dahil etmem.
steffen

Anne - Rastgele bir etki modeli aslında bireylerle ilgilenmiyor - bu yüzden bir popülasyondan örnek olarak kabul ediliyorlar mı?
B_Miner

Öğrenme sorunu, ikili kategoriyi zengin / zengin değil tahmin etmekse, neden belirli bir kullanıcının otomobil markası için bir özelliğe sahip olmak mantıklı gelmiyor anlamıyorum. Bireyin sosyal ağı biliniyorsa, kullanıcı kimlikleri kullanılabilir: örneğin, X kullanıcısı arkadaşlarının varlıklı olmaya daha yatkın olduklarını göstermek. Bu düşünce tarzında yanlış olan bir şey var mı?
Vladtn

Yanıtlar:


6

Kullanıcı kimliklerinizi her zaman bir kelime çantası olarak kullanabilirsiniz: metin sınıflandırıcılarının çoğu, veriler seyrekken yüz binlerce boyutla başa çıkabilir (örneğin, Sıkıştırılmış Seyrek Satırlar kullanıyorsanız, bellekte açıkça saklamanız gerekmeyen birçok sıfır) veri matrisinizin temsili).

Ancak soru şudur: Kullanıcı kimliklerini özellikler olarak değerlendirmek size özel bir sorun yarattı mı? İlişki verilerinizi denormalize etmek ve kimlikleri yerine kullanıcı özelliklerini (yaş, konum, çevrimiçi takma adın chargramları, işlem geçmişi ...) kullanmak daha anlamlı olmaz mıydı?

Ayrıca ham kullanıcı vektörlerinizin kümelenmesini gerçekleştirebilir ve en üstteki en yakın N merkez kimliğini, kullanıcı kimlikleri yerine etkinleştirilmiş özellikler olarak kullanabilirsiniz.


Tamam, bu daha genel bir soru olsa da, çoğunuzun kullanıcı kimlikleri konusuna odaklandığını görüyorum, işte bu yüzden onları kullanmak istiyorum. Kaggle'ın Grockit hakkındaki yarışmalarından birine bakalım: kaggle.com/c/WhatDoYouKnow . Amaç, kullanıcının bir soruyu doğru cevaplayıp yanıtlamayacağını tahmin etmektir. Bence tavsiye sistemlerine benzer bir problem, sadece filmler yerine sorular ve derecelendirmeler yerine doğru / yanlış ve diğer bazı veriler alıyorsunuz. Zaman damgaları mevcuttur :)
Nucular

1
Bu durumda, kullanıcının bağımsız olduğunu varsayabilir ve her kullanıcı için yalnızca kendi geçmişinde eğitilmiş bir sınıflandırıcı oluşturabilirsiniz.
ogrisel

1

Eşkenar kodlama, sınıfları bir sinir ağına kodlamaya çalışırken aradığınız şeydir. Diğer yazılarda atıfta bulunulan "1 / n" kodlamasından daha iyi çalışma eğilimindedir. Referans için önerebilirim: http://www.heatonresearch.com/wiki/Equilateral


Bu, OP'nin istediği giriş değerleri için kategorik kodlama ile değil, çıkış değerlerini kodlama ile ilgili görünmektedir.
Alex
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.