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

 
mytarmailS:

)))))) ну переписывай все алгоритмы с Р в мкл  и тогда получишь все преобразования в правилах в мкл ))

Понял, что этот тип кластеризации не создают правил, способных воспроизвести результат без повторения кластеризации. А кластеризация слишком медленна. Значит надо правила создать через построение дерева, которая будет делить результаты кластеризации на соответствующие классы по каким то там признакам.

Значит остается вопрос - как сохранить в csv принадлежность строки к каждому классу?


Хотя вот странно, почему нельзя тупо продолжить кластеризацию с уже имеющимися данными и определить новую строку в один из классов, или можно?

 
Замаялся - понимаю, что можно сохранить карту кластеризации и как то продолжить работу, но не пойму как. Нашел зато книжку по R.
Классификация, регрессия и другие алгоритмы Data Mining с использованием R
  • Шитиков В. К., Мастицкий С. Э.
  • ranalytics.github.io
Описана широкая совокупность методов построения статистических моделей классификации и регрессии для откликов, измеренных в альтернативной, категориальной и метрической шкалах. Подробно рассматриваются деревья решений, машины опорных векторов с различными разделяющими поверхностями, нелинейные формы дискриминантного анализа, искусственные...
 
Вот что я нашел тут

1. Не сразу понятно, как бороться с kmeans объекты. Самое простое, что нужно сделать, это прикрепить его к вашему фрейму данных:
 k = kmeans(data, centers = 7)
 data = k$cluster
Теперь у вас есть номер кластера в виде столбца в data.frame. Сохраните, однако вы бы сохранить data.frame.

2. Изучите раздел Значение help(kmeans), Центры скажут вам, где находится центр среднего. Для входящих данных вычислите, к какому центру он ближе всего. Пример:

data(mtcars)
mt.k <- kmeans(mtcars, centers = 4)
mt.k$centers

И я не понимаю, как закатать в конкретный столбец результаты?

k означает сохранение результатов кластеризации для последующего использования
k означает сохранение результатов кластеризации для последующего использования
  • 2015.03.13
  • Soumajit 13 мар '15 в 14:55 2015-03-13 14:55
  • stackru.com
Я изучаю r среду программирования для выполнения кластерного анализа моих тестовых данных. Для тестирования я использую набор данных из одного столбца со следующей диаграммой рассеяния и гистограммой, построенной по отношению к индексу значений. Из данных я чувствую, что значения могут быть разделены на 7 кластеров. И когда я использую Функция...
 

На этой картинке те же предикторы, что и ранее, но размер выборки иной, а главное добавлены новые предикторы.

И вот как это интерпретировать - склонность к переобучению?

 

изящно подгоню любые кривые при помощи кластеризации. Обращайтесь

с какого ляда столь огрубленный алгоритм начинает лить на новых данных почти сразу же - ума не приложу

пеняю на переобучающееся дерево. Хочу заюзать буста, но быстро его на mql не перенести

 

Пхах.. вот и ответ

если обучить модель за один период времени, а потом посмотреть акурас на данных за другой (вновь кластеризованный), то для дерева будет:

TRAIN DATA:  1.0   0.8541666666666666
NEW DATA:  0.18323586744639375 Fuuuuuuu

трэйн это обучающий датасет + валидационный

нью дата это вообще новые данные на новых кластерах. Хоть дерево неплохо сработало на валидационном, но на новых фэйл.


Смотрим катбуст на тех же самых данных:

TRAIN DATA:  0.9304589707927677   0.8916666666666667
NEW DATA:  0.8528265107212476

чтолол? такая разница?

не сразу поймешь в чем прикол, пока все поэтапно не проверишь

правильно я пенял на дерево. Думал, что справляется с такой простой задачей, но нет.

парсим катбуст...

 
Maxim Dmitrievsky:

Пхах.. вот и ответ

если обучить модель за один период времени, а потом посмотреть акурас на данных за другой (вновь кластеризованный), то для дерева будет:

трэйн это обучающий датасет + валидационный

нью дата это вообще новые данные на новых кластерах. Хоть дерево неплохо сработало на валидационном, но на новых фэйл.


