LINUX.ORG.RU

Помощь в разборе задач

 , , ,


2

2

В связи с тем что я не могу создать сообщение в разделе инженерные и наука,создаю здесь и так есть задача из лабораторной 2 вариант 10(вот ссылка кому интересно https://www.dropbox.com/sh/k1ob0rcnqdzfowz/AACCsKLbtinLdbvhtNvFZM7ra?dl=0): Распознавание образов, описываемых произвольными законами распределения. Взять количество наблюдений 50-100.

1. Реализовать алгоритм распознавания двух классов, описываемых произвольным законом распределения с известными параметрами. 2. Провести имитационное моделирование алгоритма. Оценить вероятности ошибок 1-го и 2-го рода. 3. Рассчитать (оценить) теоретические вероятности ошибок и сравнить их с экспериментальными значениями.

1й класс Нормальное распределение mu=10 delta=3 2й класс Распределение Вейбулла mu=1.5 delta=3

И решение:

%task 2,variant 10: [2(1) +10(1)]
clc;
n = 100;
x1 = rand(n,2);
mu1 = 10;
sigma1 = 3;
x2 = rand(n,2);
mu2 = 1.5;
sigma2 = 3;
y1 = normpdf(x1(:,1),mu1,sigma1);
y2 = wblpdf(x2(:,1),mu2,sigma2);%weib

g1 = log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(y1) + (((y1 - mu1).^2)*(mu2^sigma2))./(2*(sigma1^2)*(y1.^sigma2))
g2 = log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(y2) + (((y2 - mu1).^2)*(mu2^sigma2))./(2*(sigma1^2)*(y2.^sigma2))
g = g1+g2
newmu1 =  log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(mean(y1)) + (((mean(y1) - mu1)^2)*(mu2^sigma2))/(2*(sigma1^2)*(mean(y1)^sigma2));
newsigma1 = log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(std(y1)) + (((std(y1) - mu1)^2)*(mu2^sigma2))/(2*(sigma1^2)*(std(y1)^sigma2));

newmu2 =  log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(mean(y2)) + (((mean(y2) - mu1)^2)*(mu2^sigma2))/(2*(sigma1^2)*(mean(y2)^sigma2));
newsigma2 = log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(std(y2)) + (((std(y2) - mu1)^2)*(mu2^sigma2))/(2*(sigma1^2)*(std(y2)^sigma2));

z1 = normpdf(g,newmu1,newsigma1);
z2 = wblpdf(g,newmu2,newsigma2);

l0 = n/2;
error12 = 0;
for i=1:l0
    error12 = error12 + z1(i);
end;
error21 = 0;
for i=l0:1
    error21 = error21 + z2(i);
end;
error12
error21

yt1 = normpdf(x1(:,2),mu1,sigma1);
yt2 = wblpdf(x2(:,2),mu2,sigma2);%weib

gt1 = log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(yt1) + (((yt1 - mu1).^2)*(mu2^sigma2))./(2*(sigma1^2)*(yt1.^sigma2));
gt2 = log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(yt2) + (((yt2 - mu1).^2)*(mu2^sigma2))./(2*(sigma1^2)*(yt2.^sigma2));

gt = gt1+gt2;
newmut1 =  log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(mean(yt1)) + (((mean(yt1) - mu1)^2)*(mu2^sigma2))/(2*(sigma1^2)*(mean(yt1)^sigma2));
newsigmat1 = log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(std(yt1)) + (((std(yt1) - mu1)^2)*(mu2^sigma2))/(2*(sigma1^2)*(std(yt1)^sigma2));

newmut2 =  log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(mean(yt2)) + (((mean(yt2) - mu1)^2)*(mu2^sigma2))/(2*(sigma1^2)*(mean(yt2)^sigma2));
newsigmat2 = log((mu2^sigma2)/(sigma1/(2*pi)^(1/2))) - (sigma2^2 - sigma2)*log(std(yt2)) + (((std(yt2) - mu1)^2)*(mu2^sigma2))/(2*(sigma1^2)*(std(yt2)^sigma2));

zt1 = normpdf(gt,newmut1,newsigmat1);
zt2 = wblpdf(gt,newmut2,newsigmat2);

errort12 = 0;
for i=1:l0
    errort12 = errort12 + zt1(i);
end;
errort21 = 0;
for i=l0:1
    errort21 = errort21 + zt2(i);
end;
errort12
errort21


Правильно ли решение относительно всех вопросов?


Последнее исправление: Gremlin_ (всего исправлений: 3)

Ну так посчитай монтекарло численно и убедись, что не налажал.

Собственно некий шутник под «алгоритмом распознавания образов» и имел просто прямой счет условных вероятностей.

Только шутник малограмотный, «ошибки I и II рода» в такой постановке (не сказано соотношение частот обоих случайных процессов) представляют из себя функции от «трешоилда» (точки принятия решения) и фактически приводят к построению ROC с оценкой по ней AUC для «алгоритма».

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

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

Gremlin_
() автор топика
Ответ на: комментарий от Gremlin_

1. Так ничего ж не показано, что насчитало. Это голый код без выхлопа. Надо сессию РЕПЛа матлаба давать.

2. В задаче генетическая ошибка — её решение зависит от соотношения числа точек в серии полученных каждым из двух ГСЧ которые и нужно «классифицировать». Никакого ГСЧ который порождает такое соотношение просто не задано.

Да и размер выборки влияет на полученные доверительные интервалы при оценках.

Ну пусть равновероятно срабатывание каждого из ГСЧ.

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

код R

> my.valueAce <- seq(from=0, to=20, by=0.01)
> plot(my.valueAce,pnorm(my.valueAce, mean=10, sd=3 ))
> points(my.valueAce,pweibull(my.valueAce, shape=1.5, scale=3 ), col="red")

Ну или классически «навстречу друг другу»

> plot(my.valueAce,pnorm(my.valueAce, mean=10, sd=3 ))
> points(my.valueAce,pweibull(my.valueAce, shape=1.5, scale=3, lower.tail =F ), col="red")

Решение выглядит как точка с равновероятностью выбора :)

