모델을 만들때 데이터의 특성을 파악해서 확률적으로 접근할 필요가 있다고 함.
기계학습 모델을 확률적으로 이해하기

경우의 수를 알아야 확률을 알 수 있음.
<경우의 수를 계산 하는 방법>


<순열의 예시>
기계 학습 모델 학습을 위해 n개의 학습 데이터로 학습을 진행 하려고 함
이때 매번(에포크) 모델에 학습 데이터를 넣을 순서를 섞어서 학습을 진행한다.
에포크 : 학습 데이터 세트에 포함된 모든 데이터가 한번씩 통과한 횟수를 말한다.
from itertools import permutations
arr = [ 'a','b','c']
원소 중에서 2개를 뽑는 모든 순열 계산
result = list(permutations(arr,2))
print(result)
itertools: 파이썬에서 반복 가능한 데이터구조(리스트, 튜플 등)에서 조합, 순열 등 다양한 반복 작업을 쉽게 수행할 수 있도록 도와주는 표준 라이브러리 이다.
permutations: itertools 에서 제공하는 함수로, 주어진 리스트 등에서 순열(순서가 다른 경우의 수)을 생성한다.
permutations(arr, 2):
arr에서 2개의 원소를 선택해 나올 수 있는 모든 순열을 생성합니다.
순서가 다르면 다른 경우로 간주됩니다.
list(): permutations는 이터레이터(iterator) 형태로 결과를 반환하기 때문에, 이를 보기 쉽게 리스트로 변환합니다.
result에는 모든 경우의 수가 튜플 형태로 저장됩니다.
추가 설명 – 순열과 조합의 차이
순열 (Permutation): 순서가 중요 → ('a', 'b') ≠ ('b', 'a')
조합 (Combination): 순서가 중요하지 않음 → ('a', 'b') = ('b', 'a')
조합 예시
샴 네트워크: 투이미지를 받아서 같은지 다른지 판단하는 방식으로 동작하는 네트워크 => 두개의 이미지의 순서는 바뀌어도 상관이 없다는 점
from itertools import combinations
arr =['a','b','c']
원소 중에서 2개를 뽑는 모든 조합 계산
result = list(combinations(arr,2))
print(result)
중복 순열
서로 다른 n개에서 중복을 포함해 r개를 뽑아 특정한 순서로 나열하는 것을 의미한다.
from itertools import product
arr2 =['a','b','c']
원소 중에서 2개를 뽑는 모든 중복 순열 계산
result2 = list(product(arr2,repeat=2))
print(result2)
product: 데카르트 곱(cartesian product)을 구하는 함수로, 중복을 허용한 순열을 생성합니다.
product(arr2, repeat=2):
arr2에서 2개의 원소를 뽑아 중복을 허용해 모든 가능한 조합을 생성합니다.
중복을 허용하기 때문에, 같은 요소가 반복해 나올 수 있습니다.
repeat=2는 두 번 선택하는 것을 의미합니다.
중복 조합 : 서로 다른 n개에서 중복을 포함해 순서를 고려하지 않고 r개를 뽑는 것을 의미
중복 조합 예시
딥러닝에서 학습된 모델의 결과를 활용하여 최종적인 결과를 생성하는 앙상블 방법이 존재
from itertools import combinations_with_replacement
arr3 = ['a','b','c']
원소 중에서 2개를 뽑는 모든 중복 조합 계산
result3 = list(combinations_with_replacement(arr3,2))
print(result3)