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

 
Vladimir Perervenko:

Я не получил хороших результатов. Нужны предикторы (в отличие от других моделей) сильно коррелированные.

Не нашел таких, которые давали бы приемлемый результат. Правда экспериментировал недолго. Времени в обрез. Вы попробуйте. В примере есть полностью работоспособный код.

Удачи  

ПС. Если будете пробовать, в матрицах, подаваемых на вход, предикторы должны быть строками не столбцами.

 Спасибо но я  к сожалению сейчас занимаюсь совсем другим, в ближайшее время точно не смогу посидеть, вроди напоролся на рабочую методу, но все пока сыро, исследования только начинаются и чувствую затянуться на долго, работы очень очень  много... 

 

Еще такой вопрос, только не бейте)  Возможно ли использовать стандартные пакеты по МО, форесты, сети, вектора, свертки и.т.п. в обучении без учителя?

Я так подозреваю что можно, но как разобраться не смог

вот например в форесте

 

data("iris")

library(randomForest)

label <- factor(iris$Species)
set <- iris[,-ncol(iris)]


model <- randomForest(x = set,data = set , mtry=4, ntree=20)

 вроди обучил без учителя

если верить гугл переводчику ----> классификацыя без учителя - unsupervised classification

> model

Call:
randomForest(x = set, ntree = 20, mtry = 4, data = set)
               Type of random forest: unsupervised
                     Number of trees: 20
No. of variables tried at each split: 4

но как теперь распознавать??? ))

predict(model , set[1,])



Error in predict.randomForest(model, set[1, ]) :
  No forest component in the object


Можете как то прояснить мне это все дело? 

 
mytarmailS:

 Спасибо но я  к сожалению сейчас занимаюсь совсем другим, в ближайшее время точно не смогу посидеть, вроди напоролся на рабочую методу, но все пока сыро, исследования только начинаются и чувствую затянуться на долго, работы очень очень  много... 

 

Еще такой вопрос, только не бейте)  Возможно ли использовать стандартные пакеты по МО, форесты, сети, вектора, свертки и.т.п. в обучении без учителя?

Я так подозреваю что можно, но как разобраться не смог

вот например в форесте

 

data("iris")

library(randomForest)

label <- factor(iris$Species)
set <- iris[,-ncol(iris)]


model <- randomForest(x = set,data = set , mtry=4, ntree=20)

 вроди обучил без учителя

если верить гугл переводчику ----> классификацыя без учителя - unsupervised classification

> model

Call:
randomForest(x = set, ntree = 20, mtry = 4, data = set)
               Type of random forest: unsupervised
                     Number of trees: 20
No. of variables tried at each split: 4

но как теперь распознавать??? ))

predict(model , set[1,])



Error in predict.randomForest(model, set[1, ]) :
  No forest component in the object


Можете как то прояснить мне это все дело? 

================================================

 Я настоятельно Вам рекомендую использовать "RandomUniformForest". Там много возможностей, которых нет в других "леса". Конкретно по обучению без учителя :

Unsupervised Learning with Random Uniform Forests

Description

Unsupervised mode of Random Uniform Forests is designed to provide, in all cases, clustering, dimension reduction, easy visualization, deep variable importance, relations between observations, variables and clusters. It also comes with two specific points: easy assessment (cluster analysis) and dynamic clustering, allowing to change on-the-fly any clustering shape. A three-layer engine is used: dissimilarity matrix, Multidimensional Scaling (MDS) or Spectral decomposition, and k-means or hierarchical clustering. The unsupervised mode does not require the number of clusters to be known, thanks to the gap statistic, and inherits of main algorithmic properties of the supervised mode, allowing (almost) any type of variable. 

Удачи 

 
Vladimir Perervenko:

Да это так, вопрос общий, можно ли обучать без учителя все эти популярные пакеты по МО   - randomforest , nnet , svm ......  итп

форест, просто взял для примера...

А вообще то я хотел бы обучить без учителя именно сверточную сеть

 
mytarmailS:

Да это так, вопрос общий, можно ли обучать без учителя все эти популярные пакеты по МО   - randomforest , nnet , svm ......  итп

форест, просто взял для примера...

А вообще то я хотел бы обучить без учителя именно сверточную сеть

А чему Вы хотите научить ее?

В чем идея?  

Я знаю только эти модели для обучения без учителя: AutoEncoder, RBM, RF разных разновидностей, модели кластеризации. Но сверточные невозможно...

Удачи 

 
Vladimir Perervenko:

А чему Вы хотите научить ее?

В чем идея?  

Я знаю только эти модели для обучения без учителя: AutoEncoder, RBM, RF разных разновидностей, модели кластеризации. Но сверточные невозможно...

Удачи 

ну поскольку сверточная сеть может распознавать схожие паттерны  которые все же немного разные по своей форме, это ее выгодно отличает от обычных "линейных"  МО

типа фореста, обч. сетей итп...

А без учителя учить хочу потому что намного лучше сначала разбить на кластера, как бы "природным путем, по схожести" и потом сопоставлять с целевой, чем сразу обучать с целевой и как бы создавать/подгонять кластера под целевую  

Я писал про идею с кластерами, она действительно лучше работает чем любые обычные МО для моей целевки, если вы читали...

Осталась еще одна проблемка в этом всем, это то что на рынке нет абсолютно одинаковых ситуаций, те нестацыонарность, и тут я вижу пока два пути, это либо сверточная сеть либо dtw алгоритм ну или что совсем мало понятно и размазано это какая то интерполяция или екстраполяцыя, даже не знаю как она точно называеться

 Те идея в том чтобы сделать кластера более адаптивными к нестацыонарности  

 

Помогите пожалуйста разобраться...

есть как бы такой код:

#есть вектор с некими нужными событиями "999" и не нужными "0"

X <- rep(0,1000)
Y <- rep(999,100)

dat <- sample(c(X, Y))
dat
> dat
   [1]   0 999   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  [28]   0   0   0 999 999   0   0   0   0   0   0   0   0   0   0 999   0   0   0   0   0   0   0   0   0 999   0
  [55]   0   0   0   0 999   0   0   0   0   0 999   0   0   0   0   0 999   0   0   0   0   0   0   0   0   0   0
  [82]   0   0   0   0   0   0   0   0 999   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
[109]   0   0   0   0   0   0   0   0 999   0   0   0 999   0   0   0   0   0   0   0   0   0   0   0   0   0   0
[136]   0   0   0   0   0   0   0 999   0   0   0   0   0 999   0 999   0   0   0   0   0   0   0   0   0   0   0

 

#///в каждой итерации цыкла я хочу видеть последние три нуждые события те когда было "999"

for(i in 101:length(dat)){
    
      idx <- 1:i
      
                  s1 <- dat[idx]
                  s2 <- which(s1!=0)  # s2 - получаем индексы нужного события те когда s1 было не ноль
                  s3 <- tail(s2,3)    # оставляем три поледних индекса
                  
                  print(  dat[s3]   )
                  
}

 

[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999
[1] 999 999 999

 

Все хорошо, все работает, но есть проблема в строчке

 

idx <- 1:i

 на каждой итерации вектор idx  увеличивается, и если данных много то код становиться дико тормознутым естественно и чем дальше тем больше...

Я решил проблему просто, просто на каждой итерации будет браться только последние 100 значений вектора а не весь

idx <- (i-100):i

for(i in 101:length(dat)){
    

      idx <- (i-100):i # последние 100 значени вместо idx <- 1:i
      
                  s1 <- dat[idx]
                  s2 <- which(s1!=0)  # s2 - получаем индексы нужного события те когда s1 было не ноль
                  s3 <- tail(s2,3)    # оставляем три поледних индекса
                  
                  print(  dat[s3]   )
                  
}

 а вот на выходе такого кода уже какая то лажа

[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 0 0 0
[1] 999   0   0
[1] 0 0 0
[1]   0   0 999
[1] 999   0   0
[1] 0 0 0
[1] 0 0 0

что за хрень? все же вроди верно, баг какой что ли?
 

 
озадачил? :),  видимо..
 

mytarmailS:

 


что за хрень? все же вроди верно, баг какой что ли?

Это называется "исподнее", вы как будто беспардонно, исподним тычите в лица дам и господ, а это не очень нравится окружающим. Исподнее желательно скрывать. Вы видели чтобы например Николай Косицын или Решетов, демонстрировал исподнее?
 
pantural:

На самом деле это называется "есть баг, но нету примера как его воспроизвести". Нужна особым образом сфорированная таблица с более чем 100 колонками, и тогда что-то с ней пойдёт не так. А для примера дан маленький кусок таблицы на котором ничего не проверить, да ещё и текстом а не RData файлом. 

 

Чисто наугад - я думаю ошибка в индексах. Значения в s3 всегда будут от 1 до 100, независимо от начального индекса i. 
Если вы смещаете s1 на (i-100)-1 относительно начала таблицы dat, то это смещение нужно учитывать когда будете обращаться опять к dat с новыми полученными индексами. Последняя строка должна быть print(dat[i-101+s3]). Может быть не 101 а 100. Или 102. Где-то в тех числах :)

 

pantural:
Это называется "исподнее", вы как будто беспардонно, исподним тычите в лица дам и господ, а это не очень нравится окружающим. Исподнее желательно скрывать. Вы видели чтобы например Николай Косицын или Решетов, демонстрировал исподнее?

======================== 

Может у Вас это и называется "исподним", а в R сообществе принято задавая вопрос приводить воспроизводимый код. И это правильно. Рассказы без приведения кода - пустые слова. Цель этой ветки обучение на примерах МО.

Вы чего за всех окружающих расписываетесь?  Не нужно устанавливать правила, Вас никто на это не уполномочивал.

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

 

 

Причина обращения: