Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Экспертная система. Кто ты в душе? (https://forum.antichat.xyz/showthread.php?t=58922)

presidentua 17.01.2008 01:16

Экспертная система. Кто ты в душе?
 
Маленькое вступление
Недавно пересматривал свои старые программы, и среди завалом нашел малую экспертную систему. Начал разбираться и вспоминать, и оказалось что когда-то в институте давали на лабораторку сделать экспертную систему на основе формул Байеса. Полез потом в Гугл, что немного вспомнить теорию, и оказалось что в Инете так много хлама и с моими мини-мозгами мне это не понять. Поэтому пошел другим путем, а именно стал разбираться что же я здесь когда то накодил. Результат этой роботы перед Вами. Если кому не интересно как работает эта система, то можете просто скачать 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. И говорим. Скорей всего чел у тебя ВАЗ
Вот так-то. И решили мы эту задачу. Кто понял тот гений, а кто не понял тот тоже гений

ПС. Хочу заметить, что здесь используется упрощенная формула Байеса. И если бы он это увидел, то мне бы не жить :)
ПСС: Прошу прощения за не научный язык и за некоторые отклонение от общепринятых обозначений и терминов. Хотел чтобы было более понятнее.
ПССС: спасибо Сергей Владимировичу (моему преподу), что когда-то мне на парах это обьяснял
ПСССС: если кто думает что это бесполезные знание для хакинга, то он глубоко ошибается :). Мое ИМХО

Soviet[HZ] 17.01.2008 01:32

Не работает теория вероятности.)) У меня каждого из 3 пунктов по 0,03.

presidentua 17.01.2008 01:35

Цитата:

Сообщение от keeberg
Теория вероятности - Жесть

Согласен она сложновата. И Экспертные системы тоже сложновато. Но большинству из Вас еще придется это изучать в институтах и может кому-то это понравиться :). Эту систему можна применять в Веб-безопасносит, поэтому я и попытался написать это. Незнаю насколько понятно получилось. Ну надеюсь что более менее. Поверьте это очень сложно обьяснять.

Кстати, все проходим Тест и определяемся кто же мы
или Програмисты
или Дворники
или Милиционеры

тест работает на основе вашего подсознания. А может сдесь все в подсознании из милиции :)

ПС: не сильно ругайте меня за результаты

presidentua 17.01.2008 01:40

Цитата:

Сообщение от Soviet[HZ]
Не работает теория вероятности.)) У меня каждого из 3 пунктов по 0,03.

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

А если серьезно, то нам есть файли ТЕСТ в котором задан весь тест. И система работает только отталкиваясь от этого файла. Поэтому теория вероятности всегда работает, а может не работать голова у АВТОРА, что СОСТАВЛЯЛ этот тест, тоесть у меня. И за это простите меня. Тест составлял давно, и тогда у меня не хватило терпения придумать больше вопросов. Такчто не серчайте :)

ПС: уважаемые Ачатовцы, если есть какие-то вопросы то задавайте их и я с удовольствием отвечу, а меня как всегда подправять более знающие колеги :). Я спать, а завтра ночью - в вашем роспоряжении :)

Forcer 17.01.2008 02:56

моё :
Мент - 0,05
Програміст - 0,60
Дворник - 0,01
: )

Forcer 17.01.2008 15:11

У меня был этот предмет в прошлом симестре. У нас была программа - для нее создавали базу знаний. В архиве - установочник проги и моя база знаний.
http://ifolder.ru/4984735

n3m0 17.01.2008 15:34

Президент, она в серьех оперделяет? Она меня спалила)))

presidentua 18.01.2008 02:22

Цитата:

Сообщение от n3m0
Президент, она в серьех оперделяет? Она меня спалила)))

Меня тоже. Как видно из моего места роботы в профиле. Я после этого уже и не скрываю своего мета роботы.

Как говорит наш министр (кажется):
"Милиция с народом" :)

z01b 18.01.2008 02:31

Мент - 1,00
Програміст - 0,00
Дворник - 0,05
____________________________________
Не ожидал
ЗЫ А за статейко плюс =)

_Great_ 18.01.2008 10:48

Переведи программу на русский или английский))


Время: 20:10