공부하고 전파하는 것을 좋아합니다. 빅데이터와 인공지능에 오랜 경력이 있습니다.
20년 현업 데이터분석가 경력, 5년 데이터 분석 강의!
빅데이터 및 인공지능 분야 기업 및 공공기관 자문 및 출강
빅데이터 분석기사 한권완성 필기, 실기 저자
인공지능 분야 스타트업 대표
강의
수강평
- [2026] 비전공자도 한 번에 합격하는 SQLD 올인원
- [2026] 비전공자도 한 번에 합격하는 SQLD 올인원
- [2026] 비전공자도 한 번에 합격하는 SQLD 올인원
- [2026] 비전공자도 한 번에 합격하는 SQLD 올인원
게시글
질문&답변
11회차 2유형 질문.
안녕하세요. 알고런입니다.질문에 대해서 결론 부터 말씀드리자면,시험 자체만을 두고 봤을 때 Validation 데이터로 분할하여 정확도, auc 등을 구하는 게 필수는 아닙니다. 시험에서 2유형은 코드 작성 과정이 아니라 제출한 예측 결과(CSV)의 성능만으로 채점됩니다. 따라서 질문처럼 인코딩 → 학습 → test 예측 → 제출, 이렇게 결과만 내도 답안으로 전혀 문제없습니다.(물론, 실무에서는 100% 데이터를 validation으로 분할하여 정확도, auc 등의 성능 지표를 확인합니다.)하지만, 시험 칠 때 시간이 절대적으로 부족하거나 코드에 익숙하지 않은 경우를 제외하고는..가급적이면 validation 데이터셋을 이용해서 여러 성능 지표를 점검해보시기를 권해드립니다.그 이유는 제출 전에 실수를 하지 않았나, 스스로 점검할 수 있기 때문입니다. 시험장에서는 test의 정답을 알 수 없습니다. 그래서 train 일부를 떼어 검증해 보면, 제대로 문제를 풀었는지 확인해볼 수 있습니다. 예를 들어 다음과 같은 점을 알 수 있습니다.AUC가 0.5 근처로 나온다 → 인코딩 실수, 컬럼 누락 등 모델이 깨졌을 수 있다는 신호를 제출 전에 발견 가능. AUC 의 값은 0.5 ~ 1.0 사이의 값이 나오며 0.5에 가까울 수록 성능이 낮은 겁니다.확률(predict_proba)을 내야 하는데 라벨(predict)을 내는 흔한 실수도 자연스럽게 걸러낼 수 있음3~5분 투자로 40점짜리 문제의 치명적 실수를 막아주는 보험이라고 보면 좋겠습니다.제가 권장하는 코드 작성 흐름은 아래와 같습니다.인코딩 → train/val 분할 → 학습 → val 성능 확인 → test 예측 → 저장이때 전체 데이터로 재학습하는 단계를 한 번 더 가져도 좋습니다. 실무에서는 하이퍼파라미터 튜닝 등을 통해 성능을 향상시키는 작업을 하겠지만, 시험에서 하이퍼파라미터 튜닝은 좀 어려울 수 있습니다. 그러니 데이터를 분할하지 않고 전체 train 재학습 과정을 다시 거치는 것도 시험용으로는 나름 괜찮아 보입니다.인코딩 → train/val 분할 → 학습 → val 성능 확인 → 전체 train 재학습 → test 예측 → 저장아래는 빅분기 실기 2유형 파이썬 기본 골격 코드입니다. 코드 골격을 익혀 놓으시면 실수를 줄일 수 있습니다. 그럼 수고하시구요. 시험 잘 보시길 응원하겠습니다. 감사합니다.pythonimport pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier #랜덤포레스트는 성능이 좋은 편임 from sklearn.metrics import roc_auc_score #문제에서 원하는 성능 측정 함수 추가 # 1. 데이터 로드 및 인코딩 train = pd.read_csv('train.csv') test = pd.read_csv('test.csv') X = pd.get_dummies(train.drop(columns=['target'])) #원핫인코딩 y = train['target'] X_test = pd.get_dummies(test) #테스트용 데이터 원핫인코딩 # 2. [검증용] 분할 후 성능 확인 — 채점과 무관, 문제 풀이 단계에서 확인용 X_tr, X_val, y_tr, y_val = train_test_split(X, y, test_size=0.2, random_state=42) model = RandomForestClassifier(random_state=42) model.fit(X_tr, y_tr) print('val AUC:', roc_auc_score(y_val, model.predict_proba(X_val)[:, 1])) # → 0.5 근처면 어딘가 잘못된 것. 제출 전에 발견 가능 # 3. [최종] 전체 데이터로 재학습 후 예측·제출 model.fit(X, y) #이 단계는 생략 가능. 전체 데이러토 재학습 하는 과정. 실무에서는 미수행 pred = model.predict_proba(X_test)[:, 1] # 확률 요구 시. 라벨 요구 시 predict() pd.DataFrame({'pred': pred}).to_csv('result.csv', index=False)
- 좋아요수
- 1
- 댓글수
- 1
- 조회수
- 25
질문&답변
알고런io 이용 관련 문의
안녕하세요. 알고런입니다. 말씀하신 내용은 윈도우 IME(Input Method Editor) 환경에서 키보드 입력시 한글 및 특수문자 처리 버그인거 같습니다. 쉼표나 특수 문자 입력시 종종 발생하는 버그인거 같은데요. 특수 문자 처리시에 이런 버그가 발생하지 않는 처리를 프로그램에 적용했습니다.다만, 이런 버그가 환경에 따라서 발생하지 않을 수 있어서요. 제가 테스트를 해볼 수가 없네요. 사용해보시구요. 혹시 잘 안되시면 support@algolearn.io 로 이메일을 보내주십시오.감사합니다.
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 28
질문&답변
76번 문제
안녕하세요. 알고런입니다.기존 노랭이 교재의 문제가 잘 못되어 있어서, 문제 오류라고 강의에서 안내를 드렸는데요. 다행이 개정 출간하면서 문제를 바로 잡았네요. 알려주셔서 감사드리구요. 해당 내용은 보완을 해 두겠습니다. 시험 보시느라고 수고하셨습니다.🙂감사합니다.
- 좋아요수
- 1
- 댓글수
- 2
- 조회수
- 32
질문&답변
64번 문제 관련
안녕하세요. 알고런입니다. 시험 전날이네요. 헷갈리는 부분이라 빠르게 정리해 드릴게요. 결론부터 말하면, 방향은 PRIOR가 “어느 컬럼”에 붙느냐로 정해집니다. “테이블 기준으로 정해진다”는 이해는 살짝 어긋나 있어요. 1. 먼저 컬럼 구조부터 바로잡기부서 테이블은 보통 이렇게 생겼습니다. ∙ 부서코드 : 그 행(부서) 자기 자신의 식별자 ∙ 상위부서코드 : 그 부서의 부모를 가리키는 포인터 여기서 핵심은, “부모/자식”은 행(row)들 사이의 관계이지 컬럼 이름이 아니라는 점이에요. 그래서 “부모 = 부서코드, 자식 = 상위부서코드” 라는 표현은 개념이 살짝 꼬여 있습니다. 정확히는 이렇습니다:자식 행의 상위부서코드 = 부모 행의 부서코드즉 모든 행이 부서코드(나의 ID) 와 상위부서코드(부모를 가리키는 값) 를 둘 다 가지고 있고, 같은 행이라도 위에서 보면 자식, 아래에서 보면 부모가 됩니다. 2. PRIOR의 의미PRIOR는 “이미 읽은 부모 행(한 단계 이전 행)” 을 가리키는 키워드입니다. CONNECT BY 식은 항상 이 등식이에요. [부모(이전) 행의 부서코드] = [자식(현재) 행의 상위부서코드] = PRIOR 부서코드 = 상위부서코드 3. 방향을 정하는 진짜 기준PRIOR가 어느 컬럼에 붙느냐가 방향을 정합니다. 등호의 좌우 순서는 아무 의미 없습니다. 정방향 (최상위 → 하위로 전개)START WITH 상위부서코드 IS NULLCONNECT BY PRIOR 부서코드 = 상위부서코드 역방향 (특정 부서 → 상위로 거슬러 올라감)START WITH 부서코드 = 'C100'CONNECT BY PRIOR 상위부서코드 = 부서코드 차이는 딱 하나 — PRIOR가 부서코드에 붙었나(정방향), 상위부서코드에 붙었나(역방향)뿐입니다. 4. 질문하신 네 가지 진술 평가 ∙ PRIOR 부모 = 자식 과 자식 = PRIOR 부모 → 같은 식이라 같은 방향. 맞습니다. (좌우만 바꾼 것) ∙ 부모 = PRIOR 자식 과 PRIOR 자식 = 부모 → 역시 같은 식, 같은 방향. 맞습니다. 여기까지는 맞아요. 다만 “PRIOR 위치에 따라 달라지는 게 아니다”는 틀렸습니다. 위 1번·3번에서 방향이 뒤집힌 이유가 바로 PRIOR가 붙은 컬럼이 달라졌기 때문이거든요. “등호 좌우는 무관, PRIOR가 붙은 컬럼은 결정적” — 이 둘을 분리해서 기억하시면 됩니다. 그리고 부모 자식이라는 용어를 많이 쓰긴 하지만, 이전 행의 부서코드 = 현재 행의 상위 부서코드 prior dept_code = p_dept_code 로 익히시는 게 더 이해가 쉬울거에요 시험용 한 줄 암기CONNECT BY PRIOR 부서코드 = 상위부서코드 → 위에서 아래로(정방향). PRIOR를 반대 컬럼으로 옮기면 아래에서 위로(역방향). 등호 좌우 순서는 신경 안 써도 됨. 이거 하나만 기준점으로 잡고 나머지를 그 변형으로 생각하시면 헷갈릴 일 없습니다. 내일 시험 잘 보세요! 감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 36
질문&답변
강의내용관련
안녕하세요. 알고런입니다. 제가 복원해서 제공해드린 해설과 강의 내용이 살짝 다르다는 말씀이신지 궁금하네요. 만약 위의 내용이 맞다면 걱정하지 않으셔도 됩니다. 라이브로 코딩하면서 강의한 내용을 충분히 따라하시면 도움이 될겁니다 합격하시는 데 문제 없을겁니다. 이미 많은 분들이 그렇게 합격하셨어요 이 강의를 인프런에 신규 등록하긴 했지만 이미 여러 플랫폼에서 검증된 강의입니다 혹시 도움이 필요하면 다시 메세지 주시거나 support@algolearn.io 로 메일 주십시오. 감사합니다 .
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 35
질문&답변
기출문제 pdf 없음
안녕하세요. 알고런입니다. 맥에서 압축한 파일이라 윈도우에서 포맷이 안 맞았던 것 같습니다. 새로 압축해서 올려두었어요. 다운로드 새로 받아서 압축해제 해보시기 바랍니다. 다시 해 보시고 안되면 윈도우 기본 압축해제 프로그램이 아닌 '알집'이나 '반디집' 등의 프로그램으로 해제해보시기 바랍니다. 감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 40
질문&답변
2,3차 정규화 질문
안녕하세요. 알고런입니다. 말씀하신 내용 중에 a 가 b 를 결정하는데, a가 키인 경우 2차 라고 생각하는 건 조금 부정확합니다. a가 복합키여야만 합니다. 예를 들어 a가 (a1, a2)로 구성된 키여야 하는 거죠. 현실 사례로 치면 "1학년 3반 홍길동" 처럼 반과 이름이 같이 키로 구성된 거에요. 이때 1학년 3반 (a1) 이라는 키를 알면, 반의 위치를 알 수 있잖아요. 이게 바로 부분함수 종속 관계입니다. 그리고 a가 b를 결정하는 데 a 가 일반 함수, b도 일반함수인 경우는 3차 정규화의 대상이 맞습니다. 정규형 문제를 푸실 때, 아래를 참고하시면 도움이 되실 겁니다. (사진)
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 42
질문&답변
실전 모의고사 난이도
안녕하세요. 알고런입니다. 모의고사 출제시에 타 교재즐도 참조하면서 유사한 난이도로 출제하려고 노력 했습니다일반적으로 노랭이 문제 중 난이도 높은 것들 보다는 쉬울거에요 감사합니다
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 50
질문&답변
Part2 기출 문제 및 해설 자료 파일 없음 형태
안녕하세요. 알고런입니다.기출문제 파일들 다운로드 받아봤는데요. 아래 이미지 처럼 잘 나옵니다. 일시적인 현상 같은데요. 새로운 브라우저를 열어서 다시 한 번 확인해주시구요. 잘 안되시면 support@algolearn.io 로 연락주시겠어요. 파일 보내드릴게요. (사진) 감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 51
질문&답변
21번 마지막 설명에 대해 질문이 있습니다.
안녕하세요. 알고런입니다. 말씀하신 문제를 확인했습니다. 마지막에 설명한 내용은 오해의 소지가 있네요. 부정확한 설명이구요. 별칭을 쓰더라도 order by 구분에 숫자로 표기할 수 있고, 오류가 발생하지 않습니다. 해당 강의는 수정해두었습니다. 참고하시구요.다만, 현업에서는 그런식으로 숫자를 넣어서 정렬을 하지 않습니다. 왜냐하면 조회 컬럼의 위치가 변경될 수도 있기 때문에 숫자로만 정렬을 하면 원하는 정렬 결과가 나오지 않을 수 있기 때문입니다. 감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 48




