Bu özellik mühendisliği için iyi bir uygulama mı?


10

Özellik mühendisliği hakkında pratik bir sorum var ... lojistik regresyon kullanarak ev fiyatlarını tahmin etmek istiyorum ve posta kodu da dahil olmak üzere bir dizi özellik kullandım. Sonra özellik önemini kontrol ederek, zip'in oldukça iyi bir özellik olduğunu fark ettim, bu yüzden zip tabanlı bazı özellikler eklemeye karar verdim - örneğin, nüfus sayım bürosuna gidiyorum ve ortalama gelir, nüfus, okul sayısı ve sayıları alıyorum Her zipin hastanelerinin. Bu dört yeni özellik sayesinde model performanslarını şimdi daha iyi buluyorum. Bu yüzden zip ile ilgili daha fazla özellik ekliyorum ... Ve bu döngü devam ediyor. Sonunda modele zip ile ilgili bu özellikler hakim olacak, değil mi?

Sorularım:

  1. Bunları ilk etapta yapmak mantıklı mı?
  2. Evetse, bu döngüyü durdurmak için ne zaman uygun olduğunu nasıl bilebilirim?
  3. Değilse, neden olmasın?

Yanıtlar:


6

Yeni veriler eklemeye devam edebilirseniz (alan, örneğin posta kodu gibi bir ana konsepte dayanarak) ve modelinizin performansı iyileşirse, elbette izin verilir ... sadece nihai sonucu önemsediğiniz varsayılarak.

Akaike Bilgi Kriteri (AIC) veya karşılaştırılabilir Bayes Bilgi Kriteri (BIC) gibi bu konuda size yol göstermeye çalışacak metrikler vardır . Bunlar esasen, tanıtılan ve tahmin edilmesi gereken tüm ek parametreler için cezalandırılan, performansına göre bir model seçmeye yardımcı olur. AIC şöyle görünür:

birbenC=2k-2ln(L^)

burada tahmin edilecek parametre sayısıdır, yani uyguladığınız özellik sayısıdır, çünkü her birinin lojistik regresyonunuzda bir katsayısı olacaktır. Maksimum Olabilirliğin maksimum değeridir (optimum puana eşdeğer). BIC modelleri cezalandırmak için biraz farklı kullanır .kL^k

Bu kriterler, daha fazla parametreye sahip modelleri deneyebileceğiniz ve en iyi AIC veya BIC değerine sahip modeli alacağınız için, ne zaman duracağınızı size yardımcı olabilir.

Modelde hala ZIP ile ilgili olmayan başka özellikler varsa, potansiyel olarak bunalmış olabilirler - bu kullandığınız modele bağlıdır. Bununla birlikte, bir evin taban alanı (ZIP kodundan nispeten bağımsız olduğu varsayılarak) gibi ZIP bilgilerinde yer alamayan veri kümesi hakkındaki şeyleri de açıklayabilirler.

Bu durumda, bunları bir dizi özellik veri setindeki varyansın bir boyutunu açıklarken, diğer özellikler başka bir boyutu açıklarken Temel Bileşen Analizi gibi bir şeyle karşılaştırabilirsiniz. Dolayısıyla, ZIP ile ilgili kaç özelliğiniz olursa olsun, taban alanının önemini asla açıklayamazsınız.


7

1) Evet, mantıklı. Özellikleri manuel olarak oluşturmaya çalışmak, öğrencilerin (yani modeller) ham verilerden daha fazla bilgi elde etmelerine yardımcı olacaktır, çünkü ham veriler her zaman öğrenmeye uygun bir biçimde değildir, ancak her zaman ondan özellikler oluşturabilirsiniz. Eklediğiniz özellik bir özelliğe dayanmaktadır. Bu yaygındır. Bununla birlikte, öğreniciniz, lojistik regresyon, çok eşbiçimliğe duyarlıdır. Hangi özelliğe ve kaç özelliğin ekleneceğine dikkat etmelisiniz. Aksi takdirde, modeliniz fazla uygun olabilir.

2) Lojistik regresyon kullandığınız için, yanıtın dağılımının gerçekten farklı olup olmadığına karar vermek için, yeni bir yapı eklemeden önce her zaman AIC'yi kullanabilir veya ki-kare testi (uyum iyiliğini test etme) gibi istatistiksel bir anlamlılık testi yapabilirsiniz. bu yapı ile ve bu yapı olmadan. Bu özellikle verileriniz az olduğunda kullanışlıdır. Başka bir yol da modelinize ceza süresi eklemektir. Örneğin, lojistik kement regresyonu.

