[Day28] 캐글 경진대회 노하우 & Full Stack ML Engineer
캐글은 세계에서 가장 유명한 AI 경진대회 플랫폼이다.
캐글 경진대회
- 캐글의 전반적인 소개로 너무 좋았다.
- 어떻게 시작해야 하는지와 캐글 용어들에 대해서 자세히 알게 되었다.
제출까지 파이프 라인을 먼저 만들고 진행하는 것이 좋다.
이 파이프 라인을 기준으로 파라미터 및 feature engineering을 통해서 점수를 개선한다.
또 이 파이프 라인이 너무 오래 걸리면 다른 방법을 찾아보는 것이 좋다 ex) GPU를 더 좋은 것으로 바꾼다 or 데이터를 줄여본다.
Full Stack ML Engineer
- Full stack의 전반적인 파이프 라인으로 이해하기 좋았다.
- Data version 관리 및 loader개발은 유익한 내용이였다.
- 데이터 대시보드 - streamlit
피어세션
- 저번에 풀어봤던 백준 17142번: 연구소 3에 대해서 다른 사람 소스를 보고 토론을 진행하였다.
import collections as col
def DFS(cnt, idx_list):
if len(idx_list) == M:
subset.append(idx_list)
return
for i in range(cnt, total_virus):
if not used[i]:
used[i] = 1
DFS(i, idx_list + [i])
used[i] = 0
def BFS(i, j, idx):
que = col.deque()
que.append((i, j))
cnt = 1
while que:
for _ in range(len(que)):
u, v = que.popleft()
for n in range(4):
if 0 <= u + dirs[n][0] < N and 0 <= v + dirs[n][1] < N:
if board[u + dirs[n][0]][v + dirs[n][1]] != 1:
if void_dict[(u + dirs[n][0], v + dirs[n][1])][idx] == 9999:
void_dict[(u + dirs[n][0], v + dirs[n][1])][idx] = cnt
que.append((u + dirs[n][0], v + dirs[n][1]))
cnt += 1
def find_num(idxs):
global answer
max_value = 0
for numbers in results:
min_value = 9999
for idx in idxs:
if numbers[idx] < min_value:
min_value = numbers[idx]
if min_value > max_value:
max_value = min_value
if max_value >= answer:
return
answer = max_value
dirs = [(-1, 0), (1, 0), (0, -1), (0, 1)]
N, M = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(N)]
total_virus = 0
void_dict = {}
subset = []
answer = 9999
for i in range(N):
for j in range(N):
if board[i][j] == 2:
total_virus += 1
void_dict[(i, j)] = [9999] * 10
elif not board[i][j]:
void_dict[(i, j)] = [9999]*10
used = [0]*total_virus
DFS(0, [])
n = 0
for i in range(N):
for j in range(N):
if board[i][j] == 2:
BFS(i, j, n)
n += 1
for i in range(N):
for j in range(N):
if board[i][j] == 2:
void_dict[(i, j)] = [0] * 10
results = list(void_dict.values())
for i in range(len(subset)):
find_num(subset[i])
if answer == 9999:
answer = -1
print(answer)
모든 경우의 수를 각각 탐색하는 방법이 아니라 각 바이러스가 걸리는 시간을 미리 저장해 두어서 그 값에서 최소값을 찾는 방식으로 시간을 단축하였다.
'AI > 부스트 캠프 AI tech' 카테고리의 다른 글
[Day32] Semantic Segmentation (0) | 2021.03.09 |
---|---|
[Day31] Image Classification I & data Augmentation (0) | 2021.03.08 |
[Day30] AI + ML과 Quant Trading & AI Ethics (0) | 2021.03.05 |
[Day29] NLP를 위한 언어 모델의 학습, 평가 & AI와 저작권법 (0) | 2021.03.04 |
[Day27] 서비스 향 AI 모델 개발 & AI 시대의 커리어 빌딩 (0) | 2021.03.02 |
[Day24] 정점 표현 & 추천시스템(심화) (0) | 2021.02.25 |
[Day23] 군집 탐색 & 추천 시스템(기초) (0) | 2021.02.24 |
[Day22] 페이지랭크 & 전파 모델 (0) | 2021.02.23 |