<p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal"><span lang="en-us">K=1</span>이 나와야 된다는 전제가 잘못 됐다는 글들을 보고 이해가 안돼서 그냥 프로그램을 짜서 돌려봤다<span lang="en-us">.</span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal">가설<span lang="en-us"> - </span>빨간공 파랑공을<span lang="en-us"> 3%</span>짜리 구멍이 있는곳을 통과 시킬경우 처럼 분류된 후의 데이터를 가지고<span lang="en-us"></span></p> <p></p> <p class="MsoNormal"><span lang="en-us">(3% </span>통과한 공들의 비율<span lang="en-us">)/(97% </span>통과한 공들의 비율<span lang="en-us">) </span>과 같이 했음<span lang="en-us"></span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal">선거구<span lang="en-us"> 300</span>곳 선거구당<span lang="en-us"> 10</span>만명 총<span lang="en-us"> 3</span>천만명<span lang="en-us"></span></p> <p></p> <p class="MsoNormal">실제 투표<span lang="en-us"> 1</span>번<span lang="en-us"> 51%, 2</span>번<span lang="en-us"> 48%, </span>무효표<span lang="en-us"> 1%</span></p> <p></p> <p class="MsoNormal">분류기 정확도<span lang="en-us"> 97%</span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal">결과<span lang="en-us"> - </span>선거구별<span lang="en-us"> K</span>값 분포<span lang="en-us"></span></p> <p></p> <p class="MsoNormal"></p> <div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201704/1492696568a1c00caeb0c94eb5bcab1934c39881ce__mn440200__w493__h393__f13515__Ym201704.jpg" width="493" height="393" alt="CASE1.JPG" style="border:none;"></div><br><p></p> <p></p> <p class="MsoNormal"><span lang="en-us">(</span>꼬릿말의 소스를<span lang="en-us"> matlab 2015a</span>을 실행시키고 바로 수행하면 정확한 수치까지 재현 가능<span lang="en-us">. rand</span>함수의 비밀<span lang="en-us">~)</span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal"><span lang="en-us">K=1 </span>근처로 나왔다<span lang="en-us">.</span></p> <p></p> <p class="MsoNormal">근데 이건 정확도의 정의가 미분류표<span lang="en-us">/ </span>총표수 이다<span lang="en-us">.</span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal">정확도는 각 표를 정확히 분류한 표수<span lang="en-us">/ </span>총표수이다<span lang="en-us">.</span></p> <p></p> <p class="MsoNormal">나머지는<span lang="en-us"> 2</span>번에 투표했는데<span lang="en-us"> 1</span>번에 들어가서<span lang="en-us"> 1</span>번에 카운트 된 것도 있고 미분류로 들어간 것도 있다<span lang="en-us">.</span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal">어째든 이걸로 좀 더 복잡하게 시뮬<span lang="en-us"> (</span>일이 커졌다 ㅡㅡㅋ<span lang="en-us">)</span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal"></p> <div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201704/14926965797bb6e30c5c3c440689cdd2610590fcc7__mn440200__w488__h388__f13178__Ym201704.jpg" width="488" height="388" alt="CASE2.JPG" style="border:none;"></div><br><p></p> <p class="MsoNormal">그래봐야<span lang="en-us"> 1</span>근처로 분포했다<span lang="en-us">.</span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal"><strike>근데 프로그램 짜 놓고 깨닳은 건데 미분류표<span lang="en-us"> 3.6%</span>는 지나치게 높다<span lang="en-us">.</span></strike></p> <p></p> <p class="MsoNormal"><strike>분류 정확도가<span lang="en-us"> 95%</span>로 설정했을 때 미분류표 수치가<span lang="en-us"> 3.5%</span>가 나왔다<span lang="en-us">.</span></strike></p> <p></p> <p class="MsoNormal"><span lang="en-us"><strike> </strike></span></p> <p class="MsoNormal"><strike>분류 정확도<span lang="en-us"> 99.5%</span>면 미분류표가 저렇게 많이 나오는게 이상하다<span lang="en-us">.</span></strike></p> <p></p> <p class="MsoNormal"><strike>스팩을 뻥튀기 했던가</strike><span lang="en-us"></span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal"><span lang="en-us">에매한건 일단 미분류로 보내기 때문인데</span></p> <p class="MsoNormal"><span lang="en-us">유독 1번이 애매한게 많더라~ 라는 결론입니다.</span></p> <p class="MsoNormal"><span lang="en-us"> </span></p> <p class="MsoNormal"><br></p> <p></p> <p class="MsoNormal"><span lang="en-us">추가 : 일단 표본이 랜덤해야 1이 나오는건 맞구요</span></p> <p class="MsoNormal"><span lang="en-us"> 표본이 유독 한쪽으로 쏠린건 원인 파악을 해봐야 합니다. </span></p> <p class="MsoNormal"><span style="font-size:9pt;"> </span></p> <p class="MsoNormal"><span style="font-size:9pt;"><br></span></p> <p class="MsoNormal"><span lang="en-us">PS. </span>합리적인 지적 환영합니다<span lang="en-us">.</span></p> <p></p> <p class="MsoNormal"><span lang="en-us"> </span></p>
첫번째
clear all
%park=1; moon=2; etc=3;
voter=100000; constituency=300;  
vote=rand(voter, constituency);
vote(vote<0.51)=1;  % 51%
vote(vote<0.99)=2;  % 48%
vote(vote<1.00)=3;  % 1%
% 
% The plan에서 설명한 k=1이 나와야 하는 이유
shunt=rand(voter, constituency);
accuracy=0.97;
pass=zeros(voter, constituency);
fail=zeros(voter, constituency);
pass(shunt<=accuracy)=vote(shunt<=accuracy);
fail(shunt>accuracy)=vote(shunt>accuracy);
for i=1:1:constituency
    k(i)=(sum(fail(:,i)==1)/sum(fail(:,i)==2))/(sum(pass(:,i)==1)/sum(pass(:,i)==2));
    unclassified(i)=sum(pass(:,i)==3)+sum(fail(:,i)==1)+sum(fail(:,i)==2)+sum(fail(:,i)==3);
