Makine öğrenimi modellerini birleştirme


20

Ben veri madenciliği / makine öğrenimi / vb. ve tahminleri iyileştirmek için aynı modelin birden fazla modelini ve çalışmasını birleştirmenin birkaç yolunu okuyor.

Birkaç makaleyi okuduğum izlenimim (teori ve yunan harfleri üzerinde genellikle ilginç ve harika, ancak kod ve gerçek örnekler üzerinde kısa) şu şekilde olması gerekiyor:

Bir model ( knn, RFvb.) Alıyorum ve 0 ile 1 arasında sınıflandırıcılar listesi alıyorum. Sorum şu sınıflandırıcı listelerinin her birini nasıl birleştireceğim? Eğitim setimde aynı modelleri çalıştırıyor muyum, böylece son modele giren sütunların sayısı aynı mı yoksa başka bir hile mi var?

Herhangi bir öneri / örnek R kodu içeriyorsa harika olurdu.

NOT: Bu, eğitim setinde 100k satır ve test setinde 70k ve 10 sütunluk bir veri kümesi içindir.

Yanıtlar:


21

Aslında "3B" tekniklerinden birine dayanır: torbalama, artırma veya karıştırma.

Torbalamada, farklı nesne alt kümeleri üzerinde çok sayıda sınıflandırıcı eğitiyorsunuz ve cevapları ortalama olarak regresyon ve sınıflandırma için oylama için birleştiriyorsunuz (daha karmaşık durumlar için başka seçenekler de var, ancak atlayacağım). Oy sınıflandırmaları / varyansları, hata sınıflandırması olarak yorumlanabilir, çünkü bireysel sınıflandırıcılar genellikle bağımsız kabul edilir. RF aslında bir torbalama topluluğudur.

Arttırmak daha geniş bir yöntem ailesidir, ancak asıl mesele, birincisinin kalıntıları üzerinde bir sonraki sınıflandırıcı inşa etmenizdir, bu şekilde (teoride) giderek daha ince etkileşimleri vurgulayarak doğruluğu aşamalı olarak artırır. Bu nedenle tahminler genellikle bunları toplayarak birleştirilir, x'deki bir fonksiyonun değerini x için Taylor serisinin elemanlarının değerlerini toplayarak hesaplamak gibi.
En popüler sürümler (Stokastik) Gradient Boosting (güzel matematiksel temeli ile) ve AdaBoost (iyi bilinen, aslında GB'nin özel bir vakası). Bütüncül bir perspektiften bakıldığında, karar ağacı önemsiz pivot sınıflandırıcılarının artmasıdır.

Harmanlama, sınıflandırıcıları yerleştirme fikridir, yani bir sınıflandırıcıyı diğer sınıflandırıcıların tahminlerinden oluşan bir bilgi sistemi üzerinde çalıştırmaktır. Bu nedenle, çok değişken bir yöntemdir ve kesinlikle tanımlanmış bir algoritma değildir; çok sayıda nesne gerektirebilir (çoğu durumda "blender" sınıflandırıcısı, utanç verici fazlalığı önlemek için kısmi sınıflandırıcıları oluşturmak için kullanılmayan bir dizi nesne üzerinde eğitilmelidir).
Kısmi sınıflandırıcıların tahminleri, blender tarafından tahmin edilen bir bilgi sistemine dönüştürülerek açık bir şekilde birleştirilir.


7

"Modelleri birleştirmek" ifadesi belirsizdir, ama tahminim topluluk öğrenme yöntemleri hakkında soru sormaktır. Onlar hakkında bilgi edinmek için en iyi referans belki de Rich Caruana'nın kağıtlarıdır:

http://www.cs.cornell.edu/~caruana/ctp/ct.papers/caruana.icml04.icdm06long.pdf

Bu makalede gerçek bir kod yoktur, ancak algoritma açıkça tanımlanmıştır, bu yüzden tercih ettiğiniz herhangi bir dilde kodlamada herhangi bir sorun yaşamamanız gerekir.


2

Yukarıdaki cevapların yardımıyla biraz etrafa baktıktan sonra, sorunumun ne olduğunu anladım. Diğer modellerin tahminlerini, onları tahmin etmek için kullanılanla aynı modelde kullanmaya çalışıyordum. Başka bir deyişle, kNNmodeli çalıştırdığımda 5 değişkenim olsaydı, kNNmodel tahminleriyle yeni bir değişken eklerdim ve rastgele Orman modelini çalıştırdığımda 6 değişkenli bir model yaparım. Bunun yerine modellerden elde edilen sonuçların bölümlere ayrılması ve ayrı bir model olarak çalıştırılması gerektiğini buldum. Çeşitli modeller (gelen tahminleri oluşturmak istiyorum Yani knn, RF, svdvs.) daha sonra tahmin ne kadar sadece değişkenler olarak tahminler ve sınıflandırmaları kullanarak ayrı birleştirerek / harmanlama / istifleme modeli çalıştırın.

Sanırım bazı problemlerim, tahminleri diğer değişkenlerle birleştirirken, fazla uyuşma veya çoklu doğrusallık olabilirdi ama emin değilim. Başka biri yanlış yaptığım şeyde daha iyi tartım yapabilir. Her neyse herkese yardımları için teşekkürler.

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.