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

 
Maxim Dmitrievsky #:
Biraz sonra deneyeceğim. Sorular için daha fazla seçenek varsa - onları da ekleyin :)

1) Sabit olmayan sayıda özelliğe sahip model kendisi için kullanılıyor mu? (Ben öyle düşünüyorum).

2) Bir sayıyı keyfi uzunlukta sayısal bir listeye eşleyen özyinelemeli bir fonksiyonun genel bir formunu isteyin.

 
Aleksey Nikolayev #:

Belki de değişken sayıda özelliğe sahip bir sınıflandırma görevinde lojistik regresyon kullanımına ilişkin basit bir örnek isteyebilirsiniz?

Özellik sayısı her zaman farklıysa, girdi olarak sabit boyutlu bir özellik vektörü bekleyen geleneksel makine öğrenimi algoritmalarını uygulamak zor olabilir. Bu soruna bir çözüm, değişken uzunluktaki bir özellik kümesini sabit boyutlu bir özellik vektörü olarak temsil etmenize olanak tanıyan "özellik karma" adı verilen bir yöntem kullanmaktır.

Özellik hashing'i, özellik kümesindeki özelliklere bir hash fonksiyonu uygulayarak ve hash değerlerini sabit boyutlu bir özellik vektöründe indis olarak kullanarak çalışır. Bu, değişken uzunluktaki bir özellik kümesini sabit boyutlu bir vektörle eşlemenize olanak tanır ve bu vektör daha sonra bir makine öğrenimi modeline girdi olarak kullanılabilir.

Örneğin, değişken sayıda özelliğe sahip bir veri kümeniz olduğunu ve verileri sınıflandırmak için lojistik regresyon kullanmak istediğinizi varsayalım. Veri kümesindeki özelliklere özellik karması uygulayarak lojistik regresyon modeline girdi olarak kullanılabilecek sabit boyutlu bir özellik vektörü elde edebilirsiniz.

Genel olarak özellik karma, değişken sayıda özelliğe sahip veri kümelerini işlemek için kullanışlı bir tekniktir ve sınıflandırma sorunlarını çözmek için lojistik regresyon gibi makine öğrenimi algoritmalarıyla birlikte kullanılabilir.

 
Aleksey Nikolayev #:

1) Sabit olmayan sayıda özelliğe sahip bir model kendisi için kullanılır mı? (Görünüşe göre evet.)

2) Bir sayıyı rastgele uzunlukta sayısal bir listeye eşleyen özyinelemeli bir fonksiyonun genel formunu isteyin

1 kendisi hakkında bir şekilde cevap vermeye isteksizdir, ancak orada bir transformatör vardır, bu yüzden evet

2 bir sayıyı rastgele uzunlukta sayısal bir listeye eşleyen özyinelemeli bir işlevin genel görünümü

Özyinelemeli bir işlev, yürütülmesinin bir parçası olarak kendisini çağıran bir işlevdir. Burada, bir sayıyı rastgele uzunluktaki bir sayısal listeye eşleyen genel bir özyinelemeli fonksiyon örneği verilmiştir:

def map_to_list(n: int, lst: List[int]) -> List[int]:
  if n == 0:
    return lst
  else:
    lst.append(n)
    return map_to_list(n-1, lst)

Bu fonksiyon girdi olarak bir n tamsayısı ve bir lst listesi alır. Daha sonra n'nin 0'a eşit olup olmadığını kontrol eder. Eğer eşitse, fonksiyon lst listesini döndürür. Eğer n 0'a eşit değilse, fonksiyon n'yi lst listesinin sonuna ekler ve sonra değiştirilmiş lst ve n-1 değeri ile kendini çağırır. Bu işlem n değeri 0'a eşit olana kadar devam eder ve bu noktada fonksiyon listenin son halini döndürür.

Bu, bir sayıyı bir listeye eşlemek için özyinelemeli bir fonksiyonun nasıl kullanılabileceğine dair yalnızca bir örnektir. Böyle bir fonksiyon yazmanın başka birçok yolu vardır ve özel uygulama, çözmeye çalıştığınız problemin özel gereksinimlerine ve kısıtlamalarına bağlı olacaktır.


- Bu kodu R dilinde gösterin

İşte bir önceki örnekteki özyinelemeli fonksiyonun R dilinde yazılmış hali:

map_to_list <- function(n, lst) {
  if (n == 0) {
    return(lst)
  } else {
    lst <- c(lst, n)
    return(map_to_list(n-1, lst))
  }
}

