Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 24

 

Alexey, tahmin edicileri filtreleme işleviniz hakkında başka bir sorum var - bunun için döndürülen değerlerin aralığı ne olmalıdır? Bu uygunluk işlevini verilerimde rastgele girdilerle çalıştırdım (fitness_f(runif(predictor_number, min = 0, max = 1))), 0 ile 0,03 arasında sonuçlar gördüm. Ayrıca kodda bir hata durumunda (sıfır giriş) fonksiyonun da 0 döndüreceğini görüyorum. Burada bir yanlışlık var, GenSA sonucu minimize etmeye çalışıyor yani GenSA sonunda basitçe sıfıra ulaşacak. girin ve durdurun. Belki de gensanın ters yönde hareket etmesi için uygunluk fonksiyonunun sonucunun işaretini değiştirmek gerekir?
Optimizasyonun bir noktasında uygunluk fonksiyonu negatif sayılar döndürmeye başlarsa ve bunlar ne kadar düşükse o kadar iyidir - o zaman şimdi her şey yolunda demektir.

 
Dr.Tüccar :

Alexey, tahmin edicileri filtreleme işleviniz hakkında başka bir sorum var - bunun için döndürülen değerlerin aralığı ne olmalıdır? Bu uygunluk işlevini verilerimde rastgele girdilerle çalıştırdım (fitness_f(runif(predictor_number, min = 0, max = 1))), 0 ile 0,03 arasında sonuçlar gördüm. Ayrıca kodda bir hata durumunda (sıfır giriş) fonksiyonun da 0 döndüreceğini görüyorum. Burada bir yanlışlık var, GenSA sonucu minimize etmeye çalışıyor yani GenSA sonunda basitçe ulaşacak. sıfır giriş sayısı ve dur. Belki de gensanın ters yönde hareket etmesi için uygunluk fonksiyonunun sonucunun işaretini değiştirmek gerekir?
Optimizasyonun bir noktasında uygunluk fonksiyonu negatif sayılar döndürmeye başlarsa ve bunlar ne kadar düşükse o kadar iyidir - o zaman şimdi her şey yolunda demektir.

Soru güzel. Anlamak.

Bu yöntemle ilgili bir makale yazıyorum ve işte bir alıntı:


Düzeltilmiş karşılıklı bilgilere ve tahmin edicilerin bir alt kümesi için stokastik aramaya dayalı algoritmanın blok diyagramı.


  • a) Bilinen yöntemlerden birini kullanarak veri kümesini kategorik bir forma getirin.
  • b) Satır sayısı, tahmin ediciler, tahmin edicilerin ortalama seviye sayısı (farklı sayıda seviyelere sahiplerse) gibi veri seti parametrelerini tahmin edin ve bu verilere dayanarak, sondaki "optimum" tahmin edici sayısını hesaplayın. alt küme.
  • c) [0, 1] aralığında eşit olarak dağıtılmış rasgele sayıları kullanarak kümenin giriş değişkenlerinin sayısına eşit uzunlukta bir sayısal tür vektörü başlatın ve değerler için alt (0) ve üst (1) sınırlarını ayarlayın vektörün - bu SA işlevinin argümanıdır.
  • d) Çoklu bilgi niceliğini, karşılıklı bilgi niceliğini, tüm hesaplamaları birleştiren uygunluk fonksiyonunu tahmin etmek için fonksiyonları başlat.
  • e) MI ve VI niceliklerini tahmin etmek için Monte Carlo simülasyonlarının sayısını ayarlayın; MI ve VI'nın gürültü değerleri için nicelikler (örneğin, 0.9) ayarlayın.
  • f) Algoritmanın zamanını veya yineleme sayısını ayarlayın. Daha büyük daha iyi.
  • g) Algoritmayı çalıştırın, sonuçları bekleyin.


"b" noktası açıklama gerektiriyor. Optimum değişken sayısı, aşağıdaki formülle belirlenen koşullu bir değerdir:

optim_var_num <- log(x = sample_size / 100, base = round(mean_levels, 0))


Sezgi, girdi değişkenlerinin bağımsız olduğu varsayımı altında, en az n gözlem üzerinde yoğunlaşacak şekilde toplam benzersiz etkileşimli düzey sayısını elde etmek için değişkenin ortalama düzey sayısının istenen güce yükseltilmesi gerektiğidir. her biri, burada n 100 için alınır.

