Bir sınıfı 24.000 kategoriyle nasıl kodlayabilirim?


10

Şu anda genomik için lojistik regresyon modeli üzerinde çalışıyorum. Ortak değişken olarak dahil etmek istediğim girdi alanlarından biri genes. Bilinen 24.000 civarında gen vardır. Hesaplamalı biyolojide bu değişkenlik düzeyine sahip birçok özellik vardır ve yüz binlerce örneğe ihtiyaç vardır.

  • Eğer LabelEncoder()bu 24K genleri
  • ve sonra OneHotEncoder()onlar ...

24.000 sütun keras eğitim sürelerimi 2.2 GHz dört çekirdekli i7 CPU için mantıksız hale getirecek mi?

Eğer öyleyse, bununla alabileceğim kodlamaya farklı bir yaklaşım var mı?

Bir şekilde modelimin bir katmanını bu özelliğe ayırmaya çalışmalı mıyım?

Bu 24K giriş düğümlerine ihtiyacım olduğu anlamına mı geliyor?


Neden VAE kullanarak temsili öğrenmiyorsunuz? Ben temsil basit bir PCA ile karşılaştırıldığında (NLP yapılır gibi) öğrenme gen dizisinde çok anlamlı olacağını düşünüyorum ...
n1tk

Yanıtlar:


10

Evet, 24k özelliklerde tek etkin kodlamanın kullanılması 24k giriş düğümlerini gerektirir. Ancak bu Keras (veya başka bir derin öğrenme kütüphanesi) için bir sorun olmamalıdır. Doğal dil işleme, aynı ballparkta kelime büyüklüğüne sahip kelimeler üzerinde genellikle sıcak kodlama kullanır.

"Derin" bir model kullanıyorsanız, gizli katmanlarınızdan birinin verilerinizin boyutsallığını azaltmaya özen göstermesi gerekir. Genellikle ayrı bir ön işleme aşamasına gerek yoktur.

Eğitim süresi makul olmamalıdır.


Sağlık kontrolü için teşekkür ederim.
HashRocketSyntax

Sklearn'de PCA'dan değil, bir katmandan bahsettiğinizi fark ettim. Otomatik kodlayıcıları boyutsal azaltma biçimi olarak tavsiye eder misiniz?
HashRocketSyntax

2
Keras kullandığınızdan bahsettiniz, bu yüzden bir çeşit sinir ağı kullanıyorsunuz değil mi? Ağınızda bir yerde, girişinizden daha az sayıda düğüme sahip bir katmanınız varsa, ağ otomatik olarak boyutsal küçültme gerçekleştiriyor. Sadece bir (veya az sayıda) regresyon çıkışınız olduğunu varsayıyorum. Bu nedenle basit bir yol, giriş katmanına (d = 24k), bir veya daha fazla ara katmana (d = 1k veya bunun gibi bir şey) ve çıktı katmanınıza (d = 1) sahip olmaktır.
C. Yduqoli

Benzer boyut katmanları NLP'de yaygın olmakla birlikte, modern NLP modellerini CPU'da eğitmek genellikle mantıksızdır, güçlü GPU'lar küçük 'oyuncak' modellerin ötesinde herhangi bir şey için NLP'de gerçekten masa kazıklarıdır. Öte yandan, hem fiziksel hem de bulut GPU'ları oldukça kolay olduğundan, büyük bir engel değil.
Peteris

6

Kategorik Değişkenler için Varlık Gömme ( orijinal çağrı cihazı ) burada çok uygun bir yaklaşım olacaktır. Burada veya burada okuyun . Aslında oradan buraya kod parçaları koydum ve tam bir çalışan uygulama yaptım, bakın git repo'ya bakın. Bu, sinir ağlarını kullanarak çok yüksek kardinal kategorik değişkenleri kolayca işler. OHE'nin artılarını ve eksilerini listelemeyeceğim, sadece Google'ı, ancak ana dezavantajlarından birini esp. çok yüksek bir kardinal kategorik değişkene sahip olduğunuzda, özellik alanınızı gereksiz yere önemli ölçüde arttırıyor, bence ideal değil. Ve daha da önemlisi OHE, bence, böyle bir ilişki varsa kategoriler arasındaki anlamsal ilişkiyi açıklamaz! Ancak, Varlık Gömme NLP'de Sözcük Gömme için bir kavramdır, kategorileri kodlamak için öğrenilen ağırlıklar potansiyel olarak kategori içi ilişkileri yakalayabilir.


3

Genel olarak, bu gen sayısı çok daha küçük anlamlı özelliklere indirgenmelidir. Daha sonra, azaltılmış özellik seti modelde kullanılabilir. Örneğin, Temel Bileşen Analizi (PCA) en yaygın indirgeme tekniklerinden biridir ve gen ekspresyon verileri için kullanılmıştır .

" Biyoloji ve tıpta verileri entegre etmek için makine öğrenimi: İlkeler, uygulamalar ve fırsatlar" Zitnika ve ark. genler için çeşitli özellik mühendislik tekniklerini kapsar.


Teşekkür ederim mantıklı. Özellik alanını ilgili gen sayısına (ve wgs'deki düzenleyici bölgelere) azaltın.
HashRocketSyntax

Ne tür bir boyutsal azaltma önereceğinizi sormak çok fazla soru mu ?: PCA, manifold, kümeleme / yoğunluk, bir çeşit sinir ağı?
HashRocketSyntax
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.