end
mean_unclassified=mean(unclassified)/voter*100;
mean_k=mean(k);
histogram(k)
2번째
clear all
%park=1; moon=2; etc=3;
voter=100000; constituency=300;  
vote=rand(voter, constituency);
vote(vote<0.51)=1;  % 51%
vote(vote<0.99)=2;  % 48%
vote(vote<1.00)=3;  % 1%
% 분류기 정확도에 따른 상황
pass=zeros(voter, constituency);
fail=zeros(voter, constituency);
out=zeros(voter, constituency);
accuracy=0.95;
for c=1:1:constituency
    for v=1:1:voter
        if rand<accuracy
            pass(v,c)=vote(v,c);    % 잘 분류된것
        else
            switch vote(v,c);
                case 1              % 잘못 분류된 1번표가
                    if rand>0.5
                        fail(v,c)=2;% 2번에 섞여들어가거나
                    else
                        out(v,c)=1; % 미분류로 나오거나
                    end
                case 2
                    if rand>0.5
                        fail(v,c)=1;% 1번에 섞여들어가거나
                    else
                        out(v,c)=2; % 미분류로 나오거나
                    end
                case 3
                    if rand>0.5
                        fail(v,c)=1;% 1번에 섞여들어가거나
                    else
                        fail(v,c)=2;% 2번에 섞여들어가거나
                    end
            end
        end
    end
end
classified=pass+fail;
for i=1:1:constituency
    k(i)=(sum(out(:,i)==1)/sum(out(:,i)==2))/(sum(classified(:,i)==1)/sum(classified(:,i)==2));
    unclassified(i)=sum(classified(:,i)==3)+sum(out(:,i)==1)+sum(out(:,i)==2)+sum(out(:,i)==3);
end
mean_unclassified=mean(unclassified)/voter*100;
mean_k=mean(k);
histogram(k)
no1=sum(sum(classified==1)+sum(out==1))/(voter*constituency)*100;
no2=sum(sum(classified==2)+sum(out==2))/(voter*constituency)*100;
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.