Форум программистов, компьютерный форум, киберфорум
Наши страницы
Искусственный интеллект
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Reshetov
1 / 1 / 0
Регистрация: 23.12.2014
Сообщений: 21
1

JPrediction - тернарный классификатор

21.11.2016, 13:15. Просмотров 600. Ответов 14
Метки нет (Все метки)

В данный момент машинное обучение трудно назвать машинным, поскольку значительная его часть выполняется вручную, а не машинами. Основная задача, которая ставилась при проектировании jPrediction - это создание последовательных алгоритмов (предобработка данных, обучение моделей и постобработка), способных решать задачу классификации без участия человеческа.

Т.е. у jPrediction нет никаких настроек, с которыми пользователям приходится сталкиваться во многих других алгоритмах машинного обучения. Задача человека заключается лишь в том, чтобы собрать данные в виде выборки для бинарной классификации и с помощью jPrediction получить из этой выборки уже готовую для применения модель машинного обучения. Весь процесс создания обученной модели из выборки полностью автоматизирован.

1. Отсутствует настройка нейросетевой архитектуры. Соответственно архитектура динамическая.
2. Отсутствует выбор сигмоидальных функций для искусственных нейронов скрытого слоя. Сигмоидальные функции у нейронов скрытого слоя есть, но они разрывные, а не гладкие. Гладкие сигмоиды необходимы в алгоритмах обратного распространения ошибки. В jPrediction применяется прямое распространение ошибки, для которого наиболее подходящей, как показывает опыт, является разрывная сигмоидальная функция.
3. Отсутствует визуализация. Визуализация необходима в тех случаях, когда алгоритм машинного обучения не самостоятелен. Например, для SVM человек должен с помощью визуализации подобрать подходящие ядерные преобразования, чтобы алгоритм машинного обучения смог справиться с задачей. Однако, такой подход является профанацией, поскольку если подходящие ядерные преобразования подбираются вручную, то значит и задача решается не машинным обучением, а человеком. В jPrediction влияние человеческого фактора в процессе машинного обучения исключено полностью.
4. Отсутствует возможность ручного выбора значимых предикторов (что подаётся на входы нейросети). Задача человека сводится к тому, что он только подготавливает выборку для последующего обучения моделей. Подбор наиболее значимых предикторов из выборки и отсеивание наименее значимых осуществляется полностью в автоматическом режиме с помощью алгоритма шаговой классификации, который является модификацией алгоритма шаговой регрессии (Stepwise regression).
5. В jPrediction не вычисляется, а соответственно и нигде не выдаётся значение обучающей способности модели. Дело в том, что значение обучающей способности необходимо только разработчикам алгоритма в процессе его отладки. В прикладных областях подобное "знание" является совершенно бесполезным, поскольку на практике (вне выборки) приходится иметь дело только с обобщающей способностью. Суть заключается в том, что если взять многие алгоритмы машинного обучения, то выясняется, что ошибка обучающей способности, как правило, уменьшается по мере возрастания количества итераций. А ошибка обобщающей способности, как правило, имеет минимум. Как показывает опыт, минимум ошибки обобщающей способности находится в той области, при которой весовые коэффициенты нейрона выходного слоя наиболее близки (по Евклидову расстоянию в гиперпространстве признаков) к минимаксному решению. Если прервать процесс обучения в таком месте (стратегия раннего обрыва), то мы получим наилучшую обобщающую способность. Однако, в jPrediction задача была упрощена, а именно вместо целевой функции поиска минимума ошибки обучающей способности, алгоритм ищет её минимакс. Суть ещё и в том, что минимакс ошибки обучающей способности найти проще, чем глобальный минимум, поскольку его функция гладкая (если, конечно же, имеет место хотя бы один минимакс, а если их несколько, то они все равнозначны) и не имеет локальных экстремумов, т.е. таким образом достигается устойчивая сходимость к минимуму ошибки обобщающей способности.
6. Отсутствует возможность для ручной настройки выходных пороговых значений, например, с помощью ROC анализа. Во первых, оптимальные пороговые значения подбираются полностью автоматически. Во вторых, jPrediction – это не бинарный, а тернарный классификатор, т.е. при решении задач бинарной классификации он может выдать на выходе значение неопределённости (согласно троичной логики Лукасевича). Суть в том, что выборка может не содержать некоторых примеров (слепые пятна), необходимость интерпретации которых может встретиться вне выборки (в прикладных задачах). В таком случае, вместо того, чтобы выдать какой-то «утвердительный» ответ в тех областях, в которых модель не обучалась, как это делается в бинарных классификаторах, ответом будет «неопределённость», т.е. «чистосердечное» признание, в том, что модель для некоторых примеров не может дать однозначного ответа, т.е. не будет «брать ответы с потолка» и «высасывать из 21 пальца». Это позволяет избежать заведомых ошибок при принятии решений по результатам классификации в условиях неопределённости в прикладных задачах, где необходима крайняя осторожность. Например, при испытании лекарственных средств, весьма проблематично собрать испытуемых таким образом, чтобы среди них были представлены пациенты со всеми потенциальными побочными эффектами. Если во время испытаний все побочные эффекты для лекарственного средства не удастся выявить, то таковые будут выявляться уже после испытаний, что чревато нежелательными и необратимыми последствиями в области прикладной медицины. Тернарная классификация позволит поместить неизвестные ей побочные эффекты от воздействия испытанного лекарственного средства в область «неопределённости». Что, в свою очередь, увеличит вероятность избежать некоторых побочных эффектов после испытаний лекарства и обучения модели классификации в процессе применения уже испытанного средства в медицинской практике. Неопределённость на выходе классификатора послужит сигналом лечащему врачу о том, что ему необходимо рассмотреть для выявленного диагноза альтернативные лечебные методы, а не рисковать здоровьем пациентов.

В данный момент jPrediction реализован на ЯП Java (мультиплатформенность, т.е. возможность запускать в различных операционных системах) в виде приложения с графическим интерфейсом под лицензией GNU GPL v. 3 (Бесплатно и в открытых исходниках).
Дополнительная возможность, реализованная в jPrediction – это генератор кода обученных моделей для различных языков программирования. Это позволяет переносить обученные в jPrediction модели без необходимости портирования их кода в другие приложения, созданные на различных языках программирования. В текущей 14 версии кодогенератор позволяет создавать исходники обученных моделей для трёх ЯП: Java, MQ4 и MQ5. Впоследствии, по мере востребованности, также можно будет осуществить поддержку кодогенератора и для других ЯП.

Данное сообщение на этом форуме размещено для двух целей:

1. Расширить количество пользователей jPrediction
2. Привлечь дополнительных толковых разработчиков (соавторов) в проект. Причём необходимы разработчики не только владеющие Java, но и способные портировать модели с Java на другие ЯП для расширения возможностей кодогенератора.

Поддержка проекта осуществляется на моём личном сайте: yury-reshetov.com (верхнее сообщение на главной странице - наиболее свежая версия jPrediction)
0
Вложения
Тип файла: zip jPrediction_open_source_14_Release.zip (155.1 Кб, 4 просмотров)
Тип файла: pdf Reshetov_217_2.pdf (2.51 Мб, 7 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2016, 13:15
Ответы с готовыми решениями:

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

Классификатор ЕТС
Народ - может кто подскажет где достать классификатор ЕТС (Единая тарифная сетка) с привязкой к...

Классификатор адресов
возникла ситуация создать простенькую конфигурацию по учету продукции ... все как всегда (у меня...

Адресный классификатор
Здравствуйте! В программу, в справочник, закружен классификатор адресов КЛАДР. Поставлена задача...

Байесовский классификатор
Ребят,у кого-нибудь есть пример реализации байесовского классификатора для текстов???:cry:

14
Mikhaylo
205 / 192 / 24
Регистрация: 20.09.2014
Сообщений: 1,384
21.11.2016, 16:03 2
Цитата Сообщение от Reshetov Посмотреть сообщение
модель для некоторых примеров не может дать однозначного ответа, т.е. не будет «брать ответы с потолка» и «высасывать из 21 пальца»
Вы точно отражаете следующий момент? Ваш продукт высасывает из пальца оптимальные пороги, а высосать принадлежность к классу не хочет. Хм... Похоже на замену шила на мыло... Можно как-то регулировать отсутствие выдачи неопределенных ответов? Ведь они кому-то могут "испортить жизнь"... Ну то есть они могут быть неприемлемыми, понимаете?
Хотя любой интеллектуальный продукт, если он работает, должен найти свое место в этом мире.
0
Reshetov
1 / 1 / 0
Регистрация: 23.12.2014
Сообщений: 21
21.11.2016, 16:56  [ТС] 3
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Ваш продукт высасывает из пальца оптимальные пороги, а высосать принадлежность к классу не хочет.
Он в отличие от бинарных классификаторов не "умничает" и не даёт ответов в тех областях, где он заведомо некомпетентен. А он некомпетентен там, где не было соответствующих запросу примеров в обучающей выборке.

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

Недостаток бинарных классификаторов заключается в том, что они "умничают" там, где результат классификации по вероятности примерно одинаков со случайным угадыванием. Меня такое положение дел, как одного из пользователей jPrediction не устраивало в прикладных задачах (и не только меня, проблему сформулировал ранее Ян Лукасевич).

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Можно как-то регулировать отсутствие выдачи неопределенных ответов? Ведь они кому-то могут "испортить жизнь"... Ну то есть они могут быть неприемлемыми, понимаете?
Проведённые мною тесты, а также другие (на данный момент немногочисленные) пользователи jPrediction также подтвердили, что в их задачах тернарная классификация даёт более корректные результаты по сравнению с бинарной. По этой причине дальнейшее развитие проекта пошло в сторону доработки тернарной классификации, т.е. откат назад к бинарной делать не пришлось.

Поэтому, если хотите возразить по существу, а не заниматься голословным критиканством, то приведите конкретные примеры бинарной классификации, которая по обобщающей способности превосходит тернарную. А иначе, какой смысл от Ваших "вставленных трёх копеек"?
0
Mikhaylo
205 / 192 / 24
Регистрация: 20.09.2014
Сообщений: 1,384
21.11.2016, 17:06 4
Дело не в преимуществе бинарных классификаторов над тернарными. Просто заказчик может захотеть бинарный и точка. Ну нельзя говорить "не знаю" и хоть что делай.

Может какой-нибудь бинарный "доклассификатор" сделать, который неопределенные объекты доклассифицирует? Получится что-то вроде композиции классификаторов.
0
Reshetov
1 / 1 / 0
Регистрация: 23.12.2014
Сообщений: 21
21.11.2016, 17:27  [ТС] 5
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Дело не в преимуществе бинарных классификаторов над тернарными. Просто заказчик может захотеть бинарный и точка. Ну нельзя говорить "не знаю" и хоть что делай.
Причём тут заказчик? Проект опенсорсный, а не для дяди-заказчика.

Софт разрабатывался в первую очередь под собственные нужды и под конкретные задачи: алготрейдинг, а не для каких-то заказчиков или не ради "сферического коня в вакууме". И он с 2014 г., т.е. с момента выхода первой версии уже себя оправдал и окупил. Т.е. даже в донейтах не нуждается, а не только в заказчиках.

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

Если кому шибко неймётся, то кодогенератор выдаёт исходники двух бинарников из которых создан тернарник вместе с их характеристиками по результатам кроссвалидации. Т.е. если кому религия не позволяет использовать тернарник, то он может выбрать любой из двух бинарников.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Может какой-нибудь бинарный "доклассификатор" сделать, который неопределенные объекты доклассифицирует? Получится что-то вроде композиции классификаторов.
У Вас с головой всё в порядке? Как можно "доклассифицировать" то, что отсутствует в выборке, не говоря о том, как эти отсутствующие примеры потом ещё и валидировать? Алгоритм ведь на курсах телепатов не обучался.
0
Mikhaylo
205 / 192 / 24
Регистрация: 20.09.2014
Сообщений: 1,384
21.11.2016, 17:39 6
Цитата Сообщение от Reshetov Посмотреть сообщение
У Вас с головой всё в порядке? Как можно "доклассифицировать" то, что отсутствует в выборке, не говоря о том, как эти отсутствующие примеры потом ещё и валидировать? Алгоритм ведь на курсах телепатов не обучался.
Ну что Вы говорите? А что Вы понимаете под отсутствующими примерами? Примеры из контрольной выборки практически всегда отсутствуют в обучающей выборке. У предиктора должна быть эвристика, которая позволяет различить "отсутствующие" примеры от "присутствующих"... Достаточно "отключить" эту вредную эвристику и сразу все классифицируется (если конечно подобранные эвристики удачно работают в этом неопределенном пространстве).
0
Reshetov
1 / 1 / 0
Регистрация: 23.12.2014
Сообщений: 21
21.11.2016, 18:02  [ТС] 7
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Ну что Вы говорите? А что Вы понимаете под отсутствующими примерами?
Область экстраполяции.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
У предиктора должна быть эвристика, которая позволяет различить "отсутствующие" примеры от "присутствующих"...
Не должна и не обязана. Алгоритмы машинного обучения сильны только в области аппроксимации. В экстраполяции они "попадают пальцем в небо".

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

Ведь применять инструмент не по назначению (не в той области, для которой он предназначен) - заведомая глупость. Причём не только в машинном обучении. Например, попробуйте забить гвоздь кирпичом, а потом молотком. И почувствуйте разницу.

На самом то деле, тернарная классификация - это не моё изобретение. Она впервые была сформулирована В. Вапником и А. Червоненкисом для SVM. Ведь у SVM две параллельные разделяющие гиперплоскости. Дык Вапник с Червоненкисом и предложили, что если после того, как гиперплоскости удачно разделят классы в гиперпространстве на обучающей выборке, то всякий пример вне выборки, попавший между гиперплоскостями необходимо считать, как неопределённость.

Т.е. мне не пришлось ничего изобретать, а всего лишь доработать вполне здравую вышеозвученную идею. А доработка была тривиальной, т.е. вместо двух параллельных гиперплоскостей, применяемых в SVM в jPrediction используются тоже две, но не обязательно параллельные гиперплоскости. Но интерпретация аналогичная: если пример вне выборки имеет геометрическое место в гиперпространстве между двумя гиперплоскостями, то он не классифицируется, а признается неопределённым.
0
Mikhaylo
205 / 192 / 24
Регистрация: 20.09.2014
Сообщений: 1,384
21.11.2016, 18:45 8
Граница между экстраполяцией и аппроксимацией не прозрачна. Да и бог с этим. Между тем экстраполировать можно и полезно. Только вот в машинном обучении экстраполирующие алгоритмы слабо представлены... Это я так... Мысли вслух.
Все-таки попадаются задачи, в которых ответ "не знаю" не приемлем, вопрос жизни и смерти, так сказать. Не бросать же монетку, лучше какой-нибудь худобедный экстраполятор использовать.
0
Reshetov
1 / 1 / 0
Регистрация: 23.12.2014
Сообщений: 21
21.11.2016, 19:12  [ТС] 9
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Все-таки попадаются задачи, в которых ответ "не знаю" не приемлем, вопрос жизни и смерти, так сказать.
Приведите хоть один пример, дабы не прослыть голословным.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Не бросать же монетку, лучше какой-нибудь худобедный экстраполятор использовать.
Суть в том, что худобедные экстраполяторы в не строго детерминированных прикладных областях практически ничем не уступают монетке по эффективности. Но зато монетка даст фору по временным и вычислительным затратам на "обучение" худобедных экстраполяторов.

Поэтому, если кому шибко неймётся (не будем показывать пальцем, на тех, для кого это "вопрос жизни и смерти"), то никто им не запрещает: ни монетки, ни бесполезную возню с худобедными экстраполяторами (чем бы дитя не тешилось).
0
Mikhaylo
205 / 192 / 24
Регистрация: 20.09.2014
Сообщений: 1,384
21.11.2016, 19:40 10
Обучение и применение нейронной сети для прохождения игры
0
Reshetov
1 / 1 / 0
Регистрация: 23.12.2014
Сообщений: 21
21.11.2016, 20:04  [ТС] 11
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Обучение и применение нейронной сети для прохождения игры
У Вас с головой всё в порядке? Какие вопросы "жизни" и "смерти" могут быть не в прикладных областях, а в виртуальностях: играх, сказках, байках и прочей лабуде?

Вроде бы взрослый мужик, а до сих пор в сказки верит (с) Из бородатого анекдота.
0
Mikhaylo
205 / 192 / 24
Регистрация: 20.09.2014
Сообщений: 1,384
22.11.2016, 03:30 12
Ну как хотите, подобных примеров много, но Вы там в своих трейдингах... И еще отдельное словцо про нерегулируемость Вашего предиктора. Это минус, а не плюс. Для домохозяек.

Продукт имеет свою нишу. Удачи!
0
Reshetov
1 / 1 / 0
Регистрация: 23.12.2014
Сообщений: 21
22.11.2016, 12:17  [ТС] 13
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Ну как хотите, подобных примеров много
Опять занимаетесь голословщиной? Вас уже попросили привести хотя бы один пример, а Вы продолжаете с назойливостью надоедливой мухи фанатично твердить собственные фантазии, вместо того, чтобы подкрепить их какими либо фактами.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
но Вы там в своих трейдингах...
Область применения задач классификации для машинного обучения не ограничена только трейдингом. jPrediction тестировался на выборках из других прикладных областей. В интернете есть открытые репозитории, откуда можно скачать выборки для задач классификации и легко убедиться, что нет кардинальной разницы для задач из области трейдинга и задач из других областей.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
И еще отдельное словцо про нерегулируемость Вашего предиктора. Это минус, а не плюс. Для домохозяек.
Опять занимаетесь голословщиной и критиканством? В jPrediction отсутствуют ручные настройки, а не исключена регулируемость. Все регулируемые настройки нейросети выполняются в полностью автоматическом режиме. Причём автоматика справляется с этим делом ничем не хуже, чем это будет делать пользователь вручную. Т.е. это базовое достоинство jPrediction по сравнению с другим софтом машинного обучения, поскольку пользователю не надо заниматься бесполезной рутиной, т.к. вместо него всю "черновую" работу может выполнить компьютер. Задача пользователя: собрать данные и скормив их jPrediction, получить обученную нейросеть. При этом ему не надо даже знать, что находится "под капотом" и как оно там регулируется.

В противном случае пользователю пришлось бы потратить значительное время на образование, т.е. изучить принцип действия нейросетей, узнать, что представляют из себя нейроны, слои, сигмоиды и прочий функционал. Потом попробовать всё эти бесполезные для него "знания" применить на практике, чтобы убедиться, что никаких однозначных рецептов настроек и регулировок для нейросетей нет и всё это придётся подбирать методом проб и ошибок. Так какой смысл загружать голову бесполезными "знаниями" и что-то там вручную настраивать и регулировать, если метод проб и ошибок можно полностью алгоритмизировать и переложить всю "черновую" работу на компьютер?

Я сам в своё время намучался с ручными настройками нейросетей. Ведь основная масса распространённых нейропакетов требует затрат времени и внимания на предварительные настройки, перед тем как приступить к обучению нейросети. И несмотря на это ещё и не гарантирует правильности результатов (сетка может не обучиться или переобучиться). В конце концов всё это осточертело и пришлось создавать свой проект, дабы исключить всякое "рукоблудие" и весь процесс полностью автоматизировать.
0
Mikhaylo
205 / 192 / 24
Регистрация: 20.09.2014
Сообщений: 1,384
22.11.2016, 19:48 14
Если Вам удалось сделать действительно хороший предиктор без ручных регулировок, то это талант, поздравляю.
0
сахатый
36 / 16 / 4
Регистрация: 12.10.2015
Сообщений: 94
Завершенные тесты: 2
28.11.2016, 01:21 15
Цитата Сообщение от Reshetov Посмотреть сообщение
В данный момент машинное обучение трудно назвать машинным...
Неплохо, неплохо...
Хорошо только уже потому, что есть программа, а если с исходниками то вообще круть!

Идея автоматизации конфигурирования классификаторов хотя и не нова, но тем не менее не достаточно разработана и если у Вас это хорошо получилось то респект! Но нужно проверить это как то...

Ну к примеру как Ваша система справится датасетом во вложении. Какую архитектуру сети построит сама с какими настройками и какой получит скор?
0
Миниатюры
JPrediction - тернарный классификатор  
Вложения
Тип файла: rar spiral.rar (64.3 Кб, 2 просмотров)
28.11.2016, 01:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2016, 01:21

Адресный классификатор
Здравствуйте у меня возникла вот такая ситуация. Я начинающий программист 1с и начальник дал...

Байесовский классификатор
Курсовая - Байесовский классификатор. Классифицировать физический текст и математический. Все...

Нужен классификатор банков РФ
Попробовал поискать поиском по форуму но ничего не нашел. Выложите кто-нить ссылочку откуда можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru