일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- nestjs
- django #ninja #django-ninja #장고
- Daemon
- Spring
- docker
- dockerd
- 데이터중심애플리케이션설계
- Born2beroot #42
- ecole42
- 42Seoul
- 42
- 네스트JS
- pipex
- Spring-Boot
- data-root
- Today
- Total
목록전체 글 (95)
혼자 정리
이번 단원에서는 지속적으로 객체(object)와 자료구조(data structure)를 언급한다. 이는 단순히 클래스와 구조체를 구분하는 문제가 아니다(둘 다 클래스를 사용해서 표현할 수 있다) 객체는 추상화 뒤로 자료를 숨기고 자료를 다루는 함수만 제공한다. 반면, 자료구조는 자료를 그대로 오픈하여 별다른 함수를 제공하지 않는다. 자료 추상화 2차원 점을 표현하는 예시 두 가지를 통해 자료 구조와 객체를 구분해보자. public class Point { public double x; public double y; } 첫번째 예시는 자료 구조를 그대로 드러낸다. 따라서 사용자가 내부가 어떻게 생겼는지 알고 있어야 제대로 사용할 수 있다. 위 코드에서 public접근자를 private으로 바꾸고 gette..
앞에서는 추정량에 대한 함수를 guess하고, 그 추정량의 bias와 variance와 같은 성질들을 분석했었다. 그러는 대신 특정한 원칙을 통해 여러 모형들에서 좋은 추정량 함수를 구해보자. Maximum likelihood principle이 그러한 원칙 중 가장 많이 쓰이는 것 MLE의 가정 알려지지 않은 true data generating distribution $p_{\text{data}} ( \boldsymbol{x})$에서 독립적으로 추출된 $m$개 example의 집합, $\mathbb{X} = { x^{(1)} ,..., x^{(m)} }$을 가정 $p_{\text{model}} (\boldsymbol{x}; \theta)$는 임의의 벡터 $x$를 true probability $p_{..
코드 형식을 맞추기 위해 규칙을 정하고 규칙을 잘 따르자. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두 그 규칙을 따르자 왜 형식을 맞추는지? 의사소통을 원활하게 하기 위해 내가 짠 코드를 나중에 누군가 보고 유지보수, 확장하기 위해서는 가독성이 좋아야 한다. → 가독성 좋은 형식 처음 구현할 때 잡은 형식은 추후에도 크게 바뀌지 않으니 처음 형식을 잡는 것이 중요 원활한 소통을 장려하는 코드 형식에 대해 보자 세로 형식 맞추기(Vertical Formatting) (자바 기준으로) JUnit, FitNesse, Time and Money등의 프로젝트에서 500줄을 넘기는 파일이 없고 대다수가 200줄 미만. 모든 프로젝트가 그런 건 아니지만 대개의 프로젝트는 500줄을 넘기지 않고 대부분 200줄 ..

5.4 Estimators, Bias and Variance 통계학의 도움을 통해 training set에서 학습한 모델을 generalize하는 데 큰 도움을 얻을 수 있다. 모수 추정(parameter estimation), 편의(bias), 분산(variance) 등을 통해 generalization, underfitting, overfitting의 개념을 formal하게 특징지어볼 수 있다. 5.4.1 Point Estimation(점 추정) 점 추정은 관심있는 무언가의 '가장 나은' prediction을 얻는 것이다. 관심있는 것은 parametric 모형에서 하나의 parameter일 수도 있고 parameter의 벡터일 수도 있고(선형 회귀이면 weights), 그냥 함수 전체..
표준 라이브러리 모듈 다음 컨셉을 포함 로그로 저장하고 싶은 message 다음 각 함수에 매칭되는 우선순위 레벨 : debug(), info(), warn(), error(), critical() 모듈과 연결된 logger객체 파일, 터미널, db 등에 메세지를 기록하는 Handler 출력물 생성하는 Formatters input에 따라 결정을 내리는 Filters 기본적인 동작 ex) >>> import logging >>> logging.debug("Looks like rain") >>> longging.info("And hail") >>> logging.warning("Did I hear thunder?") WARNING:root:Did I hear thunder? >>> logging.error..
4장 주석 주석은 '필요악'이다 주석을 유지 보수하는 것은 쉽지 않으니 오래될수록 코드와 동떨어지게 된다 → 없는 것보다 못하게 될 수 있음 가능하다면 코드에 제대로 된 정보를 담아서 해결하자 주석은 나쁜 코드를 보완하지 못한다 나쁜 코드를 주석을 통해 보완하는 것보다 코드를 정돈하는 것이 더 효율적이다. 코드로 의도를 표현하라! 물론 확실히 코드만으로 의도를 설명하기 어려운 경우도 있다. 그래서 많은 개발자들이 자신의 코드도 그런 경우라고 생각하는데 잘 생각해보면 해결책이 있는 경우가 더 많으니 코드로 해결해보자. ex) // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) if (employ..
FitNesse에서 길고, 중복이 많고, 이상한 문자열과 낯설고 모호한 자료 유형, API가 많은 코드를 부정적인 예시로 보여줌 (3-1) public static String testableHtml( PageData pageData, boolean includeSuiteSetup ) throws Exception { WikiPage wikiPage = pageData.getWikiPage(); StringBuffer buffer = new StringBuffer(); if (pageData.hasAttribute("Test")) { if (includeSuiteSetup) { WikiPage suiteSetup = PageCrawlerImpl.getInheritedPage( SuiteResponder...
2장 의미 있는 이름 의도를 분명히 밝혀라 변수(혹은 함수나 클래스)의 존재 이ㅠ는? 수행 기능은? 사용 방법은? 이러한 질문들에 따로 주석이 필요치 않게 이름을 지어야 한다. ex1) int d; // 경과 시간(단위: 날짜) 대신 다음과 같이 쓰는 것이 조금 더 명확하다.int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; ex2) public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; } 위의 코드는 독자가 다음 정보를 안다고 가정..
5.3 Hyperparameters and Validation Sets Hyperparameter를 통해 학습 알고리즘의 행동을 제어할 수 있다. 하이퍼파라미터는 학습 알고리즘 자체에 의해 조정되지 않는다(물론 다른 학습 알고리즘의 하이퍼파라미터를 학습할 수는 있다) 다항 회귀 예시에서 하이퍼파라미터는 다항식의 차수 하나만 있었고, 이는 capacity hyperparameter로 작용했다. weight decay의 강도를 조절하는데 쓰였던 $\lambda$값도 하이퍼파라미터라고 할 수 있다. 하이퍼파라미터를 최적화 문제를 통해 정하기도 하지만 보통은 최적화 솔루션을 구하는 게 쉽지 않다. 게다가 training set에서 하이퍼파라미터를 학습하는 것은 보통 적절하지 않다. 특히 모델 capacity를 ..

Ch.5 Machine Learning Basics 5.1 Learning Algorithms 머신 러닝 알고리즘은 데이터에서 학습(learn)할 수 있는 알고리즘. Mitchell(1997)에서 다음과 같이 말함 A computer program is said to learn from experience $E$ with respect to some class of tasks $T$ and performance measure $P$, if its performance at tasks in $T$, as measured by $P$, improves with experience $E$. 5.1.1 The Task, $T$ ex) 로봇이 걷게 하고 싶다 하면 '걷는'것이 task 머신 러닝 t..