728x90
반응형
SMALL

기능점수 (Function Point) 의 정의

기능점수(Function Foint)의 가장 큰 특징은 소프트웨어의 규모를 산정할 때 개발자 즉 공급자 입장이
아닌 사용자 입장에서 그 규모를 산정한다는 점이다.
즉 사용자의 업무적 요구사항에 대해 소프트웨어가 제공하는 소프트웨어의 기능을 논리적 관점에서
식별하여 사용자 관점에서 소프트웨어의 규모를 측정하는 방법.
쉽계 말하면 화면 단위로 각 화면에서 제공하는 기능 (조회,입력,저장,수정...)에 대해서 기능 유형별 
수량과 성능 및 품질요인들의 영향도를 고려하여 소프트웨어의 규모를 측정하는 방법


기능점수 (Function Point) 의 특징

① 소프트웨어가 사용자에게 제공하는 기능적 요구사항을 측정한다. 
② 기능점수는 “소프트웨어가 어떻게 구현되었는지”의 공급자 관점이 아니라 “사용자가 어떠한 기능을
    요구했는지”의 수요자 관점에서 측정
③ 개발 이전에 업무량을 측정 가능
④ 개발은 물론 기획, 운영 등 전 수명주기에 걸쳐서 측정 가능
⑤ 소프트웨어 개발 및 유지관리의 업무량을 조직, 구현기술, 공수, 적용방법론, 물리적 또는 기술적
   컴포넌트와 무관하게 일관성 있게 측정 가능


기능점수 산정방식의 종류

구분 정통법 간이법
개념 소프트웨어의 기능을 도출하고, 각 기능의 
형별 복잡도를 고려하여 정확한 기능점수 산
정을 필요로 할 경우 사용되는 일반적인 방법
- 기능의 복잡도를 판단하기 어려운 경우 적
용하는 방법
- 계산 절차는 정통법과 동일하나 기능점수
산정 시 기능 유형별 평균 복잡도를 적용하여
기능 점수를 산출
장점 규모측정 정확도가 간이법 대비 상대적으로
높음
기능점수 측정 소요시간 및 측정 지식 습득시
간이 정통법 대비 상대적으로 짧음
단점 기능점수 측정 소요시간 및 측정 지식 습득시
간이 간이법 대비 상대적으로 길다.
규모측정 정확도가 정통법 대비 상대적으로
낮음
적용시점 - 개발요건 및 요건별 상세설계정보가 제공되
  는 시점 즉, 설계공정 이후부터 폐기까지 적용
- 통상적으로 소프트웨어 개발 공정 상 설계
  공정 후 사용
- 개발요건만 정의되면 예산수립, 사업발주,
  개발, 운영 및 유지보수, 폐기까지 모든 단계
  에서 적용 가능
- 통상적으로 기획 및 발주단계에서의 기능점
  수 측정에 사용



소프트웨어 개발비의 구성요소

소프트웨어 개발비 산정 시 주요 요소는 = 개발원가 + 직접경비 + 이윤 이다. 
① 개발원가는 소프트웨어 개발규모를 우선 산정 한 후 이를 토대ㅗ 보정전 개발원가를 계산한다.
    그런다음 거기에대가 보정계수를 고려한 개발원가를 산출한다.
② 직접경비는 개발에 직접 투입된 비용들 
③ 이윤은 개발원가 의 25% 이내로 한다.

기능점수(FP) 방식에 의한 SW개발비 산정 시 기능점수 단가에 ‘제경비’ 및 ‘기술료’에 상응하는 항목이 반영되어 있어 별도로 산정하지 않음

 

구성요소 설명
보정 후 개발원가 ① 규모
연계복잡성 수준
성능요구 수준
다중사이트 운영성
보안성 수준
의 5가지 보정계수 각각 산정
- 3단계에서 계산된 보정전 개발원가에 보정계수 값을 모두 곱하여 보정후 개발원가
  를 산정
이윤 - 국가를 당사자로 하는 계약에 관한 법률 시행규칙 제8조 제2항 제2호에서는 “제조· 구매(「 소프트웨어산업 진흥법」제22조제1항에 따라 소프트웨어개발을 포함한다)의 이윤율은 100 분의 25를 초과하지 못한다”라고 규정함
- 따라서, 개발원가의 25%를 초과하지 않는 범위에서 이윤을 계산함
직접경비 직접경비는 해당 소프트웨어 개발사업에 소요되는 직접적인 경비를 의미한다. 직접경비에 포함되는 항목들 도출함
- 직접경비의 계산시에는 정확한 내역을 제시하여야 함


5가지 보정원가 계수

구분 보정원가 계수 설명
개발규모 규모 보정계수 - 소프트웨어 개발사업 규모가 커지면 생산성은 증가하고, 일정 규모 이상이
  되면 생산성이 다시 감소하는 추세를 보임
- 사업규모의 증가에 따른 생산성 변화에 대한 보정이 필요하며 이를 감안
  하는 계수
- 산정방법 = 0.4057 x (loge(기능점수) - 7.1978)2 + 0.8878
- 만약 한 사업에서 여러 개의 애플리케이션을 통합 구축하는 경우에는
  통합 규모를 대상으로 규모보정계수를 적용
어플리케이션 복잡도 연계복잡성 수준 - 대상 애플리케이션의 연계 기관수가 증가함에 따른 프로젝트 관리의 복잡
  성을 의미
- 연계 기관수가 많을수록 높은 값을 가짐
성능요구 수준 - 응답시간 또는 처리율에 대한 사용자 요구수준의 복잡성을 의미
- 성능요구 수준이 복잡할수록 높은 값을 가짐
다중사이트 운영성 - 다중사이트에서의 운영 여부와 플랫폼의 상이한 정도를 의미
- 다중사이트에서의 운영이 요구되고, 상이한 하드웨어와 소프트웨어 환경
  을 지원하도록 개발되는 요구 정도가 복잡할수록 높은 값을 가짐
보안성 수준 - 시큐어코딩, 웹취약점점검, 암호화점검, 개인정보보호 등 보안성에 대한 
  요구수준을 의미함
- 보안성에 대한 요구정도가 복잡할수록 높은 값을 가짐
728x90
반응형
LIST
728x90
반응형
SMALL

소프트웨어 규모산정의 필요성