Смотрим катбуст на тех же самых данных:

чтолол? такая разница? парсим катбуст...

не сразу помешь в чем прикол, пока все поэтапно не проверишь

правильно я пенял на дерево
Ну давай теперь картинки горок. Кстати, как там в горах? Где был то?
 
Ilnur Khasanov:
Ну давай теперь картинки горок. Кстати, как там в горах? Где был то?

Алтай.. но я не поехал в посл. момент, перехотел )

кстати, ты в плюсах шаришь?

 
Maxim Dmitrievsky:

Алтай.. но я не поехал в посл. момент, перехотел )

кстати, ты в плюсах шаришь?

Могу поделиться кодом для парсинга моделей Катбуста, только для непрерывных переменных. Чтение C++ кода, преобразование в массивы MQL и выполнение. Не могу сказать что при всех возможных параметрах будет работать, делал под конкретный формат.
 
Aliaksandr Hryshyn:
Могу поделиться кодом для парсинга моделей Катбуста, только для непрерывных переменных. Чтение C++ кода, преобразование в массивы MQL и выполнение. Не могу сказать что при всех возможных параметрах будет работать, делал под конкретный формат.

а на чем парсинг? у меня на питоне все

там в таком формате выплевывает. Бинарный Классификатор

#include <string>
#include <vector>

/* Model data */
static const struct CatboostModel {
    unsigned int FloatFeatureCount = 24;
    unsigned int BinaryFeatureCount = 149;
    unsigned int TreeCount = 38;
    unsigned int TreeDepth[38] = {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};
    unsigned int TreeSplits[152] = {111, 141, 18, 122, 100, 119, 14, 81, 123, 46, 70, 33, 137, 63, 95, 12, 136, 61, 56, 27, 135, 98, 78, 44, 138, 80, 147, 36, 142, 125, 65, 92, 94, 55, 77, 112, 113, 120, 58, 17, 133, 35, 16, 71, 130, 117, 76, 68, 103, 99, 54, 29, 110, 64, 41, 3, 116, 140, 106, 88, 127, 87, 118, 69, 128, 105, 8, 45, 148, 79, 121, 109, 102, 124, 62, 131, 146, 66, 5, 104, 86, 139, 93, 11, 20, 67, 4, 89, 59, 143, 51, 32, 30, 144, 42, 53, 2, 40, 19, 25, 90, 115, 50, 75, 7, 129, 82, 73, 79, 24, 49, 0, 114, 38, 97, 31, 37, 72, 126, 107, 47, 96, 43, 23, 22, 34, 26, 15, 86, 10, 28, 84, 39, 74, 9, 57, 145, 83, 132, 134, 52, 101, 108, 21, 126, 91, 1, 48, 13, 60, 85, 6};
    unsigned int BorderCounts[24] = {0, 2, 7, 5, 5, 2, 5, 6, 3, 4, 6, 2, 9, 8, 6, 9, 7, 5, 7, 6, 5, 8, 8, 24};
    float Borders[149] = {-0.000455000001f, -0.000224999996f, -0.00365500012f, 0.000404999999f, 0.000615000026f, 0.000675000018f, 0.00104500004f, 0.00156f, 0.00159500004f, -0.00115499995f, -0.000969999994f, -0.000215000007f, -1.49999996e-05f, 0.000854999991f, -0.00139999995f, -6.50000002e-05f, 0.000375000003f, 0.000615000026f, 0.000905000023f, 0.000555000035f, 0.000864999951f, -0.000505000004f, -0.000364999985f, 0.000264999981f, 0.000385000021f, 0.001085f, -0.00156500004f, -0.000914999982f, -0.000415000017f, -7.50000036e-05f, 0.000705000013f, 0.000864999951f, -4.99999987e-06f, 0.000224999996f, 0.000274999999f, -0.00166499999f, -0.00149499997f, -0.000364999985f, 0.0014500001f, -0.00346500007f, -0.00191999995f, -0.00103499996f, 0.000224999996f, 0.00164999999f, 0.00318f, -0.00142500002f, -0.00111499999f, -0.00681000017f, -0.00107500004f, 0.000104999999f, 0.000185000012f, 0.000505000004f, 0.000564999995f, 0.00059499999f, 0.00116500002f, 0.00246499991f, -0.00215499988f, -0.0020349999f, 0.000155000002f, 0.00059499999f, 0.000725000049f, 0.00143499998f, 0.00159500004f, 0.00461499998f, -0.00113500003f, -5.49999968e-05f, 6.50000002e-05f, 7.50000036e-05f, 0.000735000009f, 0.00431500003f, -0.000439999974f, -0.000224999996f, -0.000155000002f, -0.000135000009f, 0.000325000001f, 0.000534999999f, 0.000714999973f, 0.001605f, 0.0020349999f, -0.00679500028f, -0.00156500004f, -0.00130999996f, -0.000815000036f, -0.000484999997f, 0.000274999999f, 0.00126500009f, -0.00630000001f, -0.000965000014f, -0.000914999982f, 0.000944999978f, 0.001085f, -0.00104500004f, -0.000570000033f, -0.000135000009f, 0.000415000017f, 0.000774999964f, 0.00129000004f, 0.00136499992f, -0.00214500003f, -0.00078500004f, 0.000564999995f, 0.000969999994f, 0.00129500008f, 0.00171500002f, -0.00109499996f, -0.000665f, -0.000505000004f, -0.000455000001f, 0.00092000002f, -0.00078500004f, -0.00033000001f, 0.000375000003f, 0.000754999986f, 0.000944999978f, 0.000974999974f, 0.00135000004f, 0.00179500005f, -0.000735000009f, -0.000195000001f, -0.000140000004f, -4.50000007e-05f, 2.49999994e-05f, 0.000549999997f, 0.000729999971f, 0.00175000005f, -0.000645000022f, -0.000404999999f, -0.000390000001f, -0.00033000001f, -0.000315000012f, -0.000204999989f, -0.000195000001f, 4.99999987e-05f, 6.50000002e-05f, 0.000109999994f, 0.000230000005f, 0.000245000003f, 0.000354999996f, 0.00046499999f, 0.000484999997f, 0.000495000044f, 0.00059499999f, 0.000684999977f, 0.000705000013f, 0.000725000049f, 0.00109999999f, 0.00122500001f, 0.00124499993f, 0.00194999995f, };

    /* Aggregated array of leaf values for trees. Each tree is represented by a separate line: */
    double LeafValues[608] = {
        0.2730029119914884, 0.03364653273046463, -0.2371262400839919, 0.1081843550866285, 0.1343627920272425, -0.1126874256586927, -0.1126874256586927, -0.1126874256586927, -0.06059264820464742, 0.06930028482667829, 0, -0.249182516740322, 0, -0.04043442721784622, 0.1126874256586928, -0.246778769760217,
        0.3055616697384914, 0, 0, 0, 0.3295134099067072, 0, -0.001400906528597944, 0.1109887188810945, 0.3268369286843394, 0.09915101998784448, 0.1058842186334935, -0.2170923208654514, 0.2805477815282972, 0.1585452078030638, 0.04581636331023499, -0.1482988821054673,
        0.2661001303798985, 0, 0.2465781759237509, -0.1025474154359036, 0.1236081969018748, -0.1513185903680103, 0.09970504556623555, -0.1329324554655258, 0.1311330854183022, 0, 0.1102178581205619, -0.09318782033023576, 0, 0, 0.0984009666714989, -0.2078721521946149,
        0.2318376125278687, -0.1062335532728426, 0, 0, 0.08412564157842428, -0.1469343266107289, 0, -0.08357104102221358, 0.1653044215102119, -0.03314292702875558, 0, 0, 0.003358906412990077, -0.1912230767439488, 0, -0.2522267340231065,
        0.1973025375909275, 0, 0, 0, 0.4228820616711522, -0.07638314839084562, 0, 0, 0.2694211287720111, 0, 0, 0, 0.1652145942168661, -0.08206648374492893, -0.1450852254716266, -0.1363614260665522,
        0.2270555010525044, 0, 0.1627207525378816, -0.06377453863892701, 0, 0, -0.1357966649842286, -0.2427437659214983, 0, 0, 0, 0, 0, 0, 0, -0.1803912820573122,
        0.1804444671623995, -0.1017902080898772, 0.2133898509109472, 0.2517605145878034, 0, 0, 0, 0.0667661734515297, 0.2610915548565391, 0, 0.1052820435018607, -0.04560350655907942, 0, 0, 0, -0.3270645727235584,
        0.3575664582748267, 0, -0.0134804607394401, -0.04992725827315483, 0.2020647226798946, 0, -0.03385866654059267, 0, 0.2644495544004545, 0, 0.05182748809759461, -0.1768682974102572, 0.2407016500831285, 0, 0.04550057548317996, -0.119019763974849,
        0.08658245310355768, -0.02639731363946828, 0, 0, -0.07937732361985407, 0.2547371055272361, 0, 0, 0.02587599274452583, -0.05393875649408716, 0, 0, 0, -0.1657068825017175, 0, -0.2049254584747038,
        0.1440498437609123, 0.1101736004819604, 0.005464554800258488, -0.03812379875242829, 0.1819257725985174, 0, 0.02309394186822163, -0.08799582858720537, 0.08924300136100559, 0, -0.1587820248277704, 0, 0.07685524153284377, 0, 0.03664203213434057, -0.1531993322169632,
        0.09806057100343098, -0.09888524364037948, 0.2135150121698442, -0.09009400810853242, 0.07220208574561482, 0, 0.06638832682433267, -0.08176789304081045, 0.0580997781754348, 0.2757911650361233, 0.2520388352390843, -0.03558969703545899, 0, 0, 0.05616828900715019, -0.05996334853624528,
        0.3034312237500126, -0.3295604473826144, 0.1887070939415764, -0.01674053821735176, 0.04203126063490011, 0, 0.06936231294655706, -0.04128791044025015, 0, 0, 0.1230751670630003, -0.02722926856756647, 0.03326065080614352, 0, 0.06968005579997801, -0.05689069395020619,
        0.1144715475069234, 0, 0.01532939962304299, -0.09842006335636103, 0, 0, 0.3532831730583329, -0.1424529047285753, 0.1130693244873004, 0, -0.001413815681729, -0.1730902495689088, 0, 0, -0.003744815582707896, -0.2340067817777089,
        0.0582716295838749, 0.05887691806098397, 0.1830039055150205, 0.1275695040047543, 0.2265370556123239, 0.05865002066522316, 0.1412030624760486, -0.04465374880604451, 0.1016168407643287, -0.1696982846816441, 0.0168802138361802, -0.09464076746916356, 0.118358865381315, 0.07766416051208853, -0.004086300252646373, 0.01145464025038506,
        0.09893204118662431, 0, 0, 0, -0.1771744077440305, 0, -0.08956662944160931, 0, 0.06459969382272165, 0, -0.09920331948638744, 0, 0.06208790080353844, -0.06391545778445595, -0.03815083591344838, -0.193220691727352,
        0.2084212418556134, -0.2711170554066691, 0.3287662064308552, 0.04618819791309881, 0.02295062367871115, 0.06903818051790414, 0.06785880462261525, -0.01900550327916934, 0, 0, 0, 0, 0, 0, 0, -0.1379757023193675,
        0.1277198477469503, -0.1045845285066445, 0.06646719763990752, -0.006328728989568992, 0, 0, 0, 0, 0.2991650315125301, -0.1609657699217688, 0.1807990380964121, -0.02247201152624968, 0.06039630602452812, 0, 0.07323877669092338, 0.1041619957787472,
        -0.1701607137827854, 0, 0.08119342965694411, 0, 0, 0, 0, 0, 0, 0, 0.02263621203523299, 0, 0, 0, 0.001461819609651068, -0.3310861822552173,
        0.1708582471998724, 0, 0, 0, 0, -0.08085455495800464, 0, 0, -0.02242709602120458, -0.01626809043535743, -0.08378843901194441, -0.1314392215326333, 0.1670789581203374, -0.03477863896354667, -0.02057073074698931, -0.132977812589716,
        0.01576995464742881, 0, 0.05788166290521737, 0, 0.1155558453551253, 0, 0, 0, 0.009175549226526487, -0.09285703148627725, 0.0170554478209398, -0.1704207949809702, -0.1872038714907393, 0, 0.1259508080010625, -0.1193817874448983,
        -0.1624959866223847, 0.03397677382231543, 0, -0.01337295631517065, 0, 0.1165918182388884, 0, -0.04635935471889165, 0, 0.012563032729967, 0, -0.1185940873147897, 0, 0.02522877097419614, 0, -0.02570582073728468,
        0.002633980002093404, 0.0725570801392979, 0.03442625637449047, 0.001037481484499863, -0.04931529849937184, -0.2105671840353762, 0.1489911821071239, 0.2202194677045035, 0.1810528663002426, 0, -0.08188791865647969, -0.124584203103273, 0, 0.03156045615123341, 0.05563213612263092, -0.04578705044003427,
        0.01165640797726642, -0.1810863968750629, -0.1089920493861719, 0.05654669419619869, 0.05301303138076533, 0.1259240607012236, -0.1400660470693698, 0.06632028296608294, 0.02792682995145789, -0.1631488652519533, -0.1472788242094764, 0.02141183442530574, 0.284237301261878, -0.001197458738763785, 0.05972702215452129, -0.0586075718789894,
        0.02490937469062505, 0.01810224834922746, -0.1092925911367815, -0.1197570696964759, 0.008067995573721135, -0.1023547665228953, -0.09294834637942173, 0.231300348695698, 0.2206397515352709, 0, -0.03762173512827768, 0, 0.102636146583814, -0.04563726647379882, -0.0298583349638738, -0.03244852061992397,
        -0.1794615195377556, 0.01921769229013687, 0, 0.01044638539736725, 0, 0.02781136690266, 0, 0.001867775508010755, 0, 0.1067785434424472, 0, -0.2932442639776253, 0, 0, 0, -0.03241018659571911,
        -0.006510415667175931, 0.07059931629954573, -0.05002576775584883, 0, 0.02889911804947202, 0.1366522086842556, 0.1459606096328157, -0.07315994927835844, -0.1602705507235337, 0.1878187897030766, -0.04626610184165392, -0.09837710067806367, 0.05397003977271773, -0.04858868406475466, 0.0649201842045576, -0.06524393947925287,
        0.1459267556026626, 0.01372089516811126, -0.1001303921089584, 0, 0.2092093674681419, 0.01930448166419142, -0.04972139914274094, 0, 0.03545870984455322, 0, -0.07554900451460518, 0, 0.2137989937258072, 0.0008411572827327659, -0.00117214692641536, 0.09422976943966678,
        -0.1641700048226127, 0.07641634809302257, 0.01054185317373139, 0.1341178828759175, 0, -0.04019050552180111, 0, 0.1596324334341981, 0, 0.006806725110812047, 0, -0.1081606151666887, 0, 0.01822843651581126, 0, -0.01720619226968497,
        0.009025394520361704, -0.00389494343189025, 0.2311406287627894, -0.083367208305538, 0.1730715229027212, -0.1114791940489316, 0, -0.1028046654549743, -0.07334162028427468, 0.04581415665697729, 0.09898474179992452, 0.1365328178250054, -0.04325183693301483, -0.002210798573244916, -0.1387629807152628, -0.08980091117790198,
        0.1201356461649662, 0.1758279743860605, 0.04350349009977216, 0.1134402521456353, -0.06435518652676646, -0.2395731049930946, 0.08878547365332778, -0.03259992777530323, 0.04016967881155449, 0.05586731905591313, 0.02231616278420573, 0.06715298880059364, -0.02931637068858008, -0.02727342673220743, 0.07981966823218006, -0.00736687454594985,
        -0.1523999096887992, 0.01066390065885025, 0, -0.007937651487390564, 0, 0.05838570541522675, 0, -0.01764599778668323, 0.00926922900423862, -0.01462296480325223, 0, -0.1231100245909153, 0, 0.2071885095206176, 0, -0.07553876970469377,
        -0.007509531863847287, -0.03821554347886918, 0, 0, 0.04539951031452136, -0.03237816844587264, 0.1489237277306394, -0.06858743023508017, 0, 0, 0, 0, -0.02197724937765806, -0.009927643925657297, 0.1075288047240592, 0.007583049665065472,
        -0.1438530341047301, 0.08211619188336085, 0.009520674504357616, -0.035052444268162, 0, -0.2209655809626173, 0, 0.02928893608785839, 0, 0.2307562221331639, 0, 0.004914926553117083, 0, -0.04531825623377965, 0, -0.01478427605905595,
        -0.07585048830556372, 0.06213280806503956, 0, 0, -0.2460691271464409, 0.1587981422466466, 0, 0, 0, -0.01873021929806146, 0, 0.1355384701582952, -0.06505176113152071, 0.006237844209643408, 0, -0.01139845636090814,
        0.03344525515709466, 0, 0.05456132700219524, 0, -0.3220774353233821, 0, 0.09756717225728033, 0, 0, 0, 0, 0, -0.05013487401906989, -0.1004156738161951, 0.01006705311047576, -0.06297947180380781,
        0.03125880796992506, 0.1620757216856216, 0.02218793960373364, 0, -0.05510500531128774, 0, -0.1305668615108228, 0.09175301826776584, -0.02241534935432258, 0.06091737602659867, 0.1959961615001555, -0.08945488952436154, -0.1297656911182584, -0.0327910998454452, 0.04823531757180094, -0.0451880914096086,
        -0.03549878434185903, -0.05751707772342768, 0.03023724321196803, -0.03668922584353116, 0.1446378062221211, -0.1558238670878492, 0.0440168187902071, -0.07335968350547692, 0.05992982442842611, 0, 0.1297678384005503, 0.001564747370113251, 0.1215230794033289, -0.237198658134785, 0.1200964187472702, -0.003075362232407817,
        0.009596007555535021, -0.02731003882847802, -0.03313751244478664, 0.2002494267502239, -0.00142054347110939, 0, -0.07476518666658544, 0.06964401248797676, -0.1775794863889658, -0.02635446781295587, -0.04719524974954924, 0.1681250432344917, 0, 0, 0.08871226782186471, -0.01856541295695367
    };
    double Scale = 1;
    double Bias = 0;
} CatboostModelStatic;

/* Model applicator */
double ApplyCatboostModel(
    const std::vector<float>& features
) {
    const struct CatboostModel& model = CatboostModelStatic;

    /* Binarise features */
    std::vector<unsigned char> binaryFeatures(model.BinaryFeatureCount);
    unsigned int binFeatureIndex = 0;
    for (unsigned int i = 0; i < model.FloatFeatureCount; ++i) {
        for(unsigned int j = 0; j < model.BorderCounts[i]; ++j) {
            binaryFeatures[binFeatureIndex] = (unsigned char)(features[i] > model.Borders[binFeatureIndex]);
            ++binFeatureIndex;
        }
    }

    /* Extract and sum values from trees */
    double result = 0.0;
    const unsigned int* treeSplitsPtr = model.TreeSplits;
    const double* leafValuesForCurrentTreePtr = model.LeafValues;
    for (unsigned int treeId = 0; treeId < model.TreeCount; ++treeId) {
        const unsigned int currentTreeDepth = model.TreeDepth[treeId];
        unsigned int index = 0;
        for (unsigned int depth = 0; depth < currentTreeDepth; ++depth) {
            index |= (binaryFeatures[treeSplitsPtr[depth]] << depth);
        }
        result += leafValuesForCurrentTreePtr[index];
        treeSplitsPtr += currentTreeDepth;
        leafValuesForCurrentTreePtr += (1 << currentTreeDepth);
    }
    return model.Scale * result + model.Bias;
}

double ApplyCatboostModel(
    const std::vector<float>& floatFeatures,
    const std::vector<std::string>&
) {
    return ApplyCatboostModel(floatFeatures);
}
Причина обращения: