Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 1923

 
mytarmailS:

Да, только я использую пакет "umap"

В этом нет смысла. Уменьшать размерность в пространство,  которое соответствует Вашей целевой - вот цель преобразования. Кроме того это единственные два пакета которые предоставляют возможность обрабатывать новые данные(valid/test)  а не только train как tSNE. 

После трансформации кластеризация с dbscan. Полученные кластеры как дополнительный предиктор к внедряемым переменным. Тут возможны варианты.

Удачи

 
mytarmailS:

Да, только я использую пакет "umap"

а само название метода какое? Что это вообще? на питоне посмотрел бы

какая-то жизнь амёб и клеток на картинках

фокусник показывал подобные преобразования, кста. У него там точки то растягивались, то сжимались в эллипсы, что-то такое помню

 
Maxim Dmitrievsky:

а само название метода какое? Что это вообще? на питоне посмотрел бы

какая-то жизнь амёб и клеток на картинках

 В Python одноименный пакет umap.

 
Vladimir Perervenko:

 В Python одноименный пакет umap.

спасибо, посмотрю

 
Vladimir Perervenko:

 Уменьшать размерность в пространство,  которое соответствует Вашей целевой - вот цель преобразования. 

Дык , как это сделать, откуда взять это соответствие целевой ? и вообще что вы вкладываете в это понятие?

Vladimir Perervenko:

 Кроме того это единственные два пакета которые предоставляют возможность обрабатывать новые данные(valid/test)  а не только train как tSNE. 

Знаю, потому и выбрал именно этот пакет

Vladimir Perervenko:

После трансформации кластеризация с dbscan. Полученные кластеры как дополнительный предиктор к внедряемым переменным. Тут возможны варианты.

Знаю)) писал же на прошлой странице про   dbscan )

Но с ним тоже будет морока, по первых с кластерами все равно надо будет играться во вторых у него дико тормознутое распознавание новых данных.

Я где то читал - толи пакет планировали делать толи в р-студио фишка должна была появиться  - что кластера вручную можно будет выделять , прямо мышкой , ничего не слышали об этом?

 
Maxim Dmitrievsky:

спасибо, посмотрю

Я его как раз юзаю, вернее его обертку в R

 
mytarmailS:

Дык , как это сделать, откуда взять это соответствие целевой ? и вообще что вы вкладываете в это понятие?

Знаю, потому и выбрал именно этот пакет

Знаю)) писал же на прошлой странице про   dbscan )

Но с ним тоже будет морока, по первых с кластерами все равно надо будет играться во вторых у него дико тормознутое распознавание новых данных.

Я где то читал - толи пакет планировали делать толи в р-студио фишка должна была появиться  - что кластера вручную можно будет выделять , прямо мышкой , ничего не слышали об этом?

По порядку:

Устанавливаете константы:

#---const-------------------------------
evalq({
  n_n <- 15L
  min_d <- 0.1
  n_c <- 3L
  metr <- "euclidean" #"euclidean" (the default) "cosine" "manhattan"
  lr <- 0.75
  scale <- "none" 
  #               "none"
  #               "scale" or TRUE ,
  #               "maxabs" Center each column to mean 0, then divide each element by the maximum 
  #                        absolute value over the entire matrix.
  #               "range"
  init <- "spectral" # "spectral" # "normlaplacian". # "random".
  # "lvrandom". # "laplacian".  # "pca". # "spca".
}, env)

Для обучения с учителем нам просто нужно добавить в формулу целевую y и указать, что нужно вернуть модель (ret_model = TRUE).

#-----superveised------------------
evalq({
  y <- factor(denoiseX1pretrain$origin$y)
  origin.sumap <- umap(X = x, y = y, approx_pow = TRUE, n_neighbors = n_n, 
                       learning_rate = lr, min_dist = min_d, n_components = n_c, ret_model = TRUE,
                       metric = metr, init = init, n_threads = 4L, scale = scale)
}, env)

Имея модель мы можем преобразовать  в трехмерные и остальные поднаборы train/test/test1 группы данных origin. Ниже код

#---train--------------------------------
evalq({
  set.seed(1337)
  umap_transform(X = X1$train$x, model = origin.sumap, n_threads = 4L, 
                 verbose = TRUE) -> train.sumap
}, env)
#---test--------------------------------
evalq({
  set.seed(1337)
  umap_transform(X = X1$test$x, model = origin.sumap, n_threads = 4L, 
                 verbose = TRUE) -> test.sumap
}, env)
#---test1-------------------------------
evalq({
  set.seed(1337)
  umap_transform(X = X1$test1$x, model = origin.sumap, n_threads = 4L, 
                 verbose = TRUE) -> test1.sumap
}, env)

Подставляете свои x/y и получаете в трехмерном пространстве данные разделенные на две группы. Взял из недописанной статьи. Где то и рисунки есть, сейчас не могу найти. Если нужно завтра поищу. Но думаю Вы свои сможете получить.

Удачи

 

Нашел

resdimX1_origin

 
mytarmailS:


Знаю)) писал же на прошлой странице про   dbscan )

Но с ним тоже будет морока, по первых с кластерами все равно надо будет играться во вторых у него дико тормознутое распознавание новых данных.

Я где то читал - толи пакет планировали делать толи в р-студио фишка должна была появиться  - что кластера вручную можно будет выделять , прямо мышкой , ничего не слышали об этом?

Не нужно выдумывать. Это самая быстрая реализация hdbscan в R. И играться не нужно, нужно разобраться с параметрами и использовать. Где то читал, один мужик сказал - это не для МО.

Удачи

 

Те же данные но целевая с тремя классами

resdimX1_relabeled