소프트웨어를 자체개발하던지 아니면 외주를 줘서 개발하던지 개발하고자 하는 소프트웨어의
규모를 대충 알아야 개발기간 및 공수산정을 할 수 있으며, 외부개발인 경우 과연 얼마의 돈을
주고 개발을 해달라고 하는게 맞는건지 측정기준이 있어야 할것이다. 그래야 개발을 요청하는
발주사나 개발을 수행할 SI공급사나 서로 통일된 기준으로 비용과 원가를 산정해서 계약서에
금액을 명시 할 수 있을 것이다.
과거에는 그냥 SI공급사가 제안한 턴키 금액을 가지고 대충 업체 선정하고 했지만 지금은
'SW사업대가 산정기준" 등 정부에서 기준을 마련해서 공공기관 사업부터 적용하고 있다.
오늘은 소프트웨어 규모를 산정하는 방법에는 머가 있는 지 알아보고, 다음 편에서는 대표적인
소프트웨어 산정기준은 기능점수(Function Pointy) 에 대해서 1,2부로 나누어서 자세히 알아보고
자 한다. (Function Point 만 대충 설명할려고 해도 거의 책 한권의 분량이다.)


소프트웨어 규모산정 방법들..

방법 내용
1. 하향식 산정  - 경험적 단언, 개발자 합의
 - 전문가 감정과 델파이 방식 이용
2. 상향식 산정  - 업무분류구조 정의, 각 구성요소에 대한 독립적 산정, 집계
 - LOC 기법, 개발 단계별 인원수 기법 이용
3. 수학적 산정  - Function Point , COCOMO


양적 규모산정 방식 - LOC방식

방법 내용
Doty 모델 인터뷰와 문헌을 바탕으로 개발한 모델로 프로그램 규모가 알려졌다는 전제 하에 총공수를 구하는 방법
Putnam 모델 가설을 전제로 한 모델 (대규모 연구개발 프로젝트에 적용된 모델을 기초)
COCOMO 모델  - Boehm에 의해 비즈니스, 산업계, 정부, 소프트웨어하우스 등에서 엄선한 63종류의 프로젝트 
   데이터에 기초하여 작성된 경험적인 소트프웨어 비용 견적모델


양 과 질을 고려한 방식

방법 내용
Function Point  - 최종사용자 입장에서 소프트웨어의 규모를 견적하는 방식.
 - 프로젝트 완료 후 생산성 평가 목적으로 개발되었으나 사전 예측모델로
   이용됨
Halstead 의 
소프트웨어 과학
 - 소트프웨어 규모와 난이도에 대한 척도를 이용하여 개발 소요공수 예측
   모형 제시
 - 복잡도에 대한 척도, 프로그램내의 연산자, 피연산자의 종류와 발생빈도간의
   관계를 복잡도로 측정한다.
 - 소프트웨어 규모와 난이도에 대한 척도로 이용
McCabe의
회전복잡도
회전복잡도 = 의사결정수 + 1
 - 상세설계가 완료된 다음에 사용할 수 있으며 프로그램의 제어흐름도를 기반
   으로 분석
Software Cyclometic Number   순차구조, 선택구조, 반복구조 로 산정


COCOMO 종류

 1.Basic COCOMO - S/W 개발노력과 비용을 LOC형태로 추정한 후 비용을 산정하는 단일값 모형 
                              (Static Single-Value model)
                          - 제안단계에서 사용
          ① Organic            - MIS, 50KDSI (50,000라인)
          ② Semi-detachedd - Compliler, 개발지원도구 개발 , 300KDSI
          ③ Embeded           - OS, DBMS,통신모티너  , 대형프로젝트

2.Intermediate COCOMO - 15개 특성치 적용한 방식
          ① 제품속성(3개)             - S/W신뢰도, DB크기, 제품복잡도
          ② H/W속성(컴퓨터)(4개) - 응답시간, 실행시간 성능제약, 기억장치제약, 가상기계 환경의 휘발성
          ③ 인적속성(5개)             - 분석가능력, 응용의 경험, 언어구사경험, S/W공학자능력, 가상기계에대한 경험
          ④ 프로젝트 속성(3개)     - 일정, 개발도구사용, 방법론 응용

3.Detailed COCOMO - 대형인 경우 Sub시스템으로 쪼개서 별도 산정한 후 합산하는 방식
          ① 모듈레벨
          ② 서브시스템 레벨
          ③ 시스템 레벨 


COCOMO II

1단계 : 프로토타입 만드는 단계  -> Application Point 계산해서 노력 추정  -> 응용결합모델
2단계 : 초기설계단계          -> FP 사용 -> 초기설계모듈
3단계 : 구조설계 이후 단계  -> FP 와 LOC를 규모척도로 해서 Reuse, Post Architecture  
                                     -> 포스트 아키텍쳐 모델        

1. 응용결합모델 (Application Composition Model)
     - 작은팀이 몇주의 기간동안 개발하는 경우에 사용, 주로 GUI Builder 나 컴포넌트들을 이용하여 조립 개발하는
        경우
     - 스크립트, DB, 프로그래밍을 이용하여 개발된 프로토타입시스템
     - 객체점수의수
2. 초기설계모듈 (the Early Design Model )
     - 비교적 개발 초기단계에 사용되어지며 실제 개발할 SW의크기 . 운영환경의 특성, 프로젝트에 참여할 관련자
      , 수행할 프로세스의 세부사항 등에 대한 정보가 부족할 때 사용
     - 시스템 요구사항과 설계선택방안에 기반을 둔 초기 비용 산정
     - Function Point 의 수
3. 재사용 모델  
     - 재사용가능한 컴포넌트 혹은 자동적으로 생성되는 코드를 통합하기 위한 노력
     - 재사용되거나 생산된 라인수
4. 포스트 아키텍쳐 모델 (Post Architecture Model)
     - 가장 세부적인 모델로 SW생명주기가 확립된 후에 사용하며, 소프트웨어를 개발하여 유지보수 하는 동안 사용
     - 시스템 설계명세화에 기반한 개발노력
     - 소스코드 라인의 수

728x90
반응형
LIST
728x90
반응형
SMALL

IT 투자성과 평가의 정의