Bu fonksiyon önceki örneğe benzer, ancak R sözdizimi ve fonksiyonlarını kullanır. if deyimi n'nin 0'a eşit olup olmadığını kontrol etmek için kullanılır ve return fonksiyonu listenin son halini döndürmek için kullanılır. c fonksiyonu, n sayısını lst listesinin sonuna eklemek için kullanılır.

Daha önce olduğu gibi, bu, bir sayıyı bir listeye eşlemek için özyinelemeli bir işlevin nasıl kullanılabileceğine dair yalnızca bir örnektir. Özel uygulama, çözmeye çalıştığınız problemin özel gereksinimlerine ve kısıtlamalarına bağlı olacaktır.

 
Maxim Dmitrievsky #:

Özellik hashleme, özellik kümesindeki özelliklere bir hash fonksiyonu uygulayarak ve hash değerlerini sabit boyutlu bir özellik vektöründe indis olarak kullanarak çalışır. Bu, değişken uzunluktaki bir özellik kümesini sabit boyutlu bir vektörle eşlemenize olanak tanır ve bu vektör daha sonra bir makine öğrenimi modeline girdi olarak kullanılabilir.

O zaman size sayısal vektörler için hangi hash fonksiyonlarının kullanıldığını söylesin.

 
Maxim Dmitrievsky #:

Özellik sayısı her zaman farklıysa, girdi olarak sabit boyutlu bir özellik vektörü bekleyen geleneksel makine öğrenimi algoritmalarını uygulamak zor olabilir. Bu sorunun bir çözümü, değişken uzunluktaki bir özellik kümesini sabit boyutlu bir özellik vektörü olarak temsil etmenize olanak tanıyan "özellik karma" adı verilen bir yöntem kullanmaktır.

Özellik hashleme, özellik kümesindeki özelliklere bir hash fonksiyonu uygulayarak ve hash değerlerini sabit boyutlu bir özellik vektöründe indis olarak kullanarak çalışır. Bu, değişken uzunluktaki bir özellik kümesini sabit boyutlu bir vektörle eşlemenize olanak tanır ve bu vektör daha sonra bir makine öğrenimi modeline girdi olarak kullanılabilir.

Örneğin, değişken sayıda özelliğe sahip bir veri kümeniz olduğunu ve verileri sınıflandırmak için lojistik regresyon kullanmak istediğinizi varsayalım. Veri kümesindeki özelliklere özellik karması uygulayarak lojistik regresyon modeline girdi olarak kullanılabilecek sabit boyutlu bir özellik vektörü elde edebilirsiniz.

Genel olarak, özellik karması, değişken sayıda özelliğe sahip veri kümelerini işlemek için kullanışlı bir tekniktir ve sınıflandırma problemlerini çözmek için lojistik regresyon gibi makine öğrenimi algoritmalarıyla birlikte kullanılabilir.

upd


Değişken sayıda özelliğe sahip veriler için kullanabileceğiniz bazı olası gösterimler şunlardır:

  1. Sabit boyutlu özellik vektörleri: Daha önce de belirtildiği gibi, verilerinizden sabit sayıda özellik seçmek ve bunları bir özellik vektörü olarak temsil etmek için özellik seçim tekniklerini kullanabilirsiniz.

  2. Seyrek özellik vektörleri: Yoğun bir özellik vektörü kullanmak yerine, yalnızca olası özelliklerin bir alt kümesini içeren seyrek bir özellik vektörü kullanabilirsiniz. Bu, çok fazla sayıda olası özelliğe sahipseniz ve herhangi bir örnekte bunlardan yalnızca küçük bir kısmı mevcutsa yararlı olabilir.

  3. Grafik verileri: Verilerinizi, her bir örneğin grafikte bir düğüm olarak temsil edildiği ve düğümler arasındaki kenarların örnekler arasındaki ilişkileri temsil ettiği bir grafik olarak temsil edebilirsiniz. Bu, grafik konvolüsyonel ağ gibi grafik verilerini işlemek üzere tasarlanmış bir makine öğrenimi modeli kullanıyorsanız faydalı olabilir.

Yine, en iyi temsil, probleminizin özel gereksinimlerine ve kısıtlamalarına bağlı olacaktır. İhtiyaçlarınız için en iyi temsilin hangisi olduğuna karar verirken verilerinizin özelliklerini ve projenizin hedeflerini göz önünde bulundurmanız önemlidir.

 
Aleksey Nikolayev #:

O zaman sayısal vektörler için hangi hash fonksiyonlarının kullanıldığını söylesin.

