기존 애자일 방법론의 단점을 효율적으로 처리할 수 있는 새로운 방법론

특징

  1. 실용성 강조
  2. 개발 속도를 높이는 가속 기술
    - 단순한 디자인 정신 + 테스트 우선 프로그래밍 + 리팩토링
  3. XP의 목표 : “고객에게 최고의 가치를 가장 빨리” == 소프트웨어를 빨리 개발하다
  4. XP의 가치 기준
    - 의사소통, 단순함, 피드백, 용기, 존중 등 5가지
  5. 사용자 스토리 작성
    - 고객이 원하는 기능을 짧게 표현한 카드
    - 지속적인 대화로 요구사항을 이끌어 내는 방식

 

XP 개발 프로세스

1) 사용자 스토리(user story)
- 고객이 원하는 기능을 간단한 시나리오로 표현

2) 릴리즈 계획 수립
- 시스템의 개발이 완료되는 시점과 완수하기 위한 일정 계획

3) 이디레이션
- 프로젝트의 일정을 더 작게 분할

4) 인수 테스트
- 구현된 부분에 대한 테스트

5) 작은 릴리즈
- 반복적으로 고객에게 결과물을 전달, 평가 받음
- 고객의 승인 필요

'학부과정 > 소프트웨어공학' 카테고리의 다른 글

Agile Methodology(애자일 방법론)  (0) 2022.10.10
4세대 기법  (0) 2022.10.10
나선형 패러다임(sprial)  (0) 2022.10.09
원형 패러다임  (0) 2022.10.06
폭포수 모델  (0) 2022.09.06

Neural Network

인간 뇌의 기능을 묘사
- data : 자극이 입력기관을 통해 뇌로 입력
- activation : 자극이 들어오면 뉴런이 활성화
- weight : 같이 활성화되는 뉴런들은 강하게 연결된다

Linear Separability : 선형분리가능성

  • 선으로 무엇을 할 수 있을까?

공간을 분할해서 class를 분류할 수 있다

  • 빨간 부분 : y = f(x) > 0
  • 파란 부분 : y = f(x) < 0

이를 구분하는 수식
: x1,x2 값에 w1,w2 가중치를 곱하고 w0(절편)(인터셉트)(바이어스)을 더한다

 

위 수식을 그림으로 설명하면
- x1,x2으로 받아들이는 input값에 w1, w2 가중치를 곱하고
- 해당 값에 w0 절편을 더해서 해당 값이 0보다 크면 위, 작으면 아래로 class를 구분한다

  • 입력이 I개, 가중치 또한 I개, 절편은 1개
  • 연산이 된 값들이 더해져서 Weighted summation(가중합) 된다

가중합이 된 상태에서 어느 영역에 속하는지 판단한다 == Activation function(활성함수) = 공간을 분할한다

 

 

'학부과정 > 머신러닝' 카테고리의 다른 글

Train, Test, 교차검증  (0) 2022.11.09
과대적합, 과소적합  (0) 2022.11.09
MSE, MAE  (0) 2022.11.09
머신러닝_1  (0) 2022.11.09
강화&Batch&온라인 학습  (0) 2022.10.11
Service Code in $v0 Arguments Result
print integer
1
$a0 = integer to print
 
print float
2
$f12 = float to print
 
print double
3
$f12 = double to print
 
print string
4
$a0 = address of null
 
read integer
5
  $v0 contains integer read
read float
6
 
$v0 contains float read
read double
7
 
$v0 contains double read
read string
8
$a0 = address of input buffer
 
read string
8
$a1 = maximum number of characters to read
 
sbrk(allocate heap memory)
9
$a0 = number of bytes to allocate
 

'학부과정 > 컴퓨터 구조' 카테고리의 다른 글

MIPS assembly code  (0) 2022.12.21
컴퓨터 구조  (0) 2022.10.11
    .text
    .globl_start
__start:
    la $a0, str
    li $v0, 4
    syscall 

    li $v0, 10
    syscall

       .data
str:    .asciiz “hello world\n”

hello world를 출력하는 프로그램

  • text 세그먼트에서는 실제 수행할 명령어들이 들어간다(코드 부분)
  • data 세그먼트에는 코드에서 사용하는 데이터를 기술한다

  • la : load address
  • li : load immediate

str 안에 hello world라는 문장이 들어간 것을 볼 수 있고,
la $a0, str을 보면 str에 들어간 값을 $a0에 집어넣는 것

li $v0, 4 ==> 4번에 해당하는 서비스 해줘 : 4라는 값을 $v0에 넣으라는 것 이다

여기서 4번이란, print를 의미한다
내가 직접 print하는 건 귀찮으니, 원하는 서비스 번호를 입력하여 사용하는 것

li $v0, 10 ==> 10번에 해당하는 서비스 해줘

 

  • 4번 : Print
  • 10번 : Program Exit

syscall로 해당 서비스 실행

 

'학부과정 > 컴퓨터 구조' 카테고리의 다른 글

MIPS_info  (0) 2022.12.21
컴퓨터 구조  (0) 2022.10.11

인접행렬 장&단점

장점

  • 구현하기 간단하다
  • ((i,j)에 간선이 있는지 알기 쉽다)

 

단점

  • 아무리 간선수가 적어도 O(n^2)개의 방이 필요하다

 

연결리스트

장점

  • 공간이 절약된다

 

단점

  • (i,j) 사이에 간선이 있음을 알기위해 연결리스트 탐색 시간 필요
 
 

 

'학부과정 > 알고리즘' 카테고리의 다른 글

이진탐색트리의 높이  (0) 2022.12.21
이진트리  (0) 2022.12.21
트리  (0) 2022.12.16

이진탐색트리의 높이(깊이)

  • 최악의 경우 높이 n
  • 랜덤하게 만들면
  • (균형 탐색 트리)-높이가 O(log2n)을 보장

 

경사이진트리 = 최악의 이진탐색트리

이진탐색트리의 중위순회

  • 이진탐색트리를 중위순회하여 데이터를 출력하면 정렬된 데이터를 얻게 된다
 

'학부과정 > 알고리즘' 카테고리의 다른 글

인접행렬  (0) 2022.12.21
이진트리  (0) 2022.12.21
트리  (0) 2022.12.16
  • 이진트리 = 루트 + 왼쪽 서브트리 + 오른쪽 서브트리
  • 어떤 일반트리도 이진트리로 변환 가능하다
  • 왼쪽에서 오른쪽 순서로 이동

최소노드의 개수

  • 레벨에 하나씩만 노드가 있다는 가정하에
    최소노드의 수는 h + 1

최대노드의 수

 
  • 최대노드의 수는 (2 ^ h+1) - 1

 

'학부과정 > 알고리즘' 카테고리의 다른 글

인접행렬  (0) 2022.12.21
이진탐색트리의 높이  (0) 2022.12.21
트리  (0) 2022.12.16

Tree = root + subtrees

  • 루트 노드(root node) : 부모 노드가 없는 중심이 되는 노르[트리에서 단 1개만 존재]
    - ex) 1

 

  • 서브 트리(sub tree) : 루트 노드를 제외한 나머지 노드
    - ex ) 2, 3, ..., 9 , 10
  • 리프 노드(leaf node) : 자식 노드를 가지고 있지 않은 트리의 말단에 있는 노드
    - ex) 7, 8, 9, 10

  • 부모 노드(parent node) : 어떤 노드와 간선으로 연결되어 있고 위에 있는 노드
    - ex) 2번 노드는 4,5 번 노드의 부모 노드

  • 자식 노드(children node) : 어떤 노드와 간선으로 연결되어 있고 그 아래에 있는 노드
    - ex) 4,5번 노드의 부모는 2번 노드

  • 형제 노드(sibling) : 같은 부모 노드를 가지는 노드
    - ex) 8,9번 노드는 5번 노드를 부모로 하는 형제 노드

  • 노드의 크기(size) : 자신을 포함한 모든 자식 노드들의 개수

  • 노드의 차수(degree) : 어떤 노드가 가지고 있는 자식 노드의 개수
    - ex) 4번 노드의 차수는 1

  • 노드의 깊이(depth) : 루트 노드에서 어떤 노드까지 도달하기 위해 거치는 정점의 개수
    ex) 6번 노드의 깊이는 2이다
  • 트리의 레벨(level) : 트리의 각 층에 번호를 매긴 것이다. 루트의 레벨은 0이다.
    - ex) 6번 노드의 레벨은 2

  • 트리의 높이(height) : 가장 깊이가 깊은 노드의 깊이
    - ex) 트리의 높이는 3이다
    - 교재에 따라서 root nodeLevel1부터 시작하는 경우도 있다
 
 

 

'학부과정 > 알고리즘' 카테고리의 다른 글

인접행렬  (0) 2022.12.21
이진탐색트리의 높이  (0) 2022.12.21
이진트리  (0) 2022.12.21

Train, Test 데이터 셋을 분리시키는 이유

  • Train 데이터로 학습한 후, Test데이터로 실험을 해봄으로써 지표를 확인한다
    (70:30 정도)

교차검증이란?

  • Train 데이터 셋을 나눈다
    ex) 5개정도로 나눈다고 가정(Fold 1 ~ 5)

    1번째 학습에서는 Fold2 ~ 5까지 학습
    2번째 학습에서는 Fold1,3,4,5를 학습
    3번째 학습에서는 Fold1,2,4,5를 학습
    4번째 학습에서는 Fold1,2,3,5를 학습
    5번째 학습에서는 Fold1,2,3,4를 학습
  • 각각의 학습에서 빠지는 Fold는 Validation, 즉 검증 데이터셋이 되는 것
  • 4개의 학습 데이터셋으로 학습을 시키고, 남은 1개의 Fold를 활용해서 성과지표를 임시로 만들어냅니다.
    그렇게 성과지표 1,2,3,4,5가 만듭니다

    임시적인 성과지표의 평균을 내서 대략적인 성과지표를 만든다.

교차검증을 하는 이유

  • Test 데이터셋을 넣어서 학습을 시킬 때 나오는 성과지표가 안정적으로 확보할 수 있도록 다양한 방식으로 
    학습을 시키는 것

 

'학부과정 > 머신러닝' 카테고리의 다른 글

Neural Network  (0) 2023.01.03
과대적합, 과소적합  (0) 2022.11.09
MSE, MAE  (0) 2022.11.09
머신러닝_1  (0) 2022.11.09
강화&Batch&온라인 학습  (0) 2022.10.11

과대적합(Overfitting)

  • 모델이 학습데이터에 과도하게 치우쳐져 학습이 진행된 것
    사례 ex) 2017,2018년도 기출문제를 완벽하게 알고있지만, 2019년도에서는 전년도 기출문제에서 나오지 않으면?

과소적합(Underfitting)

  • 성과자체가 너무 좋지 않은 것
    사례 ex) 기출문제도 모르는 상태로 시험을 푼다

'학부과정 > 머신러닝' 카테고리의 다른 글

Neural Network  (0) 2023.01.03
Train, Test, 교차검증  (0) 2022.11.09
MSE, MAE  (0) 2022.11.09
머신러닝_1  (0) 2022.11.09
강화&Batch&온라인 학습  (0) 2022.10.11

+ Recent posts