조직에서 비용을 투입해서 투자한 IT투자에 대한 목표 달성 여부 및 기여도 그리고 품질/이용/효과 측면에서
정량적, 정성적으로 타당성을 평가하는 활동을 말한다.

IT 투자성과 평가의 필요성

단순히 투자비용, 프로세스 개선 효과 관점에서 바라보는 것이 아닌, 전략적 관점에서 실질적으로
비즈니스 가치를 높였는지 IT투자 성과를 제대로 측정, 분석할 수 있어야 함

IT 투자성과 평가의 주요 지표들 

지표 세부 주요 지표 설명
품질지표 정보 품질 정확성, 중요성 등 정보 시스템에서 제공하는 정보에 대한 지표
제공하는 데이터에 대한 품질을 말함.
시스템 품질 적시성, 신뢰성 등 정보 시스템 자체 품질에 대한 지표
전산시스템에 대한 자체 품질 평가
이용지표 정보시스템 활용도 업무 프로세스 및 운영을 통해 활용 평가하는 지표
해당 시스템을 얼마나 활용하는 가를 시스템 Resource 의 가용도를 판단함 (예) 로그인수, CPU , 파일 시스템 사용률..
사용자 만족도 의사결정 활용도, 산출물 활용에 대한 사용자 부서 평가 지표
현업 사용자의 시스템에 대한 만족도
접속 시간 사용시간, 사용횟수 로그 기록으로 활용도 평가하는 지표
효과지표 업무 성과 향상도 개인/기업의 IT 투자 전/후 업무 성과향상 평가하는 지표
전체적인 측면에서 투자에 대한 성과가 있는지 평가
업무 처리 시간 개인/기업의 처리 시간 단축에 대해 평가하는 지표


IT 투자성과 평가의 주요 측징기법들 (정량적)

기법 설명 계산식
ROI
(return of investment)
투자수익률
 - 재무적 관점에서 사업의 투자 적절성을 평가하는 방법
 - 누적된 총 순 효과를 총 비용으로 나누어 계산한 비율
 - ROI > 0 이 되는 시점이 손익 분기점
ROI(%) = 누적 순 효과 /총비용
NPV
(Net Present Value)
순현재가치
 - 연도별 수익의 현재 가치에서 투자비용의 현재 가치를 뺀 값
   들의 합계
 - NPV > 0 , 같은 조건이면 클 수록 좋음
 - 예를 들어 현재의 1,000원이랑 5년후의 1,000원의 가치는
    같지가 않다. 당연히 5년 후의 1,000원을 지금 가치로 
    따진다면 1,000원 이하가 될것이다 , 머 한 920원 정도..
    이 920원이 현재가치 값이다. 
    보통 현재가치를 계산할 때 시장이자율을 가지고 계산한다.
   

 C : 1,000원
 r : , 시장이자율
 t :  5 년

- Ct: 진행기간 동안 현금유,
  C0: 초기 투자비용,
  r: 할인율,
  t: 진행기간

IRR 
(Internal Rate of Return)
내부수익률
 - NPV가 0 이 되는 이자율을 말함.
 - 투자 안에 투입되는 비용과 예상되는 수익의 현재 가치
   를 동일하게 해주는 할인율
- 같은 조건이면 높을 수록 좋음

NPV = 0
PP
(Payback Period)
회수기간
  - 투자 원금 회수 때까지의 기간
 


IT 투자성과 평가의 주요 측징기법들 (정성적)

기법 설명 개념도
Value Chain -기업의 전반적인 생산 활동을 주 활동 부문과
보조(지원) 활동 부문으로 나누어 분석하는 기
BCG Matrix - 시장의 성장률과 그 산업 내 기업의 경쟁적인
위치를 확인하여 각기 다른 전략 사업 단위와
비교할 수 있도록 하는 포트폴리오 관리 기법


< 출처 : 정보관리기술사 118회 모임 : 두드림 >

728x90
반응형
LIST
728x90
반응형
SMALL

요구명세(SRS)의 중요성 뛰우기

Software를 개발할려면 우선 무엇을 개발할것이며, 어떤 기능, 어떤 화면을 개발할 것인가에 대해서
사용자의 요구사항을 정리하게 되는데. 이러한 문서를 보통 요구사항정의서 또는
요구명세(SRS; Software Requirement Specification) 라고 한다. 
그리고 이러한 요구명세에 의해서 과업, 비용, 개발기간을 정량화 한 후 합의를 해서 이후 분석,설계
, 구현, 시험, 인수 의 전과정에서 의사결정의 판단 기준이 되는 중요한 문서이다 
그러나 실제 국내 SI 프로젝트를 보면 요구명세(SRS)의 활용도가 아주 떨어진다.
왜냐하면 요구명세(SRS)의 바탕이 되는 제안요청서(RFP)부터 애매하게 정의가 되기 때문에
일단 프로젝트를 시작한 후에 그 때부터 산출물 기준으로 요구명세를 꺼꾸로 정의해 나가는
상황이 벌어지고 있다. 
그래서 2018년 3월 22일 과학기술정보통신부가 입법예고한 소프트웨어진흥법 전부개정안에 따르면 
이러한 주먹구구식 개발관행은 민간기업에게 강제할 수는 없지만 적어도 공공SI에서만큼은 제대로 된
요구명세(SRS)를 시작으로 프로젝트 전과정에 사용할 수 있도록  발주자는 예비입찰자가 FP(Function Point)
를 가늠할 수 있도록 과업범위를 상세하게 적은 제안요청서(RFP)를 공고해야 하고, SW기업과 계약 직후
착수회의 까지 과업내용을 합의해 오면, 제3자인 과업심의위원회가 그 과업내용을 계약금액과 대비하여 "
심사한다. 또한 프로젝트 수행 중 불가피한 과업변경 요구가 있는 경우, SW기업이 변경 영향도 분석을 
거쳐 과업심의위원회 개최를 요청하면 공공기관은 이에 응하도록 법안에 명시했다. 
최종 검수 단계에서는 애초에 작성한 SRS를 기준으로 검수하여 불명확한 기준으로 인한 검수지연 
및 지체상금 부과가 최소화 되도록 하위법령 또한 마련해야 한다.

요구명세(SRS) 가 없는 SI사업의 문제점

