Özellik mühendisliğinin faydası: Neden mevcut özelliklere dayanarak yeni özellikler yarattınız?


30

İnsanların bir makine öğrenmesi problemindeki mevcut özelliklere dayanarak yeni özellikler yarattığını sık sık görüyorum. Örneğin, burada: https://triangleinequality.wordpress.com/2013/09/08/basic-feature-engineering-with-the-titanic-data/ insanlar bir kişinin ailesinin boyutunu yeni bir özellik olarak kabul etmişlerdir. Mevcut özellikleri olan kardeşlerin, kız kardeşlerin ve ebeveynlerin sayısı.

Ama bunun anlamı ne? İlişkili yeni özelliklerin yaratılmasının neden faydalı olduğunu anlamıyorum. Bunu kendi başına yapmak algoritmanın işi değil mi?


Yanıtlar:


30

Bunu göstermek için kullanılan en basit örnek, XOR problemidir (aşağıdaki resme bakınız). Size tahmin edilen ve koordinatlarını ve ikili sınıfı içeren veriler verildiğini hayal edin . Makine öğrenme algoritmanızın kendi başına doğru karar sınırını bulmasını bekleyebilirsiniz, ancak ek özelliğini oluşturduysanız , size sınıflandırma için neredeyse mükemmel bir karar kriteri verir ve basit aritmetik kullandığınızda sorun önemsiz hale gelir !xyz=xyz>0

XOR sorunu

Bu nedenle, birçok durumda algoritmadan çözümü bulmayı beklerken alternatif olarak, özellik mühendisliği ile sorunu basitleştirebilirsiniz . Basit problemleri çözmek daha kolay ve daha hızlıdır ve daha az karmaşık algoritmalara ihtiyaç duyar. Basit algoritmalar genellikle daha sağlamdır, sonuçlar genellikle daha fazla yorumlanabilir, daha ölçeklenebilir (daha az hesaplama kaynağı, eğitim zamanı vb.) Ve taşınabilir. Londra'daki PyData konferansında verilen Vincent D. Warmerdam'ın harika konuşmasında daha fazla örnek ve açıklama bulabilirsiniz .

Dahası, makine öğrenim pazarlamacılarının size söylediği her şeye inanmayın. Çoğu durumda, algoritmalar "kendi kendine öğrenmez". Genellikle sınırlı bir zamana, kaynağa, hesaplama gücüne sahip olursunuz ve veriler genellikle sınırlı boyuttadır ve gürültülüdür.

Bunu uç noktalara alarak, verilerinizi deney sonucunun el yazısı notlarının fotoğrafları olarak sunabilir ve bunları karmaşık sinir ağına aktarabilirsiniz. Önce resimlerdeki verileri tanımayı, sonra onu anlamayı ve öngörülerde bulunmayı öğrenirdi. Bunu yapmak için, modeli eğitmek ve ayarlamak için güçlü bir bilgisayara ve çok zamana ihtiyacınız olacak ve karmaşık sinir ağı kullanarak büyük miktarda veriye ihtiyacınız olacak. Verileri bilgisayar tarafından okunabilen bir biçimde (sayı tabloları gibi) sağlamak, tüm karakter tanıma işlemlerine ihtiyaç duymadığınız için sorunu büyük ölçüde basitleştirir. Özellik mühendisliğini, verileri anlamlı yaratacak şekilde dönüştürdüğünüz bir sonraki adım olarak düşünebilirsiniz.özellikleri, böylece algoritması kendi başına anlamak için daha az sahiptir. Bir benzetme yapmak için, yabancı bir dilde bir kitap okumak istemeniz gerekir, böylece ilk önce dili öğrenmek zorunda kaldınız, anladığınız dile çevrilmiş olarak okumak.

Titanik veri örneğinde, algoritmanızın aile üyelerini toplamanın "aile büyüklüğü" özelliğini elde etmek için mantıklı olduğunu bulması gerekir (evet, burada kişiselleştiriyorum). Bu, bir insan için bariz bir özelliktir, ancak verileri sayıların yalnızca bir sütunu olarak görüp görmediğiniz belli değildir. Diğer sütunlarla birlikte ele alındığında hangi sütunların anlamlı olduğunu bilmiyorsanız, algoritma bu tür sütunların olası her bir kombinasyonunu deneyerek çözebilir. Elbette, bunu yapmanın akıllıca yollarına sahibiz, ancak bilgiler algoritmaya hemen verilirse, yine de çok daha kolaydır.


Teşekkürler, çok iyi açıklanmış ve çok ilginç!
Matthieu Veron

Cevabınızı çok iyi buluyorum ama bence biraz daha kalifiye olmak daha iyi. Özellikle, etkileşimli terimler açısından mühendislik özelliğinin, RF'lerin etkileşim terimlerini bir dereceye kadar kendileri tarafından yakaladığı için RF'leri (hala yardım edebilmesine rağmen) algoritmaları için bu kadar kolay hale getirmediğini düşünüyorum. Önemli bir şeyi kaçırıyorsam haberim olsun. Fakat evet, genel olarak özellik mühendisliği işleri oldukça basitleştirir ve yardımcı olur.
Poete Maudit

@PoeteMaudit, karar ağacının (ve böylece RF'nin) büyük bir etkileşimi modellediği doğrudur, ancak bu, her olası etkileşimin değil, belirli bir etkileşimin bir şeklidir. Dahası, özellik mühendisliği sadece etkileşimlerle ilgili değildir.
Tim

Tabii ki puanlarınıza katılıyorum. Birincisi, bu RF'ler belirli bir çeşit etkileşimi modeller (temel olarak x * y? İkincisi, bu özellik mühendisliği kesinlikle sadece etkileşimlerle ilgili değildir.
Poete Maudit

14

Basit, doğrusal bir sınıflandırıcı kullanmayı planlıyorsanız, özellikle alan bilginiz size ortaya çıkan özelliğin anlamlı ve bilgilendirici olacağını gösterdiğinde, mevcut olanların doğrusal olmayan bir işlevi olan yeni özellikler üretmek için mükemmel bir anlam ifade eder. Doğrusal bir sınıflandırıcının, açıkça sağlamadığınız sürece bu karmaşık özellikleri göz önüne alamayacağını unutmayın.

İdeal olarak, yeterince güçlü bir doğrusal olmayan sınıflandırma algoritması kullanıyorsanız, eğer sınıflandırma için bilgilendirici ise, girdi özelliklerinin keyfi doğrusal olmayan dönüşümlerini dikkate alan bir karar sınırı oluşturabilmelidir. Bununla birlikte, pratikte çoğu lineer olmayan sınıflandırıcı sadece bazı dönüşüm türlerine bakar. Örneğin, bir polinom çekirdeği SVM'si, özellikler arasındaki polinom etkileşimlerini göz önüne alır, ancak başka dönüşüm türlerini uygulayarak belki de daha bilgilendirici bir özellik oluşturulabilir ...

Kısacası, eğer alan bilgisi el yapımı doğrusal olmayan bir özellik kombinasyonunun bilgilendirici olabileceğini gösteriyorsa, bunu mevcut özellikler grubuna eklemek mantıklı olacaktır.


Tamam anlıyorum ! Ancak benim yarattığım özelliklerin anlamlı ve bilgilendirici olup olmadığını nasıl bilebilirim? Demek istediğim, problemlerin karşı sezgisel açıklamaları olabilir. Anladığım kadarıyla, özellikler oluşturmak, algoritmayı bir yöne yönlendirmenin, tahminlerinde zaman kazanmanın bir yoludur. Bu yüzden birkaç yönden algoritmayı etkiliyoruz. Doğru şekilde etkilediğimizi nasıl doğrulayabiliriz?
Matthieu Veron

2
Eh, bu alan bilgisinin geldiği alandı. Örneğin, bir tıbbi teşhis sistemi tasarlıyorsanız, doktorlarla konuşabilir ve bir hastayı teşhis etmek için hangi bilgileri kullandıklarını sorabilirsiniz. Örneğin, bir doktor "Eğer hastanın hem ateşi hem de baş ağrısı varsa, o zaman nezle olur". Bu cümle, hem ateşin hem de baş ağrısının varlığını belirten yeni bir bayrak özelliğinin dahil edilmesinin iyi bir fikir olabileceğini gösterebilir (özellikle, tek başına polinom etkileşim özelliklerini "göremeyen" doğrusal bir sınıflandırıcı kullanıyorsanız).
Daniel López

1
Bununla birlikte, bu bir bilimden çok bir sanattır. Sonunda, el yapımı özelliklerin etkinliğini, modellerinizi tarafsız bir deney protokolü ile bir test setinde test ederek doğrulamanız gerekir ...
Daniel López

3

Bazı makine öğrenme modellerinin doğrusal olmayanları ve değişkenler arasındaki etkileşimi idare etme kabiliyetine sahip olduğu doğrudur, ancak duruma bağlı olarak, gerekli olması için üç neden görüyorum.

  1. Y=1

Çember Sınır

x1x2y=x0+c1x1+c2x2y=x0+c1x12+c2x22

  1. Bazı özelliklerin (işletme bilgisi veya deneyimden) önceden olduğunu biliyorsanız, modelin çalışma zamanını hızlandırmak ve modelinizi kolaylaştırmak için bunların oluşturulmasına yardımcı olabilir. Örneğin, Titanic verisi örneğinde ve bir karar ağacı sınıflandırma modeli kullanıyorsanız. Yaşlı kadınların (yaş ve cinsiyet) hayatta kalma ihtimalinin yüksek olduğunu biliyorsanız, bilgiyi yakalayan tek bir özellik oluşturarak, ağacınız iki değişkende iki bölme yapmak yerine yeni değişkende bir bölme yapabilir. Özelliğin önemli olduğunu önceden biliyorsanız, hesaplama süresini hızlandırabilir.

  2. Gerçek dünyada, Kaggle'ın sağladığı gibi tek bir veri kümesi elde edemezsiniz. Bunun yerine, her yerden bilgi alırsınız. Örneğin, Amazon gibi bir çevrimiçi perakende şirketi için müşteri yıpranmasını tahmin etmek istiyorsanız, müşteri demografisi bilgisine sahip olursunuz, işlem bilgisi satın alırsınız. Farklı kaynaklardan bir çok özellik oluşturmanız gerekir, bu durumda, işlem düzeyinde elde edilebilecek / toplanabilecek birçok yararlı özellik bulacaksınız. Andrew Ng'in dediği gibi: Çoğu zaman, özellik mühendisliği yapma yeteneği bir makine öğrenme projesinin başarısını veya başarısızlığını tanımlar.

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.