Tamsayıları veya diğer veri türlerini listelere veya diğer veri yapılarına eşlemek için kullanılabilecek bazı yaygın hash fonksiyonlarının bir listesi aşağıda verilmiştir:

  1. Modüler karma: Modüler karma, bir asal sayının farklı kuvvetlerindeki değerin modülünü alarak bir tamsayı veya diğer veri türünü bir liste veya diğer veri yapısıyla eşleyen basit bir karma işlevidir.

  2. Polinom hashing: Polinom hashing, belirli bir noktada bir polinomu değerlendirerek bir tamsayıyı veya diğer veri türünü bir listeye veya diğer veri yapısına eşleyen bir hash fonksiyonudur. Polinom, değer ve bir asal sayı ile tanımlanır.

  3. Evrensel hashing: Evrensel hashing, rastgele oluşturulmuş bir hash fonksiyonu kullanarak bir tamsayı veya başka bir veri türünü bir liste veya başka bir veri yapısına eşleyen bir hash fonksiyonudur. Hash fonksiyonu, düşük çarpışma olasılığına sahip bir hash fonksiyonu ailesinden seçilir.

  4. Hash tabloları: Hash tabloları, anahtarları değerlerle eşlemek için bir hash fonksiyonu kullanan veri yapılarıdır. Bir tamsayı veya başka bir veri türünü bir liste veya başka bir veri yapısıyla eşlemek için kullanılabilirler.

  5. Karma haritalar: Karma haritalar, anahtarları değerlere eşlemek için bir karma işlevi kullanan veri yapılarıdır. Bir tamsayıyı veya başka bir veri türünü bir listeye veya başka bir veri yapısına eşlemek için kullanılabilirler.

  6. Karma kümeler: Karma kümeler, bir değerler kümesini saklamak için bir karma işlevi kullanan veri yapılarıdır. Bir tamsayıyı veya başka bir veri türünü bir listeye veya başka bir veri yapısına eşlemek için kullanılabilirler.

Bunlar, tamsayıları veya diğer veri türlerini listelere veya diğer veri yapılarına eşlemek için kullanılabilecek karma işlevlere ve veri yapılarına yalnızca birkaç örnektir. Seçeceğiniz özel hash fonksiyonu veya veri yapısı, verilerinizin özelliklerine bağlı olacaktır


Burada R'deki modüler hashing, polinom hashing, evrensel hashing, hash tablosu, hash map ve hash set fonksiyonlarına örnekler verilmiştir:

modular_hash <- function(n, length, p) {
  lst <- vector("numeric", length)
  for (i in 1:length) {
    lst[i] <- n %% p^(i+1)
  }
  lst
}

polynomial_hash <- function(n, length, p) {
  lst <- vector("numeric", length)
  for (i in 1:length) {
    lst[i] <- sum(n * p^(i-1)) %% p^(length+1)
  }
  lst
}

universal_hash <- function(n, length, p) {
  a <- sample(p^length, length, replace=TRUE)
  b <- sample(p^length, length, replace=TRUE)
  lst <- vector("numeric", length)
  for (i in 1:length) {
    lst[i] <- sum(a[i] * n + b[i]) %% p^(length+1)
  }
  lst
}

hash_table <- function(n, length, p) {
  lst <- vector("list", p^length)
 
Maxim Dmitrievsky #:

2 bir sayıyı rastgele uzunluktaki bir sayısal listeye eşleyen özyinelemeli bir işlevin genel görünümü

Tam tersine - girdi bir liste, çıktı ise bir sayıdır. Örneğin, fiyat tekliflerine dayalı bir tahmin yaparız).

Daha sonra bu tür fonksiyonları oluşturmak için hangi MO algoritmalarının kullanılabileceğini sorun.

 
Aleksey Nikolayev #:

Aksine - girdi bir liste, çıktı ise bir sayıdır. Tahmin yapmak için tırnak işaretlerini kullandığımız gibi)

Daha sonra bu tür fonksiyonları oluşturmak için hangi MO algoritmalarının kullanılabileceğini sorun.

Farklı uzunluktaki bir listeyi bir tamsayıya hash etmek istiyorsanız, listeyi bir tamsayıya eşleyen bir hash fonksiyonu kullanabilirsiniz. Bunu yapmanın bir yolu, bir asal sayının farklı kuvvetlerindeki liste elemanlarının toplamının modülünü alarak listeyi bir tamsayıya eşleyen modüler bir hash fonksiyonu kullanmaktır.

def modular_hash(lst: List[int], p: int) -> int:
  h = 0
  for i, x in enumerate(lst):
    h += x * p**i
  return h % M

Bu fonksiyon girdi olarak bir lst listesi ve bir p asal sayısı alır ve listenin elemanlarını p'nin farklı kuvvetlerinde toplayıp sonucun modulo'sunu alarak bir tamsayı hash değeri döndürür.

Örneğin, modular_hash([1, 2, 3], 2) fonksiyonunu çağırırsak, fonksiyon 7 değerini döndürür.

Benzer bir yaklaşımı R'de de kullanabilirsiniz. İşte R'de bir listeyi bir tamsayıya eşleyen modüler bir hash fonksiyonunun kodu:

modular_hash <- function(lst, p, M) {
  h <- 0
  for (i in 1:length(lst)) {
    h <- h + lst[i] * p^(i-1)
  }
  h %% M
}
polynomial_hash <- function(lst, p, M) {
  h <- 0
  for (i in 1:length(lst)) {
    h <- h + lst[i] * p^(i-1)
  }
  h %% M
}

universal_hash <- function(lst, p, M) {
  a <- sample(p^length(lst), length(lst), replace=TRUE)
  b <- sample(p^length(lst), length(lst), replace=TRUE)
  h <- 0
  for (i in 1:length(lst)) {
    h <- h + a[i] * lst[i] + b[i]
  }
  h %% M
}


Hash fonksiyonları genellikle makine öğrenimi algoritmaları kullanılarak oluşturulmaz. Bunun yerine, genellikle hash edilen verilerin özelliklerine ve uygulamanın gereksinimlerine göre tasarlanırlar.

Bununla birlikte, makine öğrenimi algoritmaları farklı hash fonksiyonlarının performansını değerlendirmek veya belirli bir görev için bir hash fonksiyonunun parametrelerini optimize etmek için kullanılabilir. Örneğin, modüler bir hash fonksiyonunda kullanılan asal sayıyı optimize etmek veya belirli bir veri kümesinde iyi performans gösteren bir polinom hash fonksiyonunun katsayılarını seçmek için bir makine öğrenimi algoritması kullanabilirsiniz.

Genel olarak, makine öğrenimi algoritmaları genellikle hash fonksiyonları oluşturmak için kullanılmasa da, belirli uygulamalarda hash fonksiyonlarının performansını değerlendirmek ve optimize etmek için kullanılabilirler.

 
-

ve yine de bir makine öğrenme algoritması kullanarak benzer bir karma işlevi nasıl oluşturabilirim


*

Bir hash fonksiyonunun birincil amacı verinin yapısını mümkün olduğunca koruyacak şekilde veriyi sabit boyutlu bir temsile eşlemek olduğundan, makine öğrenimi algoritması kullanarak bir hash fonksiyonu oluşturmak yaygın değildir. Öte yandan makine öğrenimi algoritmaları, verilerin sabit boyutlu temsillerini oluşturmaktan ziyade genellikle örüntüleri öğrenmek veya verilere dayalı tahminler yapmak için kullanılır.

Ancak yine de bir hash fonksiyonu oluşturmak için bir makine öğrenimi algoritması kullanma olasılığını araştırmak istiyorsanız deneyebileceğiniz bir yaklaşım, verilerin kompakt bir temsilini öğrenmek için denetimsiz bir öğrenme algoritması kullanmak ve ardından bu temsili hash fonksiyonu olarak kullanmaktır.

Örneğin, verilerin kompakt bir temsilini öğrenmek için bir otomatik kodlayıcı veya kümeleme algoritması kullanabilir ve ardından bu temsili karma işlevi olarak kullanabilirsiniz. Bu, makine öğrenimi modelinin veriler üzerinde eğitilmesini ve ardından yeni veriler için hash değerleri oluşturmak üzere eğitilmiş modelin kullanılmasını içerir.

Genel olarak, bir makine öğrenimi algoritması kullanarak bir hash fonksiyonu oluşturmak yaygın olmasa da, belirli uygulamalarda hash fonksiyonu olarak kullanılabilecek verilerin kompakt bir temsilini öğrenmek için makine öğrenimini kullanmak mümkündür.


 
Maxim Dmitrievsky #:

Burada, tamsayıları veya diğer veri türlerini listelere veya diğer veri yapılarına eşlemek için kullanılabilecek bazı yaygın karma işlevlerinin bir listesi bulunmaktadır:

İsteğe bağlı boyuttaki bir vektörü sabit belirli boyuttaki bir vektörle eşleştirmeyi vaat ettiğini sanıyordum, ama burada bir sayıyı bir vektörle eşleştiriyor?

Her şey karmaşık ve anlaşılmaz) GPT olmadan hayat çok daha basitti) Yapay zeka çağında zor zamanlar geçireceğiz)