문제점 내용
과업내용 모호 제안요청서의 96%가 과업규모 산정이 불가능하여 사업위험을 예측할 수 없는 수준인데, 이를 기준으로 계약을 체결함
과업확정 지연 설계산출물을 상세설계와 구현 단계에 확정한다는 발주기관 비율이 75%에 달하는 등 발주자와 개발자가 합의없이 설계하고, 산출물을 보면서 과업을 확정해 나가는 주먹구구식 개발관행이 일반화 
변경관리 불가 애초부터 과업내용이 불명확하여 사업수행 도중 발주기관이 
추가로 요구하더라도 과업변경인지 판단이 어려워 결과적으로 과업변경 심의위원회 등 과도한 과업변경에 대한 SW기업 보호제도마저 유명무실
대가없는 과업변경 미 발생한 과업변경에 대하여 발주기관이 계약금액을 조정할 수 있는 근거가 부족하므로 SW기업에게 추가대가를 지급하는 사례를 찾아보기 어려움 
분쟁 시 판단기준 부재 민관합동 SW불공정행위 모니터링단 사례집 (KOSA 2017) 중 공공부문 분쟁의 약 30%가 과업추가와 검수지연으로서 발주자와 수주자 간 과업정의와 검수에 대한 기준이 다른 것에서 기인함

                            
SW진흥법 전부개정안의 공공SW사업 이행방안 요구명세(SRS) 중심의 사업관리

계약 전 SRS를 위한 토대를 구축하고, 계약착수회의를 거치면서 2단계로 SRS를 확정하며, 이후 수행과 
검수과정에서 SRS를 의사결정 기준으로 설정
즉 계약단계에서 요구명세(SRS)를 확정을 하기에는 어려움이 있다.  이를 감안해서 계약후 착수회의 때 
SRS에 대해서 다시한번 검토 및 확정을 할 수 있게 했다.

단계 SRS 역할
1. 사업계획 사업예산을 확보하면서 SRS의 이전단계인 요구사항을 개념화
2. 사업공고 RFP의 요구사항을 정량적으로 분석하여 SRS의 토대 수립
3. 계약 RFP를 반영한 SRS 초안으로 계약금액과 총 과업규모를 협상,조정 
4. 착수 SRS를 리뷰하고 착수보고를 통해 구체적인 과업내용까지 합의,확정
5. 변경 SRS를 기준으로 과업변경을 심의한 후, 변경내역을 SRS에 반영
6. 검수 SRS대로 개발되었는지 테스트하고, 사업수행 결과를 검수



SW진흥법 전부개정안의 요구명세(SRS) 활용방안 요약

항목 현황/개선 설명

1. 제안요청서와 SRS 
현황 상세한 요구사항은 공공SW사업 예산편성부터 검수까지 전 과정에서 사업 
성공의 기초인데, 현행 공공SW사업의 제안요청서 중 사업규모를 산정할 수 있는 B등급* 이상의 비율은 4% 미만에 불과함
개선 과업규모를 산정할 수 있는 B등급 이상의 요구사항을 적은 제안요청서를 공고하도록 의무화

2. SRS와 계약
현황 과업내용을 확정한 후 이를 근거로 계약을 체결하는 것이 바람직 
하나, 계약 체결 전(제안요청→입찰→제안평가→기술협상)에 과업내용을 
합의하는 것은 현실적으로 어려움
개선 과업규모와 금액으로 계약*을 체결하고, SW사업자는 일정기간 내에
착수계획서를 작성하여 보고하는 과정에서 발주자와 SW사업자 쌍방이 구체적인 과업내용 까지 적은 SRS에 합의하도록 함

3. SRS에 근거한 과업변경
현황 과업변경심의위원회가 거의 개최되지 않고* 과업변경을 인정받기
어려워 계약금액의 조정이 이루어지지 않음
* SW계약 4951건 중 0.4%인 23건만이 과업변경심의위원회를 개최
개선 국가기관별로 과업심의위원회를 의무적으로 설치하고 SW
사업자가 과업심의회의 개최를 요청하면 발주기관은 이에 응하도록 규정
ㅇ (과업변경 절차) 과업심의위원회에서 계약시점에 작성한 SRS·산출내역서와 과업내용 변경 요청서를 비교하고 과업변경에 대한 영향도(기간, 금액)를 검토하여 과업 증감량과 이에 따른 계약 금액의 조정을 심의

4. SRS와 사업검수
현황 SW사업의 인수테스트와 검수의 기준이 명확하지 않아 발주자의
재량과 사업기간 등 외부상황에 따라 검수가 이루어짐
개선 SRS가 인수테스트와 검수의 기준 문서가 됨
5. SRS와 사업비 현황 SRS를 작성하는 것이 SW구현비용을 산정하는 기초가 되는데, SRS작성에 전체 사업비의 약 20% 정도가 소요됨
  -> SW구현비용은 FP(Function Point) 또는 MM(Man Month)로 산정하는
      데 이는 국가계약법 상거래실례가, 실적공사비, 원가계산, 견적가 중
      원가계산 방식에 해당하며, SW사업은 이러한 원가계산에만 많은 비용
      이 소요되는 딜레마 상황임
ㅇ (대가기준) 소프트웨어산업협회의 SW사업대가(KOSA) 산정 가이드는
    요구분석 단계에 19%의 가중치를 할당함
ㅇ (실태조사) 요구분석 단계 까지의 인건비 비중은 10%~25%로 조사
개선 충실한 SRS를 위해 지출한 20%의 비용이 나머지 80% 사업비의 낭비를 방지하므로, SRS를 기준으로 SW구현을 계속할지 의사결정하고 적절 하지 않는 경우 구현을 중단4) 하거나 계획 자체를 변경할 수 있는 체계가 필요함
  -> 즉 요구사항 분석을 시작하면 반드시 구현까지 해야 하는 일괄발주
      사업의 제약을 벗어나기 위해, 사업을 분리하여 시행하는 방안이 필요
      함 (SRS에 의해 사업의 진행여부를 판단함)

6. SRS와 선행사업 분리
현황 현행 일괄발주 체계 내에서 SRS의 품질과 명확성을 일정 수준 이상 보장할 수 있는 예산과 기간을 확보하기 어려움
개선 SRS 작성에 상당한 예산과 기간이 소요됨에 따라 별도의 사업으로 분리하여 발주하는 체계가 필요
ㅇ (SRS 수준) 선행 사업의 결과물인 SRS는 소요비용과 역량을 고려할 때
B등급(간이법 FP) 이상의 산출물을 도출할 수 있음

< 출처 : 인사이트리포트 2018-001 요구명세의 중요성과 제도화 방향 >

728x90
반응형
LIST
728x90
반응형
SMALL

Apriori 알고리즘을 이용한 연관규칙 도출방법을 보면 빈발항목중에서 후보집합을 선정하는 기준으로
지지도(Support) 를 사용한다.  이처럼 연관규칙분석을 할ㅣ때 후보집합을 결정하려면 먼가 후보선정/탈락
측정기준이 있어야 하는데..주로 쓰이는게 3가지 기준이 있다.

측정기준 설명 수식
지지도
(Support)
전체 거래중에서 품목 A와 B가 동시에 포함된 거래의 수
예) 마트에서 고객이 구매한 거래내역중에서 빵과,우유를 동시에
     구매한 거래 건수

                    우유,빵 모두 포함된 거래 (A∩B)
    Support =  -----------------------------------
                              전체 거래수(N)
                 A∩B 
A∩B / N = ------
                   N
신뢰도
(Confidence)
품목 A가 구매되었을 때 품목 B가 추가로 구매될 확률
(조건부 확률)

                        우유,빵 모두 포함된 거래 (A∩B)
   Confidence =   ----------------------------------
                             우유가 포함된 거래수 (A)
                 A∩B 
A∩B / A = ------
                   A
향상도
(Lift
/Improvement)
품목 A를 구매할 때 B도 구매하는지 서로 간의 연관성을
파악하는 비율

                             우유.빵 모두 포함된 거래수
                           --------------------------------
                                       전체거래수
Lift  =  -------------------------------------------------------- 
             우유가 포함된 거래수            빵이 포함된 거래수
             ----------------------    X   ----------------------
                 전체거래수                        전체거래수
 
           우유.빵 모두 포함된 거래수 x 전체거래수       
      =   --------------------------------------------- 
           우유가 포함된 거래수 x 빵이 포함된 거래수     

            A∩B x N
      =  -------------
              A x B 


                           > 1 이면 양의 상관관계
                           = 1 이면  독릭접인 관계
                          < 1  이면  음의 상관관계
         A∩B x N
       ------------
           A x B 


예제

문제) 우유와 빵을 함께 구매한 거래가 10%이고,우유를 구매한 거래의 20%가 빵도 구입했을 때
        우유->빵의 상관관계는 ?  (전체거래중 빵을 구입한 거래는 10%이다)

(풀이) 상관관계란 향상도를 뜻한다.  향상도가 > 1 이면 양의 상관관계이다.
         만약 전체거래(N) = 10 이라고 가정하면

         지지도 = 10% = 1/10                즉 우유,빵 함께 구매한 거래가 1건
         신뢰도 = 20% = 1/우유 구매수   즉 우유 구매수 = 5 건
         빵구입이 10% 이므로               즉 빵 구매수 =  1건

                            우유.빵 거래수 X N           1 x 10
          향상도     -------------------------    = --------  =  2
                           우유거래수 x 빵거래수        5 x 1 


Apriori  알고리즘 설명

Apriori알고리즘은 지지도를 이용해서 연관규칙을 찾는 기법중에 하나이다.
  - 연관규칙를 찾아주는 알고리즘 중에서 가장 먼저 개발되었고, 또 가장 많이 사용된다.
  - 연관성규칙의 첫 번째 단계는 항목들 간의 연관성을 나타내기 위한 후보가 되는 
     모든 규칙들을 생성
  - 구매 데이터베이스 내에서 단일 항목들, 2개로 된 항목들, 3개로 된 항목들. 기타 등등의
     모든 조합을 발견
  - 그러나 항목들이 늘어나면 이러한 모든 조합들을 생성하기 위한 계산시간은 기하급수적으로
    증가함.
  - 데이터베이스 내에서 높은 빈도를 갖는 조합 (빈발 항목집합 : Frequent item sets) 을
    찾아내는 것
  - 빈발 항목집합 결정 도구 :지지도(Support)

<출처 : https://www.youtube.com/watch?v=mxXCBFwRGPk >

 위 그림에서 ID 101,102...  가 고객번호라고 생각하고 그 고객이 구매한 상품들이  items 이라고 하자.
[1단계]  단일항목 즉 단일항목 기준으로 해서 구매 빈도수(sup/지지도)를 구해보면 A 항목은 101, 103 고객이 
           구매했으니깐  2 이고, B항목은 3, C항목도 3 ... 이런식으로 구매된 횟수를 카운트 한 결과가  C1 이다. 
           이때 기준 횟수를 2 즉 구매횟수가 2미만인 항목은 제외를 한다 라는 기준을 세운다. (최소 지지도)
           이 기준에 의하면 C1 테이블에서 제외할 항목은 구매횟수가 1인  D 항목이고 D 항목을 제외한 새로운 
           후보집합 L1 을 도출할 수 있다.

[2단계]  L1 후보집합을 기준으로 2개항목 조합을 해서 구매빈도수 즉 지지도를 구한다. 
           그러면 C2 테이블을 만들 수 있다. 이 조합중에서 최소지지도인 2를 충족하지 못하는 (A,B) , (A,E) 조합을
           제외하면 L2 라는 새로운 후보집합을 도출할 수 있다

[3단계] 마찬가지로 L2 후보집합을 기준으로 이번에는 3개항목을 조합해서 구매빈도수(지지도)를 구해본다.
          (A,B,C) , (A,B,E), (A,C,E) ,(B,C,E) 조합이 나올수 있는데 이때 2단계에서 최소지지도에 못미쳐서 제외된 조합이
          (A,B), (A,E) 였기 때문에 (A,B,C) , (A,B,E), (A,C,E) 조합들에서   (A,B), (A,E) 조합이 부분집합으로 포함된 건
          제외해야 하기 때문에 결국 (B,C,E) 조합만 남게 된다. 
          (B,C,E) 조합의 지지도를 구해보면 2 가 되고 이는 최소지지도를 충족하므로 후보집합이 될 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL

연관규칙(Association Rule) 분석기법중에 대표적인 알고리즘이 Apriori 이다.
Apriori 알고리즘은 지지도를 이용해서 연관규칙을 찾는 기법이라고 할수 있다.
  - 연관규칙를 찾아주는 알고리즘 중에서 가장 먼저 개발되었고, 또 가장 많이 사용된다.
  - 연관성규칙의 첫 번째 단계는 항목들 간의 연관성을 나타내기 위한 후보가 되는 
     모든 규칙들을 생성
  - 구매 데이터베이스 내에서 단일 항목들, 2개로 된 항목들, 3개로 된 항목들. 기타 등등의
     모든 조합을 발견
  - 그러나 항목들이 늘어나면 이러한 모든 조합들을 생성하기 위한 계산시간은 기하급수적으로
    증가함.
  - 데이터베이스 내에서 높은 빈도를 갖는 조합 (빈발 항목집합 : Frequent item sets) 을
    찾아내는 것
  - 빈발 항목집합 결정 도구 : 지지도(Support)

Apriori  알고리즘 설명

<출처 : https://www.youtube.com/watch?v=mxXCBFwRGPk >

 위 그림에서 ID 101,102...  가 고객번호라고 생각하고 그 고객이 구매한 상품들이  items 이라고 하자.
[1단계]  단일항목 즉 단일항목 기준으로 해서 구매 빈도수(sup/지지도)를 구해보면 A 항목은 101, 103 고객이
           구매했으니깐  2 이고, B항목은 3, C항목도 3 ... 이런식으로 구매된 횟수를 카운트 한 결과가  C1 이다. 
           이때 기준 횟수를 2 즉 구매횟수가 2미만인 항목은 제외를 한다 라는 기준을 세운다. (최소 지지도)
           이 기준에 의하면 C1 테이블에서 제외할 항목은 구매횟수가 1인  D 항목이고 D 항목을 제외한 새로운
           후보집합 L1 을 도출할 수 있다.

[2단계]  L1 후보집합을 기준으로 2개항목 조합을 해서 구매빈도수 즉 지지도를 구한다. 
           그러면 C2 테이블을 만들 수 있다. 이 조합중에서 최소지지도인 2를 충족하지 못하는 (A,B) , (A,E) 조합을
           제외하면 L2 라는 새로운 후보집합을 도출할 수 있다

[3단계] 마찬가지로 L2 후보집합을 기준으로 이번에는 3개항목을 조합해서 구매빈도수(지지도)를 구해본다.
          (A,B,C) , (A,B,E), (A,C,E) ,(B,C,E) 조합이 나올수 있는데 이때 2단계에서 최소지지도에 못미쳐서 제외된 조합이
          (A,B), (A,E) 였기 때문에 (A,B,C) , (A,B,E), (A,C,E) 조합들에서   (A,B), (A,E) 조합이 부분집합으로 포함된 건
          제외해야 하기 때문에 결국 (B,C,E) 조합만 남게 된다. 
          (B,C,E) 조합의 지지도를 구해보면 2 가 되고 이는 최소지지도를 충족하므로 후보집합이 될 수 있다.

           
           
 

 

728x90
반응형
LIST
728x90
반응형
SMALL

연관규칙이란....

연관규칙분석(Association Rule Analysys)이란 그냥 나열되어 있는 원본 데이터들에 대해서 데이터들간의 연관관계를 탐색하는 무방향성 데이터마이닝 기법중에 하나이다.
보통 마트의 고객들이 구매한 상품간의 연관관계를 찾을 때 많이 사용되는 분석기법이라서 '장바구니 분석' 이라고도 한다.  예를 들어.. 남성 고객이 마트에 가서 구매한 품목을 보니깐 맥주와 기저귀를 같이 구매하는 경우가 많이 나타나면 마트 진열대에 맥주와 기저귀를 같이 배치하는 한다던지 (매장진열), 또 라면을 살때 스윙칩을 같이 사는 형태가 많이 발견된다면 이 두 상품을 합친 패키지 상품을 개발한다던지..(GS25의 오모리김치찌게맛 스윙칩) 여성 고객은 편의점에서 주로 우유와 커피라서 편의점에 들어가면 진열대 가장 잘 보이는 곳에 우유와 커피 제품을 진열하는 것을 볼수 있는데 이런 것들이 모두 연관규칙분석을 통해 효과적인 매장 진열, 패키지상품의 개발, 교차판매 전략수립에 많이 이용된다.
다시 연관규칙을 정의한다면 "데이터들에 대한 발생빈도를 기반으로 데이터간에 연관관계를 찾는 데이터마이닝 기법" 이라고 할수 있다.

데이터마이닝 (Data Mining)

데이터마이닝이란 어떤 데이터들에 대해서 패턴,유사성 등의 관계를 찾아내서 모델을 만든 다음에 새로운 신규 데이터가 들어오는 경우 이 모델에 넣어서 결과를 도출하는 것을 말한다.

데이터마이닝이란 데이터내에서 어떠한 방법(순차 패턴, 유사성 등)에 의해 관심 있는 지식을 찾아내는 과정을 말하는 것으로 대용량의 데이터 속에서 유용한 정보를 발견하는 과정이며, 기대했던 정보뿐만 아니라 기대하지 못했던 정보를 찾을 수 있는 기술을 의미한다. 데이터 마이닝을 통해 정보의 연관성을 파악함으로써 가치있는 정보를 만들어 의사결정에 적용함으로써 이익을 극대화시킬 수 있다. 기업이 보유하고 있는 일일 거래 데이터, 고객 데이터, 상품 데이터 혹은 각종 마케팅 활동의 고객 반응 데이터 등과 이외의 기타 외부 데이터를 포함하는 모든 사용 가능한 Raw 데이터를 기반으로 감춰진 지식, 기대하지 못했던 경향 또는 새로운 규칙 등을 발견하고, 이를 실제 비즈니스 의사 결정 등을 위한 정보로 활용하고자 하는 것. 데이터 마이닝의 적용 분야로 가장 대표적인 것은 데이터베이스 마케닝 분야이다.
[네이버 지식백과] 데이터 마이닝 [data mining] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 전산용어사전편찬위원회)


연관규칙의 특징

