Journey to CS 98

[ML 스터디 2주차] 이항 분포 vs 베타 분포

스터디 교재: "개발자를 위한 필수 수학" by 토마스 닐드참고 본문: 72p. 2.4 베타 분포--------------책에서 사용한 엔진 테스트 예시 대신에 좀 더 단순한 예시들을 가지고 이항 분포와 베타 분포의 차이를 알아본다. 1. 알고자 하는 것이항 분포와 베타 분포의 가장 큰 차이는 '무엇을 알고 있고, 무엇을 모르는가(무엇을 추정하려 하는가)'에 있다.똑같은 동전 던지기 상황을 다루더라도 두 분포에서 알고자 하는 것은 반대 방향을 가리킨다.1️⃣ 이항 분포: 동전의 성능을 알 때, 결과는 어떨까앞면이 나올 확률이 50%인 정상적인 동전이 있다고 하자. 이때 "이 동전을 10번 던졌을 때 앞면이 정확히 7번 나올 확률은 얼마인가"를 묻는다.성능(확률)은 이미 주어졌고, 궁금한 것은 성공 횟수,..

[ML 스터디 2주차] 제트 엔진 테스트 사례로 살펴보는 이항 분포와 통계적 의사결정

스터디 교재: "개발자를 위한 필수 수학" by 토마스 닐드참고 본문: 70p. 2.3 이항 분포--------------책에서 이항 분포 설명을 위해 다음과 같은 예시를 들었다. 새로 개발한 제트 엔진을 10회 테스트했더니 8회 성공, 2회 실패. 눈에 보이는 성공률은 80%다.목표치인 90%에 미치지 못한 이 결과를 두고 팀 내부에서는 "재설계가 필요하다"와 "표본이 부족하므로 추가 검증이 필요하다"는 두 입장이 대립했다.직관이 아닌 정량적 근거로 이 논쟁을 정리하려면 이항 분포(Binomial Distribution) 개념이 필요하다. 1. 이항 분포의 전제 조건1️⃣ 이항(Binomial)의 어원과 정의이항이라는 용어는 두 개를 뜻하는 접두사 Bi-와 항을 뜻하는 -nomial의 결합이다.통계학에..

[ML 스터디 2주차] 확률과 가능도, 그리고 베이즈 정리

