Gerçek pratikte Makine Öğrenimi hakkında her şey nedir?


11

Bir süredir Makine öğreniminde (aynı zamanda bazı istatistikler) yeni bir bilgim var (denetimli / denetimsiz öğrenme algoritmaları, ilgili optimizasyon yöntemleri, düzenlemeler, bazı felsefeler (önyargı-varyans ödünleşimi gibi?)). Gerçek bir uygulama olmadan, o makine öğrenimi öğelerini derinlemesine anlamayacağımı biliyorum.

Bu yüzden gerçek verilerle bazı sınıflandırma problemi ile başlıyorum, el yazısı rakam sınıflandırması (MNIST) diyorum. Şaşırtıcı bir şekilde, herhangi bir özellik öğrenme / mühendislik olmadan , doğruluk, girdi olarak ham piksel değerlerine sahip rastgele orman sınıflandırıcısını kullanarak 0.97'ye ulaşır. Ayrıca, parametrelerin ayarlandığı SVM, LR gibi diğer öğrenme algoritmalarını da denedim.

Sonra kayboldum, bu çok kolay mı yoksa burada bir şey mi eksik? Sadece araç setinden bir öğrenme algoritması seçin ve bazı parametreleri ayarlayın?

Eğer pratikte makine öğrenimi ile ilgili olsaydı, o zaman bu alana olan ilgimi kaybederdim. Birkaç gün boyunca bazı blogları düşündüm ve okudum ve bazı sonuçlara vardım:

  1. Uygulamada makine öğrenmesinin en önemli kısmı özellik mühendisliğidir , yani veriler verildiğinde özelliklerin daha iyi temsil edilmesini öğrenir .

  2. Hangi öğrenme algoritmasının kullanılacağı da önemlidir, ayrıca parametre ayarı, ancak son seçim daha çok deneyler ile ilgilidir.

Kimsenin beni düzeltebileceğini ve pratikte makine öğrenimi hakkında bana bazı önerilerde bulunabileceğini umarak doğru anladığımdan emin değilim.


1
Sorunuza bütünüyle cevap verebileceğimi sanmıyorum, ancak düşük özellik kalitesine ek olarak algoritmaların / araçların tatmin edici olmadığı birçok problem olduğu konusunda size güvence vermek istiyorum (benim deneyimime göre sosyal bilimler yaygındır) her iki durumda da). Bunun tek endişeniz olduğunu düşünmüyorum, ancak şimdiye kadar projelerinizin kolaylığı sizi rahatsız ediyor gibi görünüyor.

1
@Matthew, evet, sadece gerçek bir sorunla karşılaştığımda nereden başlayacağımı bilmeden kayboldum, yararlı özellikleri ayıklayabilmem veya sadece bir öğrenme algoritması alıp çalıştırabilmem için doğayı bulmak için verileri analiz etmeli miyim?
avokado

100 üzerinden 97 kez doğru uçan bir uçağa
binmezdim

Yanıtlar:


12

Makine öğrenimi (ML) pratikte ML yapmanın amacının ne olduğuna bağlıdır. Bazı durumlarda, sağlam ön işleme ve bir dizi hazır ML yöntemi uygulamak yeterince iyi olabilir. Bununla birlikte, bu durumlarda bile, işler yanlış gittiğinde sorun gidermek için yöntemlerin nasıl çalıştığını anlamak önemlidir. Bununla birlikte, pratikte ML bundan daha fazla olabilir ve MNIST bunun iyi bir örneğidir.

MNIST veri kümesinde 'iyi' performans elde etmek aldatıcı bir şekilde kolaydır. Örneğin, Yann Le Cun'un MNIST performansı hakkındaki web sitesine göre , Öklid mesafesi metriğine (L2) sahip en yakın K (K-NN) de% 3'lük bir hata oranına sahiptir. orman. L2 K-NN, bir ML algoritması kadar basittir. Öte yandan, Yann, Yoshua, Leon ve Patrick'in en iyisi, bu veri kümesinde ilk çekilen LeNet-4,% 0.7 hata oranına sahip,% 0.7% 3'ün dördünden daha az, yani bu sistemi el yazısıyla yazılan rakamları okuma pratiği, saf algoritma hatalarını düzeltmek için dört kat fazla çaba gerektirir.

Yann ve meslektaşlarının kullandığı evrişimsel sinir ağı görevle eşleşir, ancak verileri anlamak ve bu anlayışı öğrenme algoritmasına kodlamak için çaba göstermekten ziyade bu 'özellik mühendisliği' olarak adlandırmayacağım.

Peki, dersler neler:

  1. Hazır performans yöntemi ve iyi önişleme kullanarak saf performans taban çizgisine ulaşmak kolaydır. Bunu her zaman yapmalısınız, böylece taban çizgisinin nerede olduğunu ve bu performans seviyesinin gereksinimleriniz için yeterince iyi olup olmadığını bilirsiniz. Bununla birlikte, çoğu zaman kullanıma hazır ML yöntemleri 'kırılgan' yani ön işlemeye şaşırtıcı derecede hassastır. Kullanıma hazır tüm yöntemleri öğrendikten sonra, bunları paketlemeyi denemek neredeyse her zaman iyi bir fikirdir.
  2. Zor sorunlar, etki alanına özgü bilgi veya çok daha fazla veri veya her ikisini de çözmeyi gerektirir. Özellik mühendisliği, ML algoritmasına yardımcı olmak için etki alanına özgü bilgileri kullanmak anlamına gelir. Bununla birlikte, yeterli verileri, karmaşık özellikleri öğrenmek için bu verilerden yararlanabilecek bir algoritmaya (veya yaklaşıma) ve bu algoritmayı uygulayan bir uzmana sahipseniz, bazen bu bilgiden vazgeçebilirsiniz (örn . Kaggle Merck meydan okuması ). Ayrıca, bazen alan uzmanları iyi özelliklerin ne olduğu konusunda yanılıyor; bu nedenle daha fazla veri ve ML uzmanlığı her zaman yardımcı olur.
  3. Hata oranını doğruluk olarak düşünmeyin. % 99 doğruluğa sahip ML yöntemleri,% 98 doğruluğa sahip hataların yarısını yapar; bazen bu önemlidir.

2
+1, çok teşekkürler. Cevabınızı okuduğumda, özellik mühendisliği yapmak için alana özgü bilgiye sahip değilsem, o zaman verilen verileri kullanarak özellik öğrenimi yapmak için iyi yöntemler icat etmeye ve farklı öğrenme algoritmalarını denemeye odaklanmalıyım.
avokado

@loganecolss Ya da başkalarının benzer veriler üzerinde neler yaptığını okuyabilir veya bir alan uzmanıyla konuşabilirsiniz.
qdjm

7

Blogda veya web sitelerinde bulduğunuz örneklerin, ortak yöntemlerin iyi çalıştığı bilindiği örnekler olduğunu düşünüyorum (elbette geliştirilebilir olsalar bile).

Uzmanlığım özellik mühendisliğindedir ve size standart algoritmaların hiç iyi çalışmadığını söyleyebilirim. (Alanla ilgili herhangi bir bilgim yok, ancak çoğu zaman alana sahip kişilerle çalışıyorum.).

Burada 6 ay çalıştığım gerçek bir sorun var: Hastaların genetik değerini temsil eden 100 örnek ve 10000 değişkenli bir matris X ve kemik yoğunluğunu temsil eden 100 x 1 boyutunda bir çıktı y verildi.

Hangi genlerin kemik yoğunluğunu etkilediğini söyleyebilir misiniz?

Şimdi başka bir sorun üzerinde çalışıyorum. 2000 örnek ve 12000 değişkenli imalat üretim veri setim var. Patronum bu veri kümesinden 30'dan fazla değişkeni denetimsiz bir şekilde ayıklamak istiyor.
Bazı algoritmaları denedim ama 600 değişkenden daha azını seçemiyorum çünkü bunlar aralarında çok korelasyonlu. (Hala bunun üzerinde çalışıyorum ...)

Dikkate alınması gereken bir diğer önemli düşünce, çeşitli algoritmaların hız performansıdır. Birçok durumda bir sonuç beklerken 20 dakika bekleyemezsiniz. Örneğin, NIPALS'i ne zaman ve PCA'yı hesaplamak için SVD'yi ne zaman kullanacağınızı bilmeniz gerekir.

Umarım bu size ml'de yaygın olan problemler hakkında bir fikir verebilir.


Tavsiyeniz için teşekkürler, böyle problemlerine yaklaşmadım , ilginç. n<<p
avokado
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.