특징 설명
장바구니 분석 구매 내역 분석을 통해 동시에 구매될 가능성이 있는 상품의 연관관계를 찾는다.
또는 A제품을 구매 후 B제품을 구매할 가능성이 높은 경우 해당 제품들을 나란히
진열을 하는 경우.
자율학습기법
(Unsupervised Learning)
자율학습의 반대말인 지도학습을 먼저 설명하면 지도학습(supervised Learning)이란 이미 목표변수, 목표값이 정해진 상태에서 데이터를 분석하는 것을 말하며, 자율학습이란 목표변수, 결과값을 모르는 상태에서 데이터를 분석해서 데이터간의 관계를 분석해서 결과값을 도출해내는 분석기법이다. 자율학습기법에 대표적인 것이 바로 연관규칙분석이다.  
   1) 자율학습기법 (Unsupervised Learning)
        - 연관규칙분석
        - 군집분석 :  수많은 데이터들을 2개그룹, 3개그룹 등으로 분류
   2) 지도분석기법 (Supervised Learning)
        - 신경망 분석
        - 의사결정나무 분석
        - 사례기반
        - 로지스틱 회귀분석
탐색적 기법 조건반응(if then else)으로 표현되므로 이해가 쉬윔
 - 만일 A가 일어난다면 B가 일어난다. 
 - 상품 A를 구매하면 상품 B도 구매를 한다.
 - 어떤 Item 집합의 존재가 다른 Item 집합의 존재를 암시
즉 함께 구매하는 상품의 조합이나 패턴을 파악
목적변수 미존재 목적변수(Target Variable) 없이 특성의 조합으로 규칙을 표현하며, 특정한 변수가 아닌 모든 변수 또는 특성에 대하여 예측
규칙간의 독립성 규칙들 간에는 서로 영향을 주지 않기 때문에 하나의 고객이 여러 개의
규칙에 해당 될 수 있음


연관규칙 도출과정


연관규칙 측정기준

< 출처 : 정보관리기술사 118회 모임 - 두드림 >

  *  지지도/신뢰도/향상도에 대한 자세한 설명은 다음 편에서....


연관규칙의 결과 유형

결과유형 설명
Useful Result 분석결과가 마케팅 측면에서 유용한, 쓸만한 결과가 나옴.
예) 맥주와 기저귀 상품과의 구매관계
Trivial Result 어떤 새로운 분석결과가 아닌 기존 마케팅 정책에 의해 연관성이 높게 나온 경우
먼가 새롭게 발견된 구매패턴이 아니고 기존 마케팅 활동 결과로서 예상이 되는
결과를 말함.
예) 정비계약을 맺은 고객이 많은 설비를 구매하더라..  -> 이는 정비계약에 의해
     자연스럽게 따라오는 설비 구매 형태일뿐
Inexplicable Result
(설명할수 없는 결과)
의미를 발견하기 위해 많은 고민이 필요한 경우
예) 새로 철물점을 개업하면 화장시 문고리가 많이 팔림.. -> 연관관계가 있는건지
     고민이 필요함..



활용분야

분야 내용
교차판매 (Cross Selling)
묶음판매 (Bundling)
A제품을 구매한 고객이 B제품을 추가로 구매할 수 있도록 유도하는 전략에 사용
예) 맥주와 기저귀, 양복과 넥타이
상품진열 고객의 구매패터을 고려하여 매대상품을 진열
예) 편의점에 제일 잘보이는 곳에 우유와 커피를 나란히 진열
부정탐지 (Fraud Detection) 신용카드나 보험금 수령 패턴을 분석하여 도난카드나 보험사기 행위를 적발
Catalog Design 상품의 배치문제, 패키지 상품의 구성, 쿠폰발행, 카탈로그의 구성, 신상품의카테고리 설정 등에 활용 가능
첨부 우편물 우편물 내용과 첨부파일과이 관계분석


연관규칙의 주의점

1. 연관규칙분석은 원인과 결과 즉 인과관계를 찾는 게 아니라는 것이다. 맥주가 원인이고 기저귀가 결과라는
   뜻이 아니라 , 맥주와 기저귀가 같이 조합을 이룬다는 뜻이다..
2. 연관규칙 즉 자율탐색기법(Unsupervised Learning) 은 목표변수(Target Variable) 이 없다.. 이 말이  
   무슨 말이냐면.. 연관규칙 분석에 의해 나온 결과값에 대해서 맞다, 안맞다 를 판단하는게 아니라는
   뜻이다. 예를 들어 맥주를 산 고객은 기저귀를 같이 구매를 한다 라고 결과가 나왔지만 이 것이
   정답이 아닐수도.. 즉 맥주를 산 고객이 무조건 기저귀를 사는 것은 아니라는 뜻이다.

728x90
반응형
LIST
728x90
반응형
SMALL

요즘 ICT쪽의 여러가지 화두 중 하나는 데이터 분석, 특히 빅데이터(Big data) 분석이라고 할수 있다.
전통적인 DBMS 를 기반으로 하는 데이터 분석은 데이터의 양이 어마어마 하게 커지고 비정형 데이터
의 중요성이 더 커지면서 한계점에 다다르게 되었다. 
그래서 요즘은  하둡(Hadoop) 이라는 분산데이터저장구조를 기반으로 해서 빅데이터를 분산 저장한 후
이 데이터를 R 이나 Python 등의 Language로 데이터의 통계 분석 및 시각화 작업을 많이 하고 있다.
그럼 R 과 파이썬(Python) 의 차이점 은 머고 장단점은 무엇일까? 어느것이 우리 회사에 맞는 Languge
인지 판단에 조금이라도 도움이 되고자 두 언어를 비교해보고자 한다.

오프소스 분석 도구 R 

R은 통계처리를 위한 공개소프트웨어 패키지로 최근 가장 주목받는 빅데이터 분석 도구이다.
R은 기존 통계 소프트웨어인 S를 바탕으로 만들어졌으며, 자바(Java), C, C++, 파이썬(Python) 등
다른 프로그램 언어와도 쉽게 연동할 수 있으며, windows, Linux, Unix, Mac OS 등 대부분의 개발환경
을 지원한다. 또한 하둡(Hadoop) 분산처리환경을 지원하는 Library 를 제공하기 때문에 구굴, 페이스북
,아마존 등도 빅데이터 분석에 R 을 활용하고 있다. 
R은 연구목적의 업무에 최적화되어 있지만 웬만한 종류의 데이터 분석에도 매우 용이하다. 왜냐면
R은 방대한 양의 Package 와 즉시 사용가능한 테스트 SET 을 제공하기 때문이다. 이 점의 R의 최대 강점
이다. 또한 전세계의 Mail List , Over Flow (네이버 지식인 처럼 묻고 답할 수 있는 커뮤니티) 와 같은
그룹의 도움을 언제든지 받을 수 있는 점 또한 강점이다. (오픈소스 이기 때문..)

