T'SPACE

다채로운 에디터들의 이야기

728x90
반응형

컴퓨터공학 55

k-fold cross-validation 교차 검증 (언더핏팅 방지)

cf) 데이터 train data : 학습을 통해 가중치, 편향 업데이트 validation data : 하이퍼파라미터 조정, 모델의 성능 확인 test data : 모델의 최종 테스트 하이퍼파라미터 : 값에 따라서 모델의 성능에 영향을 주는 매개변수들(ex. learning rate, 은닉층의 수, 뉴런의 수 등) ↔ 가중치, 편향은 학습을 통해 바뀌어져가는 변수이다. cf) 기존 방식 1. 교차검증(cross-validation) 같은 데이터를 여러 번 반복해서 나누고 여러 모델을 학습하여 성능을 평가하는 방법 데이터를 학습용/평가용 데이터 세트로 여러 번 나눈 것의 평균적인 성능을 계산하면, 한 번 나누어서 학습하는 것에 비해 일반화된 성능을 얻을 수 있기 때문 (조금 더 안정적인 성능이 나옴) 장..

Overfitting 과적합

오버피팅(overfitting)이란? 학습 데이터에 대해 과하게 학습하여 실제 데이터에 대한 오차가 증가하는 현상 train-set에서는 정확도 매우 높게 나옴, but test-set에서는 낮은 정확도 오버피팅이 발생하는 이유 훈련 데이터의 부족 적은 양의 훈련 데이터로 모델을 훈련시키면, 모델은 훈련 데이터에만 맞추기 쉬움 복잡한 모델 구조 모델이 지나치게 복잡하면 훈련 데이터에 대한 노이즈나 특정 패턴을 학습하게 되어 일반화 성능이 감소 과도한 훈련 훈련 데이터에 모델을 지나치게 많이 학습시키면 특정 데이터에 과적합될 가능성이 높아짐 해결 방안 더 많은 데이터 수집 더 많은 데이터를 수집함으로써 다양한 상황에서도 일반화 되도록 함 데이터 확장 기존 데이터를 변형하여 새로운 데이터를 생성함으로써 훈련..

[LG Aimers] 해카톤 후기, 코드 분석

*LG Aimers 문제를 공개하면 문제가 있을까봐 간소하게 설명 합니다 문제 Train.csv 파일과 Submission.csv 파일을 두개 준다 Train 파일로 학습을 시켜 True, False를 판단해야하고 Submission에 주어진 정보로 True, False를 판단해 제출하면 채점을 하게 된다 1. Column, 필드(파라미터)가 엄청 많다 2. 결측값(Null Data, Missing Data)이 상당하다 3. 데이터의 질(오타, 형식)등이 고르지 않다 코드 1. 데이터 셋 읽어오기 df_train = pd.read_csv("train.csv") # 학습용 데이터 df_test = pd.read_csv("submission.csv") # 테스트 데이터(제출파일의 데이터) column_to_..

[백준,C++] 18110번 : solved.ac / 사사오입과 오사오입이란?

https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net * 해결 아이디어 N명의 사람의 15%를 구한 후, 1~30점 난이도 의견 배열의 앞과 뒤에서 1씩 빼준다. 그려면 30% 절사평균이 구현되며, 배열에 들어있는 값들을 평균내어 문제에 알맞게 출력하면 된다. #include #include #include #include #include #include #include #include #include #include #..

Strassen Algorithm (스트라센 알고리즘) 행렬의 곱

위와같은 두 행렬들이 있다하자 그러면 행렬 A와B의 곲 C는 다음과 같이 표현된다 그러면 아래와같이 이해될 수 있다 이 행렬의 곱 알고리즘의 시간 복잡도는 O(n^3)의 복잡도를 가진다 그래서 매우 큰 행렬들의 곱을 계산할 때는 매우 버거워진다 그의 결과로 분할정복의 한 방법인 Strassen 알고리즘이 나왔다 각 행렬들을 이렇게 4분할을 해보자 그러면 이렇게 계산해도 결과가 나온다 하지만 이건 또 결국 계산을 하다보면 O(n^3)의 복잡도를 가진다 그럼 Strassen 알고리즘은 어떻게 분할하냐? 위의 행렬들을 정의 해준다 그럼 아래와 같은 곱이 성립 한다 행렬의 곱셈을 한번 줄이고! 덧셈을 늘렸다! 그래서 O(n^3)->O(n^2) 로 수렴하게 된다 왜냐 행렬의 곱셈은 for문 골치거리이기 때문에 그..

C++, C 언어 알고리즘 표준 입출력

C++ 입출력 최적화: sync_with_stdio와 cin.tie 이해하기 코딩테스트에서 표준 입출력을 사용할 때 주로 scanf/printf 또는 cin/cout을 사용합니다. C++에서는 string과 같은 편의 기능을 제공하는 cin/cout을 주로 사용하게 됩니다. 그러나 주의해야 할 점은 cin/cout을 사용할 때 시간초과를 막기 위해 특별한 조치가 필요하다는 점입니다. 1. ios::sync_with_stdio(0)과 cin.tie(0) C++에서는 입출력 버퍼를 동기화하는 작업이 기본적으로 수행됩니다. 그러나 이 작업은 입출력의 양이 많을 때 시간을 소비할 수 있습니다. 따라서, 입출력 작업이 많은 경우에는 이 동기화 작업을 해제하는 것이 좋습니다. 동기화 작업 해제를 위해 아래의 두 명..

[백준/C++] 1541: 잃어버린 괄호

문제 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다. 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 입력 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다. 출력 첫째 줄에 정답을 출력한다. 예제 입력 1 복사 55-50+40 예제 출력 1 복사 -35 예제 입력 2 복사 10+20+30+4..

[백준,C++] 1463번: 1로 만들기

문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 예제 입력 1 복사 2 예제 출력 1 복사 1 예제 입력 2 복사 10 예제 출력 2 복사 3 힌트 10의 경우에 10 → 9 → 3 → 1 로 3번 만에 만들 수 있다. 진짜 다양한 방법으로 생각해봤는데 우선 3으로 나누는게 무조건 이득이라 생각해 3으로 나눠지게 만든 ..

[백준,C++] 1107 : 리모컨

문제 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다. 수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장났는지 주어졌을 때, 채널 N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시오. 수빈이가 지금 보고 있는 채널은 100번이다. 입력 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개..

[백준,C++] 1074번 : Z

문제 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 크기가 2N-1 × 2N-1로 4등분 한 후에 재귀적으로 순서대로 방문한다. 다음 예는 22 × 22 크기의 배열을 방문한 순서이다. N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오. 다음은 N=3일 때의 예이다. 입력 첫째 줄에 정수 N, r, c가 주어진다. 출력 r행 c열을 몇 번째로 방문했는지 출력한다. 제한 1 ≤ N ≤ 15 0 ≤ r, c < 2N 예제 입력 1 복사 2 3 1 예제 출력 1 복사 11 예제 입력 2 복사 3 7 7 예제 출력 ..

728x90
반응형