ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Экспертная система. Кто ты в душе?
  #1  
Старый 17.01.2008, 01:16
Аватар для presidentua
presidentua
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме:
1724067

Репутация: 806
Отправить сообщение для presidentua с помощью ICQ
Smile Экспертная система. Кто ты в душе?

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

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поисковая система по изображениям procedure Болталка 11 15.09.2008 15:38
Юмор: Кто сказал что у админов халявная работа? silveran Болталка 7 21.07.2007 02:37
securepod.com кто что знает rulez22 Разное - Покупка, продажа, обмен 0 03.01.2006 02:41
И все таки линукс - это сатанинская система. Смеёмся :) nerezus Болталка 10 13.07.2005 20:10
Есть ли уязвимость в чате http://chat.bol.ru/ помогите кто знает retin Чаты 1 10.07.2005 17:04



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