파이썬(Python)

1991년 프로그래머인 귀도 반 로섬 이 발표한 고급 프로그램밍 언어로 플랫폼 독립적이며, 인터프리터식
객체지향적, 동적 타이핑(dynamic typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디
<Monty Python's Flying Circus> 에서 따온 것이다. 파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하
는 개방형, 공동체 기반 개발 모델을 가지고 있다. C언어로 구현된 C파이썬이 사실상의 표준이다.
파이썬은 주로 데이터 분석 결과를 다른 웹 애플리케이션에 접목하거나 통계적인 코드를 데이터베이스에
포한시켜야 할 때 사용한다. 필요한 패키지나 라이브러리를 불러오고 조합하여 분석 목적에 맞는 작업을
수행할 수 있다. 또한 직관적인 프로그래밍 언어로 초보자도 쉽게 배울 수 있다는 강점이 있다.
물론 R의 비해 초기 발전단계이자만 최근 몇년 상이 각광을 받으며 많이 발전하고 있다. 

R의 장점

장점 설명
1. 데이터 시각화 시각화된 데이터는 Raw 데이터 보다 훨씬 효과적으로 그 의도를 전달할
수 있으며, R을 처음 만든 목적 자체가 '데이터 분석. 통계학 그리고 시각화
를 하기 위해 좋은 방버을 만들어 보자' 라는 데에서 출발했다.
그 만큼 R은 강력한 데이터 시각화 기능을 가지고 있다.
2. 생테계 R은 정말 풍부하고 다양한 Package와 활발한 Community를 가지고 있다는 것이 큰 강점이다. 말 그래도 'R의 생태계' 를 이루고 있다고 할수 있다.
R함수와 데이터들의 모음인 패키지(Package) , 이를 통해 언제나 쉽게
최근의 테크닉과 기능에 접근이 가능하다.  자료 찾느라고 구글링을 밤새
할필요가 없다.
3. 데이터 사이언스의 통용어 R은 원래 통계학자들에 의해 통계학을 위해 개발되었기 때문에 통계적인
개념이 잘 녹여 있기 때문에 R을 습득하면 데이터 사이언스를 시작하기

 
R의 단점

단점 설명
1. 느린 속도 R은 통계학자들이 좀 더 쉽게 연구하려고 만든 언어이기 때문에
아무래도 컴퓨터를 효율적으로 활용하는 방법은 그리 깊게 고민하지
않았다. 그래서 R은 읽기 어려운 코드 때문에 좀 느릴 수 있다.
하지만 요즘 그런 단점을 상쇄해줄 수 있는 pqR, renjin, FastR, Riposte
등의 패키지가 개발되어 있다.
2. 어렵다 R은 아무래도 고급언어보다는 기계어적인 언어에 가깝다고 볼수 있기
때문에 배우기가 좀 어렵다. 풍부한 패키지 사용에 익숙해지려면 상당한
시간이 걸릴 수 있다.. 어쩔수 없이 꾸준한 학습이 필요한 언어이다


파이썬의 장점

장점 설명
1.lPython Notebook

보통 Languge 들은 통합개발환경(IDE)를 갖고 있다. 예를 들어 Visual Studio 라던가 eclipse 등이 있다. 
파이썬의 IDE가 바로 lPython Notebook 이다 이 환경은 파이썬을 가지고 있는 데이터 작업을 훨씬 쉽게 만들어 준다. 따로 부가적인 설치도 필요없이 동료들과 메모와 작업을 공유할수 있으며 이를 통해 코드, 결과물, 메모파일들을 정리하는데 필요한 비용을 획기적으로 줄여줄 수 있다.
파이썬의 Libaray 중 하나인 lPython은 대화형 방식으로 Python 의 
웹기반 Notebook을 지원하고 있다. 현재는 (Julia + Python + R)을 
합쳐서 Jupyter Notebook 으로 발전했다.
2. 특정 주제나 용도에 국한되지
  않은 배우기 쉬운 언어
파이썬은 특정 분야를 위한 언어가 아니라 비교적 쉽고, 직관적인
UI를 가지고 있다. 따라서 데이터 사이언스 말고도 다양한 분아에
적용이 가능하다.
3. 다양한 용도의 언어 파이썬은 다양한 백그라운드의 사람들이 모두 사용할수 있는 언어이다 . 이해하기 쉬운 언어이기 때문에 통계 백 그라운드를 가진 사람들도 배울수 있다. 


파이썬의 단점

단점 설명
1. 시각화 기능이 아쉽다. R의 최대 장점이었던 시각화 기능이 파이썬에서는 가장 큰 단점이기도 한다. 시각화는 데이터 분석의 효율성을 높이는 데 중요한 요소이지만 파이썬은 R에 비해 시각화 기능이 떨어져 있다. 
2. 파이썬은 도전자이다. 데이터 분석 툴에 있어서 R이 파이썬보다 선구자적인 위치에 있다.
파이썬은 후발주자라고 할수 있다. 그래서 R의 수백개 Package 에 
비해 파이썬은 아직은 많이 부족하다고 할수 있다. 파이썬이 최근 각광을 받고 있지만은 R의 방대한 Package 를 포기하고 파이썬으로 갈아탈지는 아직은 미지수이다. 
728x90
반응형
LIST

'디지털서비스' 카테고리의 다른 글

LBS (Location Based Service) 측위 기술  (0) 2019.10.16
디지털 트윈 (Digital Twin)  (0) 2019.10.10
머클트리(Merkle Tree)  (0) 2019.09.19
Data Lake - 데이터 단일 저장소  (0) 2019.09.09
망중립성 (Network Neutrality)  (0) 2019.09.08

+ Recent posts