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

 
Aleksey Nikolayev #:

Sanırım rastgele boyuttaki bir vektörü sabit belirli boyuttaki bir vektörle eşleştirmeyi vaat ediyordu, ancak burada bir sayıyı bir vektörle eşleştiriyor?

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

Vektörden sayıya hakkında daha fazla yazdım.

Sabit bir vektör içine vektör?

 

Farklı uzunluktaki bir listeyi sabit uzunluktaki bir listeye hash etmek istiyorsanız, listeyi sabit boyutlu bir listeye eşleyen bir hash işlevi kullanabilirsiniz. Bunu yapmanın bir yolu, listenin öğelerine bir hash fonksiyonu uygulayarak ve hash değerlerini sabit boyutlu listede indis olarak kullanarak değişken uzunluktaki bir listeyi sabit boyutlu bir liste olarak temsil etmenizi sağlayan "özellik hashing" adı verilen bir teknik kullanmaktır.

İşte Python'da bir özellik hashing örneği:

def feature_hash(lst: List[int], n: int) -> List[int]:
  h = [0] * n
  for x in lst:
    h[hash(x) % n] += 1
  return h

Bu fonksiyon girdi olarak bir lst listesi ve istenen bir n liste uzunluğu alır ve lst öğelerine bir hash fonksiyonu uygulayarak ve hash değerlerini sabit boyutlu listede indis olarak kullanarak sabit boyutlu bir liste döndürür. Daha sonra her bir indeksteki değerler, orijinal listedeki her bir öğenin oluşum sayısını saymak için artırılır.

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

Benzer bir yaklaşımı R'de de kullanabilirsiniz. İşte R'de bir özellik hashing fonksiyonu için kod:

feature_hash <- function(lst, n) {
  h <- rep(0, n)
  for (x in lst) {
    h[as.integer(x) %% n] <- h[as.integer(x) %% n] + 1
  }
  h
}
 
Aleksey Nikolayev #:

Sanırım rastgele boyuttaki bir vektörü sabit belirli boyuttaki bir vektörle eşleştirmeyi vaat ediyordu, 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).

Alexei, kafirleri dinlemeyi bırak.

Girdi başına farklı sayıda özelliğe ihtiyacınız varsa.
Bu sık örüntü madenciliğidir - bir öğretmen de dahil olmak üzere farklı varyasyonlarda ilişkisel kurallar arayın.


==============
Neden farklı sayıda özellik kabul eden algoritmaların OLMADIĞINI söyledim?
Çünkü kaputun altındaki bu tür algoritmalarda bile veriler tek bir sıcak kodlama biçiminde seyrek bir matris biçimindedir.
Girdi, daha yumuşak bir formatta olsa da, hala özelliklerin tüm isimleridir.
=======================
Ayrıca öznitelik sayısı da belirtilmemiştir
Özellik sayısı nispeten azsa 10-20k, o zaman zayıf bir dizüstü bilgisayarda bile sorunsuz bir şekilde xgboost'a yükleyebilirsiniz
 
Maxim Dmitrievsky #:

vektörünü sabit bir vektöre dönüştürür mü?

1) Herhangi bir sıradan MO algoritmasını (sabit sayıda özellik ile) kullanmak istiyorsak, evet - farklı uzunluklarda bir dizi vektör alır ve bunları belirli bir uzunlukta bir dizi vektöre dönüştürürüz.

2) Hemen herhangi bir uzunluktaki vektörü girdi olarak alabilen alışılmadık bir MO algoritması arayın.

Vektör dönüşümü MO aracılığıyla aranırsa ilk seçenek ikinci seçeneğe dönüşür.

 
Aleksey Nikolayev #:

1) Herhangi bir geleneksel MO algoritmasını (sabit sayıda özellik ile) kullanmak istiyorsak, o zaman evet - farklı uzunluklarda bir dizi vektör alır ve bunları belirli bir uzunlukta bir dizi vektöre dönüştürürüz.

2) Hemen herhangi bir uzunlukta bir vektörü girdi olarak alabilen alışılmadık bir MO algoritması arayın.

Vektör dönüşümü MO aracılığıyla aranırsa ilk seçenek ikinci seçeneğe dönüşür.

Yani açık, bunu hash f-iys ile deneyebiliriz. Ancak, keyfi uzunluktaki vektörleri veya daha doğrusu onlar için uzunluğu hangi prensibe göre seçeceğimizi sormaya utanıyorum :) ve hangi verilerden.

birçok varyant olabilir

ilk seçenek daha hoş, ancak mantığa bir şey koymanız gerekiyor

 

- Değişken boyutlu fiyat getirileri vektörünü sabit vektöre hash etmek istiyorum


Hisse senedi fiyat getirilerinin değişken boyutlu bir vektörünü sabit boyutlu bir vektöre hash etmek istiyorsanız, min-hash adı verilen bir teknik kullanabilirsiniz. Min-hash, ortak öğe sayısını hesaplayarak iki küme arasındaki benzerliği yaklaşık olarak belirlemeye yarayan bir yöntemdir. Genellikle metin madenciliği bağlamında kullanılır, ancak hisse senedi fiyat getirileri gibi diğer veri türlerine de uygulanabilir.

Aşağıda, hisse senedi fiyat getirilerinin değişken boyutlu bir vektörünü sabit boyutlu bir vektöre hash etmek için min-hash'i nasıl kullanabileceğinize dair bir örnek verilmiştir:

  1. Sabit boyutlu vektörün boyutunu tanımlama: Öncelikle, kullanmak istediğiniz sabit boyutlu vektörün boyutunu tanımlamanız gerekir. Bu, uygulamanızın özel gereksinimlerine ve elinizdeki veri miktarına bağlı olacaktır.

  2. Bir hash fonksiyonu oluşturun: Ardından, hisse senedi fiyat getirisi verilerini sabit boyutlu vektöre hash etmek için kullanılabilecek bir hash fonksiyonu oluşturmanız gerekir. Rastgele bir permütasyon veya doğrusal bir kongrüansiyel jeneratör kullanmak gibi bir hash fonksiyonu oluşturmak için kullanabileceğiniz birçok farklı yaklaşım vardır.

  3. Verileri karma hale getirme: Sabit boyutlu vektörün boyutunu tanımladıktan ve bir karma fonksiyon oluşturduktan sonra, bunları hisse senedi fiyat getirisi verilerinin değişken boyutlu vektörünü sabit boyutlu bir vektöre karma hale getirmek için kullanabilirsiniz. Ortaya çıkan sabit boyutlu vektör, orijinal verileri sıkıştırılmış bir biçimde temsil edecek ve vektörün boyutu tanımladığınız boyuta göre belirlenecektir.

Min-hash'in tam bir temsilden ziyade iki küme arasındaki benzerliğin bir yaklaşımı olduğu için bilgi kaybına neden olabileceğini unutmamak önemlidir. Yaklaşımın doğruluğu, sabit boyutlu vektörün boyutuna ve kullanılan özel hash fonksiyonuna bağlı olacaktır.


- Bilgi kaybı nasıl en aza indirilir


Hisse senedi fiyat getirilerinin değişken boyutlu bir vektörünü sabit boyutlu bir vektöre hash etmek için min-hash kullanırken bilgi kaybını en aza indirmenin birkaç yolu vardır:

  1. Daha büyük sabit boyutlu bir vektör kullanın: Bilgi kaybını en aza indirmenin bir yolu daha büyük sabit boyutlu bir vektör kullanmaktır. Daha büyük bir vektör daha fazla elemana sahip olacaktır ve bu nedenle orijinal veriler hakkında daha fazla bilgi yakalayabilir. Ancak, bu aynı zamanda vektörün boyutunu da artıracaktır ve büyük bir veri kümeniz veya sınırlı depolama alanınız varsa pratik olmayabilir.

  2. Daha iyi bir hash fonksiyonu kullanın: Bilgi kaybını en aza indirmenin bir başka yolu da daha iyi bir hash fonksiyonu kullanmaktır. Farklı hash fonksiyonları farklı özelliklere sahiptir ve farklı seviyelerde bilgi kaybına neden olabilir. Örneğin, yüksek rastgelelik derecesine sahip bir hash fonksiyonu genellikle düşük rastgelelik derecesine sahip bir hash fonksiyonundan daha az bilgi kaybına neden olacaktır.

  3. Birden fazla hash fonksiyonu kullanın: Birden fazla hash fonksiyonu kullanarak ve sonuçları birleştirerek de bilgi kaybını en aza indirebilirsiniz. Her bir hash fonksiyonu verilerin farklı yönlerini yakalayacağından, bu orijinal verilerin daha eksiksiz bir temsilini yakalamaya yardımcı olabilir.

Min-hash kullanırken bilgi kaybını tamamen ortadan kaldırmanın mümkün olmayabileceğini unutmamak önemlidir, çünkü bu tam bir temsilden ziyade iki set arasındaki benzerliğin bir yaklaşımıdır. Yaklaşımın doğruluğu sabit boyutlu vektörün boyutuna ve kullanılan özel hash fonksiyonuna bağlı olacaktır.


Hisse senedi fiyat getirilerinin değişken boyutlu bir vektörünü sabit boyutlu bir vektöre hash etmek için Python'da min-hash'i nasıl kullanabileceğinize dair bir örnek:

from datasketch import MinHash

# Define the size of the fixed size vector
num_hashes = 100

# Create a MinHash object
mh = MinHash(num_hashes=num_hashes)

# Hash the stock price returns data to the fixed size vector
for price_return in stock_price_returns:
    mh.update(str(price_return).encode('utf8'))

# The resulting fixed size vector is stored in the MinHash object
fixed_size_vector = mh.hashvalues


Burada, hisse senedi fiyat getirilerinin değişken boyutlu bir vektörünü sabit boyutlu bir vektöre hash etmek için R'de min-hash'i nasıl kullanabileceğinize dair bir örnek verilmiştir:


# Install the 'minhash' package if it is not already installed
install.packages("minhash")

# Load the 'minhash' package
library(minhash)

# Define the size of the fixed size vector
num_hashes = 100

# Create a MinHash object
mh = minhash(num_hashes)

# Hash the stock price returns data to the fixed size vector
for (price_return in stock_price_returns) {
    mh = update(mh, price_return)
}

# The resulting fixed size vector is stored in the MinHash object
fixed_size_vector = getValues(mh)


Bu örneklerin, hisse senedi fiyat getirilerinin değişken boyutlu bir vektörünü sabit boyutlu bir vektöre hash etmek için min-hash kullanmanın temel sürecini göstermeyi amaçladığını belirtmek önemlidir. Gerçek bir uygulamada, kodu özel ihtiyaçlarınıza ve verilerinize uyacak şekilde değiştirmeniz gerekebilir.

 

- yani min-hash en iyi yol mu?

Min-hash, iki küme arasındaki benzerliği, ortak olan eleman sayısını hesaplayarak yaklaşık olarak belirlemeye yarayan bir yöntemdir. Hisse senedi fiyat getirilerinin değişken boyutlu bir vektörünü sabit boyutlu bir vektöre hash etmek için kullanılabilir, ancak bilgi kaybına neden olabileceğinden bunu yapmanın en iyi yolu olmayabilir.

Hisse senedi fiyat getirileri verilerini hash etmek için kullanabileceğiniz birçok farklı yaklaşım vardır ve en iyi yaklaşım, verilerin belirli özelliklerine ve uygulamanızın gereksinimlerine bağlı olacaktır. Göz önünde bulundurabileceğiniz diğer bazı yaklaşımlar şunlardır:

  1. Özellik karma: Özellik karma, kategorik veya metinsel verileri makine öğrenimi algoritmalarında kullanılabilecek sayısal bir gösterime dönüştürmek için kullanılan bir tekniktir. Hisse senedi fiyat getirileri verilerini sabit boyutlu bir vektöre hash etmek için özellik hashing'i kullanabilirsiniz.

  2. Yerelliğe duyarlı karma (LSH): LSH, bir veri kümesindeki benzer öğeleri yaklaşık olarak tanımlamak için kullanılan bir tekniktir. Hisse senedi fiyat getirisi verilerini sabit boyutlu bir vektöre hash etmek ve ardından hash değerlerine göre benzer öğeleri tanımlamak için LSH kullanabilirsiniz.

  3. Diğer teknikler: Hisse senedi fiyat getirileri verilerini hash etmek için kullanabileceğiniz, rastgele permütasyon veya doğrusal uyumlu üreteç kullanmak gibi başka birçok teknik vardır. Seçeceğiniz özel teknik, verilerin özelliklerine ve uygulamanızın gereksinimlerine bağlı olacaktır.

Bir hashing tekniği seçerken doğruluk ve verimlilik arasındaki dengeleri dikkatle değerlendirmek önemlidir. Bazı teknikler daha doğru ancak daha az verimli olabilirken, diğerleri daha verimli ancak daha az doğru olabilir. Uygulamanızın ihtiyaçlarını karşılayan doğru dengeyi bulmanız gerekecektir.

 
mytarmailS #:
Alexei, kafirleri dinlemeyi bırak.

Giriş başına farklı sayıda işarete ihtiyacınız varsa.
Bu sık örüntü madenciliğidir - bir öğretmen de dahil olmak üzere farklı varyasyonlarda ilişkisel kuralların aranması.


==============
Neden farklı sayıda özellik alan algoritmalar OLMADIĞINI söyledim?
Çünkü kaputun altındaki bu tür algoritmalarda bile veri, sıcak bir kodlama formatında seyrek bir matristir.
Girdi, daha yumuşak bir formatta olsa da, hala özelliklerin tüm isimleridir.
=======================
Ayrıca, özellik sayısı belirtilmemiştir
İşaret sayısı nispeten az 10-20k ise, zayıf bir dizüstü bilgisayarda bile sorunsuz bir şekilde xgboost'a yükleyebilirsiniz.

İlişkisel kuralları sizinle daha önce tartışmıştık. Benim için bunlar, fiyat ve SB arasındaki farkları araştırmaya yönelik genel yaklaşımıma pek uymuyor. Sorun şu ki, SB kurallar varmış gibi göstermekte oldukça başarılı - tek sorun bunların farklı sitelerde farklı olması.

 
Aleksey Nikolayev #:

İlişkisel kuralları sizinle daha önce tartışmıştım. Benim için, fiyat ve SB arasındaki farkları aramaya yönelik genel yaklaşımıma pek uymuyorlar. Sorun şu ki, SB kuralların varmış gibi görünmesini sağlamakta oldukça başarılı - tek sorun farklı sitelerde farklı olmaları.

O zaman artırın, ancak verileri istediğiniz gibi hazırlamak için (yapı olmadan) bunu nasıl düzgün bir şekilde yapacağınızı anlamanız gerekir, bunun için ilişkisel kurallar için verilerin nasıl hazırlanacağını incelemelisiniz.
 

İyi iş, hatta pencerenin uzunluğunu değiştirme bağlamında kendim için ilginç bir şey aldım.

Başka sorularınız varsa lütfen taslak olarak çizin, yeni yıldan sonra size soracağım.