스터디 교재: "개발자를 위한 필수 수학" by 토마스 닐드참고 본문: 65p. 2.2.3 베이즈 정리-------------- 확률(Probability)과 가능도(Likelihood)는 얼핏 비슷해 보이는데 사실은 바라보는 방향이 서로 반대인 개념이다.확률은 원인에서 결과를 향하고, 가능도는 결과에서 원인을 향한다.확률과 가능도를 결합하면 이미 알고 있던 지식에 새로 관측한 증거를 곱해 결론을 갱신하는 베이즈 정리(Bayes' Theorem)가 나오는데, 이것은 단편적인 통계에 속지 않고 합리적인 판단을 하게 도와주는 근거가 된다. 1. 확률: 정해진 조건에서 결과를 예측1️⃣ P(결과 | 조건)확률은 이미 정해진 환경이 있는 상태에서 앞으로 어떤 일이 벌어질지를 예측하는 개념이다.즉, 설정은 고정되..

[ML 스터디 2주차] 단일 확률, 주변 확률, 결합 확률 용어 정리

스터디 교재: "개발자를 위한 필수 수학" by 토마스 닐드참고 본문: 62p. 2.2 확률 계산--------------1. 단일 확률 = 주변 확률(Marginal Probability)'주변 확률'은 '단일 사건의 확률'과 같은 개념이다.여러 가지 변수가 얽혀 있는 복잡한 상황에서, 다른 변수는 모두 무시하고 특정 사건 하나만 떼어서 볼 때의 확률을 의미한다.예: 동전을 하나 던져서 앞면이 나올 확률 = 1/2예: 주사위를 굴려서 6이 나올 확률 = 1/6그렇다면 왜 굳이 '주변(Marginal)'이라는 수식어를 붙였을까? 이는 통계학에서 확률 분포를 '표(Table)'로 그리는 관행에서 유래했다. 복잡한 확률 표를 분석할 때, 개별 사건의 총합(확률)은 항상 표의 바깥쪽 가장자리(Margin)에 ..

[ML 스터디 1주차] 미분과 극한, 그리고 도함수

스터디 교재: "개발자를 위한 필수 수학" by 토마스 닐드참고 본문: 43~52p. 1.10 미분--------------오일러 수에 대해 정리하며 마지막에 경사하강법(Gradient Descent)이라는 것을 언급했다.손실 함수(Loss Function)의 기울기를 계산하고 그 기울기의 반대 방향으로 파라미터를 조금씩 이동시켜 오차를 최소화한다는 원리인데, 결국 기울기는 "지금 이 순간 값이 어느 방향으로 얼마나 빠르게 변하는가"이며, 이 질문에 답하려면 미분을 알아야 한다.1. 미분의 조건1️⃣ 미분이 구하는 값'함수를 미분한다'는 것은 특정 순간에 값이 얼마나 빠르게 변하고 있는지, 즉 순간변화율을 구하는 과정이다.그래프 상에서는 특정 지점에서 접선의 기울기를 찾는 일이다.자동차의 누적 주행 거리..

[ML 스터디 1주차] 오일러수(e)와 미분(dy/dx)의 본질을 찾아서...

스터디 교재: "개발자를 위한 필수 수학" by 토마스 닐드참고 본문: 37p. 1.8.1 오일러 수--------------책에 있는 내용만으로는 미안하지만 "오일러수"가 어떤 개념이고 왜 있는 것인지 잘 이해가 안 됐다.모 LLM한테 오일러수를 딱 한 마디로 알아듣기 쉽게 정의해달라고 했더니 "자라는 속도가 자기 크기와 똑같아지는 유일한 숫자"라고 했다.이런 저런 설명을 하는데 여전히 알듯 말듯 모르겠다.그래서 그냥 내가 이해할 수 있는 말로 다시 정리해본다.1. 오일러수(e)의 본질: "커지는 속도 = 자기 크기"복리 이자 비유은행에 100만 원을 저축하고 1년에 100%의 이자를 받는다고 가정해 보자.이자를 1년에 한 번 받을 때보다, 6개월, 1달, 1일, 1초 단위로 쪼개서 복리로 받을 때 최..

[ML 스터디 1주차] 잡다한 질문

스터디 교재: 1. 내장 함수 이름을 변수로 쓰면 안 되는 이유본문: 31p. 예제 1-11 네 배열의 합계 구하기문제주피터 노트북에서 아래 파이썬 코드를 실행했더니 에러가 났다.x = [1, 5, 3, 4]n = len(x)summation = sum(10*x[i] for i in range(0, n))print(summation) 코드 자체는 아무 문제가 없어 보인다. 원인원인은 그 전 셀에 있었다.여기서 오른쪽의 sum(...)은 내장 함수로 정상 동작해서 30을 계산했다.문제는 그 결과를 sum이라는 이름에 그대로 대입했다는 것.그 순간부터 sum은 더 이상 함수가 아니라 정수 30이 된다.다음 셀에서 sum(...)을 호출하면 파이썬 입장에선 30(...)을 호출하는 셈이니, "int 객체는 호..

JSP 실행 매커니즘

1. filename_jsp.java 형식의 파일filename_jsp.java는 JSP 파일이 실행되기 위해 서블릿(Servlet) 소스 코드로 변환된 결과물이다.우리가 작성하는 .jsp 파일은 HTML 태그와 Java 코드가 섞여 있는 형태다.하지만 웹 서버(정확히는 WAS)는 JSP 파일 그 자체를 직접 실행할 능력이 없다.서버는 오직 컴파일된 자바 클래스 파일(.class)만 실행할 수 있다.따라서 내부적으로 JSP를 자바 소스 파일로 변환하는 과정을 거치는데, 이때 생성되는 것이 바로 서블릿 파일이다.2. JSP의 실행 메커니즘 (Lifycycle)사용자가 브라우저에서 filename.jsp를 호출하면 서버 내부에서는 다음과 같은 일이 벌어진다.변환(Translation): 톰캣 등의 WAS가 ..

Journey to CS/웹 2026.03.26

C 소스 패치파일 만들기

[linuxadmin@localhost ~]$ vi hello_old.c#include int main() { printf("Hello\n"); return 0;}[linuxadmin@localhost ~]$ vi hello_new.c#include int main() { printf("Hello, World!\n"); return 0;} 패치 파일로 만든다.[linuxadmin@localhost ~]$ diff -u hello_old.c hello_new.c > myprogram.patch [linuxadmin@localhost ~]$ sudo dnf -y install gcc 패치 명령어 사용을 위해 패키지 설치[linuxadmin@localhost ~]$ sudo dnf -y ..

[Java] 메서드의 메모리 적재 원리와 클래스 선언 규칙

1. 메서드를 메모리에 올리는 두 가지 방법자바에서 메서드는 성격에 따라 메모리에 적재(Load)되는 시점과 방식이 다르다. 1️⃣라이브러리 클래스에서의 메서드보통 기능을 제공하는 역할을 하는 클래스들이다.인스턴스 메서드 (Instance Method): new 연산자를 통해 객체를 생성하는 순간 메모리에 올라간다. 객체마다 고유한 상태(필드)를 가질 수 있으며, 반드시 객체 생성 후에만 사용할 수 있다.정적 메서드 (Static Method): 프로그램이 실행되자마자 메모리(Method Area)에 자동으로 올라간다. 객체 생성 없이 클래스명.메서드명()으로 즉시 호출할 수 있다.2️⃣실행 클래스에서의 메서드public static void main이 포함된, 프로그램의 시작점이 되는 클래스다.프로그램..