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

 
Aleksey Vyazmikin #:

Betiğiniz bir günden uzun süredir çalışıyor ve henüz tarama sonuçlarına göre tek bir dosya bile oluşturmadı. Bilmiyorum, belki de kapatmanın zamanı gelmiştir?

Zhekez ve örnek boyutuna bağlıdır. İşlemciniz çok çekirdekliyse, yürütmeyi paralelleştirin. Aşağıda paralel yürütmenin bir çeşidi verilmiştir

##----parallel--------------------------
library("doFuture")
registerDoFuture()
plan(multisession)
require(foreach)
bench::bench_time(
foreach(i = 1:length(cor.test.range))%dopar%{
    get.findCor(dt, cor.coef = cor.test.range[i])
}-> res
)
#  process     real
# 140.62 ms    2.95 m
#
 bench::bench_time(
for(i in 1:length(cor.test.range)){
    paste0("train1_" , cor.test.range[i]*10 , ".csv") %>%
        paste0(patch , .) %>% fwrite(res[[i]], .)
}
)
#  process    real
# 156 ms   157 ms

Seriden dört kat daha hızlı. Donanım ve yazılım

sessionInfo()
#  AMD FX-8370 Eight-Core Processor
#  R version 4.1.3 (2022-03-10)
#  Platform: x86_64-w64-mingw32/x64 (64-bit)
#  Running under: Windows 10 x64 (build 19044)
#
#  Matrix products: default
#
#  locale:
#     [1] LC_COLLATE=Russian_Russia.1251  LC_CTYPE=Russian_Russia.1251    LC_MONETARY=Russian_Russia.1251
# [4] LC_NUMERIC=C                    LC_TIME=Russian_Russia.1251
#
#  attached base packages:
#     [1] stats     graphics  grDevices utils     datasets  methods   base
#
#  other attached packages:
#     [1] doFuture_0.12.2 future_1.28.0   foreach_1.5.2   fstcore_0.9.12  tidyft_0.4.5
#
#  loaded via a namespace (and not attached):
#     [1] Rcpp_1.0.9        codetools_0.2-18  listenv_0.8.0     digest_0.6.30     parallelly_1.32.1 magrittr_2.0.3
# [7] bench_1.1.2       stringi_1.7.8     data.table_1.14.4 fst_0.9.8         iterators_1.0.14  tools_4.1.3
# [13] stringr_1.4.1     import_1.3.0.9003 parallel_4.1.3    compiler_4.1.3    globals_0.16.1

İyi şanslar.

 
Maxim Dmitrievsky #:

Hepsi orada. Hız feci şekilde etkilenecektir. Veri kareleri büyük ek yüke sahip en yavaş canavarlardır.

Bu ekran kartlarıyla ilgili değil, bu tür şeylerin ayık bir durumda veri kareleri aracılığıyla sayılmadığını anlamakla ilgili.

"Veri çerçeveleri" ile kastedilen nedir - bu dilde cahillere açıklayın.

 
mytarmailS #:

İpucu: Aralarındaki korelasyonu görmek için 100.000 gözlemden oluşan vektörler kullanmak gerekli midir?

Ben yüksek korelasyonlu vektörler arıyorum, yani korelasyonu 0,9'dan büyük olan.

Bunun gerekli olup olmadığını bilmiyorum - denemelisiniz. Örneklem durağan değil - örneklemin yarısında korelasyon yoktu ve sonra patlama oldu ve sonra ortaya çıktı.

Ayrıca, tüm katsayıları 0.1'lik adımlarla denedim.

mytarmailS #:
Rica ederim.

Bu ruhun çığlığı mı?

 
Vladimir Perervenko #:

Zhekez ve örnek boyutuna bağlıdır. İşlemci çok çekirdekli ise, yürütmeyi paralelleştirin. Aşağıda paralel yürütmenin bir çeşidi verilmiştir

Seri yürütmeye göre 4 kat daha hızlıdır. Donanım ve yazılım

İyi şanslar.

Yani paralellik RAM tüketimini artırmayacak mı?

mytarmailS kodu daha fazla RAM tüketmesine rağmen 50 kat daha hızlı, belki de kullandığınız kütüphanelerin bazı sınırlamaları vardır - komut dosyası 30 saatten fazla çalıştı ve tek bir dosya oluşturmadı.

Bazı karmaşık kod örnekleri için teşekkürler - R'de daha ziyade sadece bir tüketiciyim, ana kodda neyi düzelteceğimi bulamıyorum.

 
mytarmailS #:
Her veri türü için corr hesaplamak için bir yöntem olması gerektiğini mi kastediyorsunuz?

matrix, R'de yerleşik bir veri türüdür, matrix.corr() vektörü gibi bir şeye sahiptir.

 
Aleksey Vyazmikin #:

"Veri çerçeveleri" ile ne kastediliyor - bu dili bilmeyenlere açıklayın.

Daha ziyade R yazarlarına bir mesajdı :) bunlar, verilerin uygun şekilde görüntülenmesi ve alt örneklerin çıkarılması (sql'de olduğu gibi) gibi bazı tipik manipülasyonlar için tablolardır.

Sahip olduğunuz gibi büyük veriler üzerinde döngülerde yarışmak için tasarlanmamışlardır, dizilerden 20-100 kat daha yavaş olacaktır. Hafıza ile zaten kendiniz anladınız.

Bence burada sorun yok:

#  чтобы прочитать как работает функция и примеры  ?caret::findCorrelation
#  находим колонки которые не коррелированы с порогом корреляции 0,9    "cutoff = 0.9"
not_corr_colums <- caret::findCorrelation(as.matrix(df), cutoff = 0.9, exact = F,names = F)

Yerleşik "matris" türünün ne kadar hızlı olduğunu bilmiyorum, ancak caret kullanıyor, bu da yavaşlayabilir. Yerleşik tipte korelasyon falan hesaplamak için vektör işlemi yok.

 
Bu düşünceler nereden geliyor?
 
mytarmailS #:
Bu düşünceler nereden geliyor?

neden kendi korr hesaplamasına sahip olması gereken sol loblu dahili bir tipi, bunun için mümkün olduğunca hızlı yavaşlatıyorsunuz

 
Maxim Dmitrievsky #:

Kendisi için mümkün olduğunca hızlı olan kendi Korr hesaplamasına sahip olması gereken yerleşik bir türü neden yavaşlatıyorsunuz?

Lib türü hesaba katmıyor mu? Veri türü, en ucuz hesaplamalar için veri gibidir. Aynı matris hesaplamalar için tasarlanmalıdır.

 
mytarmailS #:
Geçmişte aptallaşmadan gelecekte nasıl daha akıllı olunur? Algoritmik olarak... terabaytlarca bilgi yaratmadan.

Yapamazsın.