Çok sayıda düzeyi olan çok fazla girdi değişkenine sahip olamayız, çünkü girdi düzeylerine göre gözlemlerin sıklığının muhafazakar bir tahmini, çıktı değişkeninin girdiler kümesine bağımlılığı hakkında istatistiksel bir sonuç vermek için çok küçük olacaktır.

Aynı zamanda, giriş değişkenlerinin sayısının uzunluğu ile vektörün değerlerinin 1'e (değişken indeks dahil etme bayrağı) dönüştürüleceği eşiği ayarlayarak, olasılıksal bir hesaplama yaparız:

eşik < - 1 - optim_var_num / tahminci_number


Özü, hesaplanan optimal girdi sayısının seçimi için olasılığın maksimum değerini belirlediğimiz gerçeğine dayanır. Ve bu mantık, binom dağılımı kullanılarak test edilir.

Örneğin, verilerimizi alalım: eğitim için kullanılan tüm setin yarısı.

Her biri 5 seviyeli 17.973 satır, 12 tahmincimiz var. Yukarıdaki formüllerin uygulanmasının bir sonucu olarak, optimal tahmin edici sayısının 3.226 olduğunu bulduk.

Tahmin ediciyi kümeye dahil etmek için eşik formülünü uygulayarak 0,731 elde ederiz.

Binom dağılımından elde edilecek en olası seçilen değişken sayısı nedir?


Maksimum değer 3 gözleme düşer. Kesin olmak gerekirse, 5 ^ 3.226 bize ortalama 100 gözlemi barındıracak 178 seviye verecektir.
 
Devam ediyorum. Fonksiyonun çıkışındaki 0 değeri, olası en kötü maksimum değerdir. Par vektörünün hiçbir elemanı eşiği kırmazsa, değer otomatik olarak 0 olur. Mümkün olan en iyi değer -1'dir. Girdilerin bir alt kümesinden çıktının tam determinizmi anlamına gelir.
 

Evet, negatif uygunluk değerine sahip bir tahmin edici alt kümesi vardı. Çok fazla tahminci vardı, birkaç bin, gensa'yı sadece 2 yinelemeyle sınırladım, her şey 8 saat sürdü :). Uygunluk fonksiyonunun sonucu %6'dır. Bu tahmin ediciler üzerinde nnet ile yapılan ön testte %45 hata aldım. Bu yeterli değil, danışmanın karlı olacağını düşünmüyorum. Daha iyi bir sonuç bulmak için limiti tekrar 10 iterasyona koydum, başlattım, bir gündür bekliyorum, umarım gensa bir gün biter. Genetiği (GA kitaplığı) denemek gerekir, birkaç iş parçacığı ile çalışması daha hızlı olacaktır (GA sonucu en aza indirir ve en üst düzeye çıkarmaz, yani GA için uygunluk fonksiyonunun sonucunun işaret değiştirmesi gerekir). Daha fazla deneyeceğim.

Temel bileşen modeli hakkında çeşitli makaleler okudum, şimdi sadece modeli R ^ 2 ölçmek ve tahmin edicileri seçerek en üst düzeye çıkarmak için eğitmekle kalmadım, aynı zamanda modeli veri ön testi için gerçekten test etmeye çalıştım. Biraz belirsiz gibi görünüyor. Bir yandan, ilişkili öngörücü çiftlerini (şapka kitaplığından findCorrelation işlevi) kaldırarak modelin R ^ 2'sinde bir artış elde ettim, ancak ortaya çıktığı gibi, modeli bir veri ön testi için test ederken R ^ 2 , bu düşer. Mucize olmadı, PCA modeli de yeniden eğitildi. Daha karmaşık bir tahmin değerlendirmesi denemek istiyorum - eğitim setini ikiye bölün - gerçek eğitim ve doğrulama için, PCA modelini eğitin, ardından hemen doğrulama setinde test edin, nihai sonuç olarak minimum R ^ 2'yi döndürün. Bir tahmin edici kümesini değerlendirmek ve bu değeri en üst düzeye çıkarmak için böyle bir işlevi kullanırsanız, teoride tam olarak hem kursiyerler hem de yeni veriler üzerinde iyi sonuçlar veren tahmin edici kümeleri olacaktır. Kontrol etmeliyiz.

Ayrıca, bu konudaki PCA hakkındaki ilk makaledeki metni de görünüşe göre yanlış anladım. Varyasyonun %95'ini tanımlamak için bileşen sayısının seçilmesi gerektiğini söyledi, hedef değişkeni tahmin etmenin doğruluğundan bahsettiklerini düşündüm. Ancak her şey böyle değil, ana bileşenler genellikle hedef değişkenler dikkate alınmadan oluşturulur ve% 95'lik doğruluk, aynı bileşenler kullanılarak ilk verilerin ne kadar doğru tanımlandığıdır. Tahmin doğruluğunun bununla hiçbir ilgisi yoktur.

 
Dr.Tüccar :

Evet, negatif uygunluk değerine sahip bir tahmin edici alt kümesi vardı. Çok fazla tahminci vardı, birkaç bin, gensa'yı sadece 2 yinelemeyle sınırladım, her şey 8 saat sürdü :). Uygunluk fonksiyonunun sonucu %6'dır. Bu tahmin ediciler üzerinde nnet ile yapılan ön testte %45 hata aldım. Bu yeterli değil, danışmanın karlı olacağını düşünmüyorum. Daha iyi bir sonuç bulmak için limiti tekrar 10 iterasyona koydum, başlattım, bir gündür bekliyorum, umarım gensa bir gün biter. Genetiği (GA kitaplığı) denemek gerekir, birkaç iş parçacığı ile çalışması daha hızlı olacaktır (GA sonucu en aza indirir ve en üst düzeye çıkarmaz, yani GA için uygunluk fonksiyonunun sonucunun işaret değiştirmesi gerekir). Daha fazla deneyeceğim.

Temel bileşen modeli hakkında çeşitli makaleler okudum, şimdi sadece modeli R ^ 2 ölçmek ve tahmin edicileri seçerek en üst düzeye çıkarmak için eğitmekle kalmadım, aynı zamanda modeli veri ön testi için gerçekten test etmeye çalıştım. Biraz belirsiz gibi görünüyor. Bir yandan, ilişkili öngörücü çiftlerini (şapka kitaplığından findCorrelation işlevi) kaldırarak modelin R ^ 2'sinde bir artış elde ettim, ancak ortaya çıktığı gibi, modeli bir veri ön testi için test ederken R ^ 2 , bu düşer. Mucize olmadı, PCA modeli de yeniden eğitildi. Daha karmaşık bir tahmin değerlendirmesi denemek istiyorum - eğitim setini ikiye bölün - gerçek eğitim ve doğrulama için, PCA modelini eğitin, ardından hemen doğrulama setinde test edin, nihai sonuç olarak minimum R ^ 2'yi döndürün. Bir tahmin edici kümesini değerlendirmek ve bu değeri en üst düzeye çıkarmak için böyle bir işlevi kullanırsanız, teoride tam olarak hem kursiyerler hem de yeni veriler üzerinde iyi sonuçlar veren tahmin edici kümeleri olacaktır. Kontrol etmeliyiz.

Ayrıca, bu konudaki PCA hakkındaki ilk makaledeki metni de görünüşe göre yanlış anladım. Varyasyonun %95'ini tanımlamak için bileşen sayısının seçilmesi gerektiğini söyledi, hedef değişkeni tahmin etmenin doğruluğundan bahsettiklerini düşündüm. Ancak her şey böyle değil, ana bileşenler genellikle hedef değişkenler dikkate alınmadan oluşturulur ve% 95'lik doğruluk, aynı bileşenler kullanılarak ilk verilerin ne kadar doğru tanımlandığıdır. Tahmin doğruluğunun bununla hiçbir ilgisi yoktur.

Evet, anlamadıkları ortaya çıktı.

SAR bağımsız bir araç olarak kullanılabilir, ancak bu makalede ele alınmamıştır.

Bazı büyük tahmin edicilerden gelen gürültünün nasıl filtreleneceği tartışılmaktadır.

Benim düşünceme göre, bu aşağıdaki adımlarda yapılır:

1. Y-farkında. Bu, hedef değişkene bağlı olarak tahmin edicilerin ölçeklendirilmesidir.

2. PCA algoritması kullanılarak yordayıcı seti sıralanır ve varyansın %95'ini açıklayan kısım alınır.

2. Ya da öyle (kendim çözemedim), PCA algoritmasını kullanarak, orijinali hesaplanan katsayılarla (yükleme) çarparak elde edilen yeni bir tahmin seti oluşturulur. Bu takım sipariş edilir. Varyansın %95'ini açıklayan bu yeni vektörlerden çok sayıda alıyoruz.

not.

Y-aware'in filtreleme gürültü tahmin edicileri alanında yeni bir gıcırtı olduğuna dair yayınlar vardı.

başarı

 
San Sanych Fomenko :

2. PCA algoritması kullanılarak yordayıcı seti sıralanır ve varyansın %95'ini açıklayan kısım alınır.