3) Yeni özellikler eklemeye devam etmek her zaman iyi bir fikir değildir. Yüksek boyutluluğun laneti konusunda dikkatli olun. Yeni özellik eklerken verilerinize aslında yeni bir boyut ekliyorsunuz. Saf olarak, daha fazla özellik toplamanın asla acıtmayacağı düşünülebilir, çünkü en kötüsü sınıf hakkında yeni bilgi vermezler. Ancak aslında faydaları boyutsallığın lanetinden daha ağır basabilir. Umarım makine öğrenimi oturumu6 hakkında bilmek faydalı şeyler yardımcı olabilir.


@ User3768495 modelin performansını örn. Çapraz doğrulama kullanarak değerlendiriyor mu? Eğer öyleyse, çoklu-eşzamanlılık bir problem olmamalı ve validasyon performansındaki düşüş sayesinde aşırı uyuma dair bir gösterge alacağından, fazla takma konusunda endişelenmemelidir.
rinspy

@rinspy overfit'in birçok yüzü vardır. Bir doğrulama kümesinin dahil edilmesi, fazla takmanın önlenmesine yardımcı olabilir, ancak sorunu çözemez. Örneğin, eğitim verileri (eğitim setine ve doğrulama setine bölünmüş olan) ile gerçek nüfus arasındaki tutarsız dağılım. Model bile eğitim verilerinde iyi performans gösterse de, gerçek dünyadaki duruma genelleştirilemez. Cevabımın referansı da aşırı uydurma hakkında konuştu.
Fansly

Doğru, ancak çoklu doğrusallıktan kaçınmak, değişken değişimlerden kaynaklanan 'aşırı sığdırmaya' yardımcı olmaz. Ben sadece, öngörücü (tanımlayıcı değil) bir model oluşturmakla ilgileniyorsa, çoklu-doğrusallığın muhtemelen bir sorun olmadığını söylüyorum.
rinspy

Aşırı sığdırma ile ilgili kavramım, bir modelin eğitim verileriyle değil, yeni bir veri kümesine genelleştirilememesi ile ilgilidir. Bakınız bu
Fansly

4

Genellikle, özellikler ne kadar zengin olursa o kadar iyidir.

Bununla birlikte, akılda tutulması gereken bir şey, regresyonlar genel olarak yüksek derecede korelasyonlu verilerle (çoklu doğrusallık) iyi sonuç vermez. Özelliklerinizi bu şekilde genişlettiğinizde, aklınızda bulundurmak isteyebileceğiniz bir şeydir.

Bu konu hakkında (ve hafifletmek için potansiyel yollar) birçok bilgi var, sadece google regresyonu ve çoklu doğrusallık.

Kısacası,

  1. Evet. Kesinlikle.
  2. @ n1k31t4'ün bazı iyi önerileri var. Modelinizi geliştireceğini düşündüğünüz özellikleri oluşturmaktan çekinmeyin, o zaman kendinizi önemli olanla sınırlandırmak için PCA ve diğer özellik seçim teknikleri gibi teknikleri kullanabilirsiniz.
  3. Dikkate alınması gereken diğer bir şey, çabaya ve sonuca göre ne kadar pratik olduğudur.

0

Özellikler modelinizin bilgileridir. Bilgi ne kadar fazla olursa, performans ve tahmin o kadar iyi olur. Ne kadar azsa, değerleri tahmin etmek o kadar zordur. Yani kısa burun evet. Her zaman mümkün olduğunca çok özelliğe sahip olmaya değer. Bununla birlikte, her zaman bir sınırlama vardır, çünkü aşırı bilgi yükü işlemcinizi yakabilir, bu nedenle kaç özelliğin tasarlandığına dikkat edin. Ayrıca, gereksiz özellikler sadece tükenmişliğe katkıda bulunur, bu nedenle belirli özellikleri temizlemek her zaman iyi bir uygulamadır. Tüm veri önişleme aşaması bununla ilgilidir.

İlk cevabın bazı iyi detayları var. Bir döngüyü durdurmak söz konusu olduğunda, modelinizin daha iyi performans göstermesinin nerede durduğunu kontrol etmek için bilmeniz gereken birkaç önlem ve faktör vardır ve bunlar RMSE gibi önlemlerdir. Basit bir örnek, xgboostverilerinizde regresyon kullanmak ve döngü sayısını belirtmektir. Modeli çalıştırın ve her döngü için RMSE alacaksınız. Bir sınıra indirilecek ve bundan sonra modelin belirli bir döngüden sonra plato yaptığını belirleyebileceksiniz. Model ayarlama ve optimizasyon bu şekilde çalışır.

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.