ROC (только одну из осей надо в мощность пересчитать вычитая из 1) вот так получают. Она все трешоилды сразу оценивает.

plot(pnorm(my.valueAce, mean=10, sd=3 ), pweibull(my.valueAce, shape=1.5, scale=3, lower.tail =F ))

Потом просто будстреп мастерим для заданной выборки в 100-150 вариант-случаев.

Порождаем с ним вектор принадлежности конкретному генератору считаем сколько надо точек по одному и второму. Получаем точки и применяем трешоилд оптимальный теоретически (можем одновременно находить практически оптимальный просто отсортировав выборки). Так повторяем много раз следя за 5% доверительным интервалом, когда сойдется к нужной точности — останов.

Вот и всё.

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

Можете без сокращений? И еще мне бы какой-нибудь материал вроде книги на русском языке(желательно чтобы я мог решить все эти задачи) и каким алгоритмом вы воспользовались? Мне бы прямо подробнее и по рабочекрестьянски

Gremlin_
() автор топика
Ответ на: комментарий от Gremlin_

Я ведь не буду «вот это все» по ссылке «вслух читать»? :)

https://en.wikipedia.org/wiki/Receiver_operating_characteristic

Способ работы с распределениями в коде простой и прямой:

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/Normal.html http://www.stat.umn.edu/geyer/old/5101/rlook.html http://ww2.coastal.edu/kingw/statistics/R-tutorials/prob.html

Там для бутстрепа есть r* варианты функций реализующие ГСЧ соответствующего распределения.

psv1967 ★★★★★
()
Ответ на: комментарий от Gremlin_

Ну про кумулятивное распределение случайной величины и как по нему делать вычисления вероятности вас учить обязаны были. Собственно все расчеты вокруг этого и построены в прикладной статистике.

https://ru.wikipedia.org/wiki/Функция_распределения

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

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

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

Gremlin_
() автор топика
Ответ на: комментарий от psv1967

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

Вот список методов:

1.Байесовский метод 1.1метод максимального правдоподобия 1.2 метод парзена 1.3 стуктурно-геометрический подход на основе мер близости 2.метод K ближайших соседей 3.линейный дискрименант фишера 4.метод потенциальных функций 5.кластеризация или группировка данных

И литература

статистическая теория ро - Фин(к)ми гос - (непонятный почерк кто автор?)

ро и оптимизация сцен - Дита Х(К)аг

Можешь помочь с этим?

Gremlin_
() автор топика
Ответ на: комментарий от psv1967

Генератор случайной величины находится в файле lr1.docx сама задача в lr2.docx я выбрал 10 вариант, а решение которое я записал(неправильное похоже) в l2.m. Там такое дело не все задачники(условия тех лаб у меня есть ,нету 2х лаб,я их перенумировал с 1-5) одинаковые поэтому есть решения для лабы 6 и 7(lab6.m lab7.m) (это вроде задачник lr5.docx)лабы 2-3, немного отличается 4, решение 1-й лабы файл vb.m(сам файл может некоректно отражать таблицу(не целиком))

Gremlin_
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.