Bu henüz anlamadım. (Şimdi başka bir yaklaşımla karıştırmamak için sadece y-farkındalık yaklaşımı hakkında yazacağım). Makalenin kendisi burada: http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/

" princ <- prcomp(dmTrain, center = YANLIŞ, ölçek. = YANLIŞ) " kodundan sonra şöyle bir durum vardır: veri okunur, Y'de ölçeklenir, PC bileşenleri oluşturulur. Bu işlev, tahmin ediciler olduğu için birçoğu oluşturulduğu için bileşenlerin sayısını sınırlamaz. İlk adım, bunların yalnızca bir kısmını seçmektir (varyasyonların %95'ini tanımlamaya yetecek kadar öneriniz). Makalenin kendisinde yazar, bileşenler için sdev grafiğine (bazı belirtilmemiş sapmalar) baktı ve grafikte öne çıktığı için 2 veya 5'in kendisi için yeterli olacağını söyledi. Bir şekilde öne çıkmıyorum, grafik yavaş yavaş düşüyor.

Bir sdev tablosu var, içindeki giriş sayısı bileşen sayısına eşittir. Bundan ne kadar bir bileşenin alınması gerektiğini hesaplamak mümkün mü? Tüm sayıların toplamı mutlaka 1 ile sınırlı değildir, 6'nın toplamını ve muhtemelen daha fazlasını gördüm.

> princ$sdev
[ 1 ] 0.17585066 0.15322845 0.13818021 0.13090573 0.12177070 0.11854969
[ 7 ] 0.11176954 0.10910302 0.10616631 0.10265987 0.10056754 0.09441041
[ 13 ] 0.09343688 0.08832101 0.08620753 0.08235531 0.08132748 0.07992235
[ 19 ] 0.07800569 0.07575063 0.07463254 0.07311194 0.07210698 0.07032990
[ 25 ] 0.06907964 0.06763711 0.06634935 0.06544930 0.06451703 0.06260861
 
Dr.Tüccar :

Bu henüz anlamadım. (Şimdi başka bir yaklaşımla karıştırmamak için sadece y-farkındalık yaklaşımı hakkında yazacağım). Makalenin kendisi burada: http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/

" princ <- prcomp(dmTrain, center = YANLIŞ, ölçek. = YANLIŞ) " kodundan sonra şöyle bir durum vardır: veri okunur, Y'de ölçeklenir, PC bileşenleri oluşturulur. Tahmin ediciler olduğu gibi birçoğu inşa edildiğinden, bu işlev bileşenlerin sayısını sınırlamaz. İlk adım, bunların yalnızca bir kısmını seçmektir (varyasyonların %95'ini tanımlamaya yetecek kadar öneriniz). Makalenin kendisinde yazar, bileşenler için sdev grafiğine (bazı belirtilmemiş sapmalar) baktı ve grafikte öne çıktığı için 2 veya 5'in kendisi için yeterli olacağını söyledi. Bir şekilde öne çıkmıyorum, grafik yavaş yavaş düşüyor.

Bir sdev tablosu var, içindeki giriş sayısı bileşen sayısına eşittir. Bileşenin bundan ne kadar alınması gerektiğini hesaplamak mümkün mü? Tüm sayıların toplamı mutlaka 1 ile sınırlı değildir, 6'nın toplamını ve muhtemelen daha fazlasını gördüm.

Çıngırak çalıştırıyorum ve üç tablo alıyorum:

  • Standart sapmalar: burada çeşitli değerler toplamda = 1'in gerekli olmadığını söyleyebilir
  • Döndürme: Yenilerini elde etmek için orijinal vektörlerin çarpılacağı el katsayıları
  • Bileşenlerin önemi. ne tartışılıyor

İkincisi için, 1. sütun, sadece PC1 alırsak 0.9761 değişkenliğinin (Kümülatif Oran) açıklanacağını, İKİ bileşen alırsak - PC1 ve PC2, o zaman 0.99996 açıklanacağını söylüyor, vb.

(tablo ekleyemiyorum)

Bileşenlerin önemi:

PC1 PC2 PC3 PC4 PC5

Standart sapma 2.2092 0.34555 0.01057 0.008382 0.004236

Varyans Oranı 0.9761 0.02388 0.00002 0.000010 0.000000

Kümülatif Oran 0.9761 0.99996 0.99998 1.000000 1.000000

 

Uzun zamandır bu tabloyu arıyordum sonunda özette buldum. En bariz yer aslında :) , gösterdiğin için teşekkürler. Bu, özette bir şey olduğunda, ancak nesnenin niteliklerinde olmadığında geçerlidir.

summary(princ)$importance[ 3 ,]

Bu makalenin, Y-aware için bazı özel çözümlerle birlikte, özellikle bileşen seçme konusuna ayrılmış bir devamı olduğu ortaya çıktı. Henüz denemedim.

http://www.win-vector.com/blog/2016/05/pcr_part3_pickk/  

 
Dr.Tüccar :

Uzun zamandır bu tabloyu arıyordum sonunda özette buldum. En bariz yer aslında :) , gösterdiğin için teşekkürler. Bu, özette bir şey olduğunda, ancak nesnenin niteliklerinde olmadığında geçerlidir.

Bu makalenin, Y-aware için bazı özel çözümlerle birlikte, özellikle bileşen seçme konusuna ayrılmış bir devamı olduğu ortaya çıktı. Henüz denemedim.

http://www.win-vector.com/blog/2016/05/pcr_part3_pickk/  

Bu R'de, bir nesne alır almaz, hemen üzerine str'yi ve özetini ayarlarsınız ve ayrıca çizersiniz. Görülecek çok şaşırtıcı şeyler var. Gerçek şu ki, R'deki "nesne", birçok programlama dilinden çok daha karmaşık bir şeydir.
 
Dr.Tüccar :

Evet, negatif uygunluk değerine sahip bir tahmin edici alt kümesi vardı. Çok fazla tahminci vardı, birkaç bin, gensa'yı sadece 2 yinelemeyle sınırladım, her şey 8 saat sürdü :). Uygunluk fonksiyonunun sonucu %6'dır. Bu tahmin ediciler üzerinde nnet ile yapılan ön testte %45 hata aldım. Bu yeterli değil, danışmanın karlı olacağını düşünmüyorum. Daha iyi bir sonuç bulmak için limiti tekrar 10 iterasyona koydum, başlattım, bir gündür bekliyorum, umarım gensa bir gün biter. Genetiği (GA kitaplığı) denemek gerekir, birkaç iş parçacığı ile çalışması daha hızlı olacaktır (GA sonucu en aza indirir ve en üst düzeye çıkarmaz, yani GA için uygunluk fonksiyonunun sonucunun işaret değiştirmesi gerekir). Daha fazla deneyeceğim.

Temel bileşen modeli hakkında çeşitli makaleler okudum, şimdi sadece modeli R ^ 2 ölçmek ve tahmin edicileri seçerek en üst düzeye çıkarmak için eğitmekle kalmadım, aynı zamanda modeli veri ön testi için gerçekten test etmeye çalıştım. Biraz belirsiz gibi görünüyor. Bir yandan, ilişkili öngörücü çiftlerini (şapka kitaplığından findCorrelation işlevi) kaldırarak modelin R ^ 2'sinde bir artış elde ettim, ancak ortaya çıktığı gibi, modeli bir veri ön testi için test ederken R ^ 2 , bu düşer. Mucize olmadı, PCA modeli de yeniden eğitildi. Daha karmaşık bir tahmin değerlendirmesi denemek istiyorum - eğitim setini ikiye bölün - gerçek eğitim ve doğrulama için, PCA modelini eğitin, ardından hemen doğrulama setinde test edin, nihai sonuç olarak minimum R ^ 2'yi döndürün. Bir tahmin edici kümesini değerlendirmek ve bu değeri en üst düzeye çıkarmak için böyle bir işlevi kullanırsanız, teoride tam olarak hem kursiyerler hem de yeni veriler üzerinde iyi sonuçlar veren tahmin edici kümeleri olacaktır. Kontrol etmeliyiz.

Ayrıca, bu konudaki PCA hakkındaki ilk makaledeki metni de görünüşe göre yanlış anladım. Varyasyonun %95'ini tanımlamak için bileşen sayısının seçilmesi gerektiğini söyledi, hedef değişkeni tahmin etmenin doğruluğundan bahsettiklerini düşündüm. Ancak her şey böyle değil, ana bileşenler genellikle hedef değişkenler dikkate alınmadan oluşturulur ve% 95'lik doğruluk, aynı bileşenler kullanılarak ilk verilerin ne kadar doğru tanımlandığıdır. Tahmin doğruluğunun bununla hiçbir ilgisi yoktur.

Neden bu kadar uzun sürdüğünü tam olarak anlamıyorum. optim_var_number ne kadar aldı? 10 içinde olmalıdır. 1200 saniyeye ayarlayın ve bir şey olmalıdır.
Neden: