Маленькое вступление Недавно пересматривал свои старые программы, и среди завалом нашел малую экспертную систему. Начал разбираться и вспоминать, и оказалось что когда-то в институте давали на лабораторку сделать экспертную систему на основе формул Байеса. Полез потом в Гугл, что немного вспомнить теорию, и оказалось что в Инете так много хлама и с моими мини-мозгами мне это не понять. Поэтому пошел другим путем, а именно стал разбираться что же я здесь когда то накодил. Результат этой роботы перед Вами. Если кому не интересно как работает эта система, то можете просто скачать http://dump.ru/files/n/n560107612/ эту прогу плюс исходники на Делфи. Программа задаст Вам несколько вопросо и определит с какой вероятностью Вы милиционер, програмист и дворник. Не стоит воспринимать ее всерьез. Это всего лишь демонстрация. И кстати Кез и Зако пожалуйста не нада ее критиковать, я даже не пытался ее оптимизировать Составление база знаний. Что мы хотим узнать? Будем узнавать какая машина подходит человеку. Пускай у нас человеку может нравиться такое: 1. мерседес 2. ваз Теперь придумаем вопросы, которые будем спрашивать: 1. Ты патриот? 2. Ты богат? 3. Ты любишь скорость? Теперь составим уже базу с вероятностями. Как это делаем? Берем первый вопрос. Проводи исследования, и оказывается 6 из 10 владельцев мерса сказали, что патриоты, а 9 из 10 владельцев Ваз сказали, что они патриоты. Тоесть получаем такое: В(патриот,мерседес) = 0,60 (тоесть 60 %) НВ(патриот,мерседес) = 0,40 (тоесть 40 %, получили из 10 отняли 6) В(патриот,ваз) = 0,90 НВ(патриот,ваз) = 0,10 Как это понимать? А так, к примеру: В(патриот,ваз) = 0,90 - вероятность того, что водитель ваза скажет что он патриот составляет 90 % НВ(патриот,ваз)=0,10 – вероятность того, что видитель ваза скажет что он патриот составляет 10 % Такую же базу составляем для 2 и 3 вопроса. В(багат,мерседес) = 0,80 НВ(багат,мерседес) = 0,20 В(багат,ваз) = 0,50 НВ(багат,ваз) = 0,50 В(скорость,мерседес) = 0,90 НВ(скорость,мерседес) = 0,10 В(скорость,ваз) = 0,20 НВ(скорость,ваз) = 0,80 Начальное значение вероятности Перед тем как задавать вопросы нам надо указать начальные значения вероятности автомобиля. Тоесть провели опрос и оказалось, что из 100 опрошеных у 40 мерседес и у 60 ваз Тоесть начальные вероятности будут такие: Вер(мерседес) = 0,4 Вер(ваз) = 0,6 Теперь можно начинать проводить опрос. Можно задавать вопросы в любом порядке. Просчитаем для одного вопроса вероятности. Пускай это будет первый вопрос. Ты патриот? У человека есть 3 варианта вопроса. «Да», «нет» и «не знаю» «Не знаю» Если человек ответить «Не знаю», то можно про этот вопрос забыть . И начальные вероятности не пересчитывать. То есть как было у нас Вер(мерседес) = 0,4 Вер(ваз) = 0,6 Так оно и сталось. "Да" Если человек ответит "да", то начальные вероятности надо пересчитать за такой формулой вер =(в*вер)/(в*вер+нв*(1-вер)) У нашем случае это надо прощитать для мерседеса и ваза, и мы получаем такие формулы, тоесть применяем дважды формулу и получаем такое вер[мерседес] =( в[патриот,мерседес]* вер[мерседес])/( в[патриот,мерседес]*вер[мерседес] +нв[патриот,мерседес]*(1- вер[мерседес] )) и вер[ваз] =( в[патриот, ваз]* вер[ваз])/( в[патриот, ваз]*вер[ваз] +нв[патриот, ваз]*(1- вер[ваз] )) Значить мы пересчитали вероятности и получили, новые значения Вер(мерседес) = 0,3 Вер(ваз) = 0,7 (считал в уме и приблизительно) "Нет" Если человек отвечает "нет", то вероятности надо пересчитать за такой формулой вер=((1-в)*вер)/((1-в)*вер+(1-нв)*(1-вер)) если применить эту формулу к нашим обозначениям, то получим такое: вер[мерседес] =((1- в[патриот,мерседес])* вер[мерседес] )/((1- в[патриот,мерседес])* вер[мерседес] +(1-нв[патриот,мерседес])*(1- вер[мерседес] )) и вер[ваз] =((1- в[патриот, ваз])* вер[ваз] )/((1- в[патриот, ваз])* вер[ваз] +(1-нв[патриот, ваз])*(1- вер[ваз] )) Значит, после пересчета получилось: вер(мерседес) = 0,5 вер(ваз) = 0,4 Таким же образом задаем и остальные вопросы. В результате мы получаем новые значения вероятности, пускай такие: вер(мерседес) = 0,3 вер(ваз) = 0,6 Потом мы ищем максимальное значение, это у нас 0,6. И говорим. Скорей всего чел у тебя ВАЗ Вот так-то. И решили мы эту задачу. Кто понял тот гений, а кто не понял тот тоже гений ПС. Хочу заметить, что здесь используется упрощенная формула Байеса. И если бы он это увидел, то мне бы не жить ПСС: Прошу прощения за не научный язык и за некоторые отклонение от общепринятых обозначений и терминов. Хотел чтобы было более понятнее. ПССС: спасибо Сергей Владимировичу (моему преподу), что когда-то мне на парах это обьяснял ПСССС: если кто думает что это бесполезные знание для хакинга, то он глубоко ошибается . Мое ИМХО
Согласен она сложновата. И Экспертные системы тоже сложновато. Но большинству из Вас еще придется это изучать в институтах и может кому-то это понравиться . Эту систему можна применять в Веб-безопасносит, поэтому я и попытался написать это. Незнаю насколько понятно получилось. Ну надеюсь что более менее. Поверьте это очень сложно обьяснять. Кстати, все проходим Тест и определяемся кто же мы или Програмисты или Дворники или Милиционеры тест работает на основе вашего подсознания. А может сдесь все в подсознании из милиции ПС: не сильно ругайте меня за результаты
Если значение одинаковое, то ты можешь быть любыим из вариантов и система не может определить точно. А если серьезно, то нам есть файли ТЕСТ в котором задан весь тест. И система работает только отталкиваясь от этого файла. Поэтому теория вероятности всегда работает, а может не работать голова у АВТОРА, что СОСТАВЛЯЛ этот тест, тоесть у меня. И за это простите меня. Тест составлял давно, и тогда у меня не хватило терпения придумать больше вопросов. Такчто не серчайте ПС: уважаемые Ачатовцы, если есть какие-то вопросы то задавайте их и я с удовольствием отвечу, а меня как всегда подправять более знающие колеги . Я спать, а завтра ночью - в вашем роспоряжении
У меня был этот предмет в прошлом симестре. У нас была программа - для нее создавали базу знаний. В архиве - установочник проги и моя база знаний. http://ifolder.ru/4984735
Меня тоже. Как видно из моего места роботы в профиле. Я после этого уже и не скрываю своего мета роботы. Как говорит наш министр (кажется): "Милиция с народом"
Мент - 1,00 Програміст - 0,00 Дворник - 0,05 ____________________________________ Не ожидал ЗЫ А за статейко плюс =)
Специально для _Great_ перевод: для перевода замените содержание файла test на следующее содержание: PHP: Кто ты по професии в душе? ( Внимание! На основании подсознательных желаний!!! ) 6 Любиш ты природу? У тебя есть фонарик? Ты любишь день (работать днем)? Ты радуеш людей (своим поведением)? У тебя большая зарплата? Ты любиш футбол? 3 Милиционер Програмист Дворник 1919191911928 1191919198246 1191955552855 _Great_, все равно будет больше вероятность, что ты милиционер Так что, "Здраствуй колега"