전체 글
-
정규화 모델 (Ridge, LASSO, Elastic Net)Learn/머신러닝 2022. 9. 3. 23:21
# 무엇이 좋은 모델인가 - 현재 데이터(training data)를 잘 설명하는 모델 (Explanatory modeling) - 미래 데이터(testing data)에 대한 예측 성능이 좋은 모델 (Predictive modeling) 결국 MSE를 줄이는게 중요하다. > Bias와 Variance를 줄여야 한다. 1번이 가장 좋고 4번이 가장 나쁜건 당연한데, 2/3번은 상황에 따라 다르다. 그러면 어떻게 Variance를 줄일 것인가? > subset selection method는 설명변수 일부만 사용하여 회귀 계수를 추정하는 방법 > 이를 통해 bias는 증가할 지라도 variance를 줄일 수 있다. # Regularization 다시 돌아가서 좋은 모델에 대해서 생각해보자. 아래 중 어떤 ..
-
[Design Pattern] Singleton PatternLearn/Architecture 2022. 8. 31. 00:38
# 개요 인스턴스가 단 하나만 만들어지게 하고싶을 때 사용하는 패턴 (예시) Thread Pool Manager은 여러개면 그들간의 조율이 필요하므로 하나만 있는게 좋다. 싱글톤은 new로 인스턴스를 생성하는게 아니라 getInstance 함수로 얻는다. # 기본 구조 일반적인 생성자와는 달리 접근하지 못하도록 private로 생성자를 만든다. 생성자를 만들지 않으면 자바가 알아서 public으로 생성하므로 꼭 만들어줘야한다. 외부에서는 getInstance를 통해서만 인스턴스를 얻을 수 있다. 외부에서 이 함수에 바로 접근할 수 있게 static으로 선언해야 한다. 생성자를 대신하므로 public으로 열어줘야 한다. uniqueInstance는 클래스에 단 하나만 있어야 하므로 static으로 만든다...
-
[Design Pattern] Builder PatternLearn/Architecture 2022. 8. 30. 21:18
# 개요 쉽게 알고리즘을 교체할 수 있는 객체를 생성하기 위한 패턴 director와 (concrete)builder가 중요 director: 최종 제품이 되기 위해 어떤 파트가 필요한지를 알고 있음 (concrete) builder: 각 파트들을 어떻게 만들어야 할지를 알고 있음 아래 그림처럼 builder 인터페이스를 통해 builder를 쉽게 바꿀 수 있음 전략패턴의 구조와 유사 아래 그림처럼 director가 builder에게 각 파트 생성을 요청한다. 중요한건 클라이언트는 각 파트가 어떻게 구성되었는지 관심이 없다는 점이다. 다 조립된 제품에만 관심있다. # Participants Client director와 concrete builder를 선택 director에게 어떤 concrete bui..
-
[Design Pattern] Factory Method & Abstract Factory PatternsLearn/Architecture 2022. 8. 29. 23:35
# 개요 아래와 같이 conditional statement에 따라 다른 Concrete Class를 불러야 하는 상황을 피할 때 이 패턴을 쓴다. Duck duck; if (picnic) duck = new MallardDuck(); else if (hunting) duck = new DecoyDuck(); else if (inBathTub) duck = new RubberDuck(); 새로운 object를 new를 쓰지 않고 만드는 것을 Factory Pattern이라고 한다. Factory Method: 상속(inheritance)를 통해서 인스턴스를 생성하는 방식 Abstract Factory: 위임(Delegation)을 통해서 인스턴스를 생성하는 방식 SOLID 원칙의 Dependency In..
-
[Design Pattern] Mediator PatternLearn/Architecture 2022. 8. 29. 00:41
# 개요 다양한 객체들의 커뮤니케이션을 Encapsulation하는 패턴 예시 각 비행기들은 서로 직접 통신하지 않고 Mediator인 관제탑을 통해서 통신한다. 일반화하면 다음과 같다. Colleague들은 각각의 함수를 가지고, 상태가 변하면 Mediator에 알려준다. Colleague들은 서로 메시지를 직접 주고받지 않는다. # Mediator Pattern Mediator을 중심으로 상호작용한다. 클래스들간의 커플링을 낮춰준다. colleague들이 많이 생겨도 이해가 쉽다. mediator는 어플리케이션에 종속적일 수 밖에 없으므로 재사용이 힘들다. # QUIZ 다음 중 Mediator Pattern의 시퀀스 다이어그램으로 잘못된 것은? 정답 d. Colleague간에 직접 커뮤니케이션이 일어..
-
[Design Pattern] State PatternLearn/Architecture 2022. 8. 29. 00:26
# 개요 객체가 내부적인 상태(state)에 따라 다르게 행동해야 할 때 사용하는 패턴 UML의 state machine diagram을 구현할 때 가장 적합한 패턴 state에 따라 다르게 행동하도록 구현하는 가장 단순한 방법은 conditional statement를 쓰는 것이다. public class GumballMachine { final static int SOLD_OUT = 0; final static int NO_QUARTER = 1; final static int HAS_QUARTER = 2; final static int SOLD = 3; int state = SOLD_OUT; int count = 0; public GumballMachine(int count) { this.count ..
-
[Design Pattern] Iteration PatternLearn/Architecture 2022. 8. 28. 14:41
# 개요 비슷한 기능을 하는 코드인데 자료구조가 달라서 동일한 방식으로 핸들링이 안되는 경우가 있음 자료구조를 노출하지 않으면서 aggregate object의 element에 접근할 수 있도록 하기 위한 패턴 ※aggregate object: 하나의 오브젝트 안에 다른 오브젝트가 포함된 것. (container 혹은 collection라고 불림) 예시 아래와 같이 MenuItem을 정의했을 때 public class MenuItem { String name; String description; boolean vegetarian; double price; public MenuItem (String name, String description, boolean vegetarian, double price )..
-
[Design Pattern] Template Method PatternLearn/Architecture 2022. 8. 28. 10:19
# 개요 프레임워크를 구성하는데 사용되는 패턴으로 특별한게 아니고 개발하면서 늘 하던 자연스러운 패턴 공통적인 부분은 상위 클래스에 구현 상위 클래스에 concrete method로 구현 (final을 붙여서 override를 막을 수 있음) --> Encapsulation 하위 클래스마다 달라질 수 있는 부분은 abstract method로 구현 예시 공통적인 부분은 prepareRecipe에 모아서 구현 (template method pattern) 음료 종류에 따라 공통적인 부분만 여기에 정의 음료에 따라 달라지는 부분은 하위 클래스에 구현 public abstract class CaffeineBeverage { final void prepareRecipe() { boilWater(); brew()..