프로필사진

IT Anthology/encyclopedia 23

[객체 지향 프로그래밍] SOLID 원칙

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. SOLID 원칙을 지키면 유연하고 유지보수하기 쉬운 견고한 코들르 쓸 수 있다고 한다. 프로그램의 크기가 커질 수록 SOLID 원칙을 잘 지키는 것이 중요하다. 하지만 작고 간단한 프로그램을 만드는데 이 원칙을 지키면 오히려 시간 낭비가 될 수도 있다. SOLID 원칙에는 아래 다섯가지가 있다. 1. 단일 책임 원칙 (Single Responsibility Principle) : 모든 클래스는 단 한가지의 책임만을 갖고, 클래스 안에 정의되어 있는 모든 기능은 이 하나의 책임을 수행하는데 집중되어 있어야 ..

[객체 지향 프로그래밍] 다형성(Polymorphism)

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 다형성이란? 다형성의 원래 정의: 여러가지의 형태를 갖는 성질 객체 지향 프로그래밍에서의 다형성: 하나의 변수가 서로 다른 클래스의 인스턴스를 가리킬 수 있는 성질 예시 Circle이라는 클래스와 Rectangle이라는 클래스가 있을 때, 각각의 클래스가 모두 넓이를 계산하는 area라는 메소드를 가지고 있다고 해보자. 한편, 추가된 모든 도형의 넓이 총합을 계산해주는 클래스가 다음과 같이 있다고 할 때, class Canvas: def __init__(self): self.shapes = [] def a..

[객체 지향 프로그래밍] 상속

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 버거집에서 계산원과 배달원이 있을 경우, 위와 같이 클래스 간에 중복되는 코드가 많다..!! 이때 해결점을 제시할 수 있는 게 바로 상속 상속이란? : 두 클래스 사이에 부모-자식 관계를 설정하는 것 : 'A는 B다'일 때, A는 자식클래스, B는 부모클래스 여기서 잠깐!! 상속과 관련된 깨알 메소드 (1) 클래스명.mro(): 해당 인스턴스의 클래스가 어떤 부모 클래스를 가지는지 보여줌 (2) isinstance(생성된인스턴스, 클래스명): 첫번째 파라미터의 인스턴스가 두번째 파라미터 클래스의 인스턴스인..

[객체 지향 프로그래밍] 캡슐화

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 캡슐화란? 객체의 일부 구현 내용에 대한 외부로부터의 직접적인 액세스를 차단하는 것 객체의 속성과 그것을 사용하는 행동을 하나로 묶는 것 1. 외부로부터의 직접적인 액세스를 차단 변수나 메소드를 초기 정의 시 __를 앞에 붙이면 클래스 밖에서 호출할 수 없음 예시는 아래와 같다. Class Citizen: """주민 클래스""" def __init__(self, name, age, resident_id): """이름, 나이, 주민등록번호""" self.name = name self.__age = age s..

[객체 지향 프로그래밍] 추상화

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 추상화란? 정의: 어떤 것을 사용할 때, 몰라도 되는 부분은 감추고, 꼭 알아야하는 부분만 드러내는 것 프그래밍에서 추상화란? : 프로그래머들이 특정 코를 사용할 때 필수적인 정보를 제외한 세부사항을 가리는 변수나 함수의 정의도 일종의 추상화라고 볼 수 있음!!

[OOP] 객체 지향 프로그래밍에 대한 기본 개념

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 객체란? : 우리가 살아가면서 보는 모든 존재로, 속성과 행동으로 구성된 존재 : 예시1) 자동차 객체의 속성은 색깔, 의자 개수, 차의 크기 등의 속성이 있으며, 행동과 행동을 가지고 있음 : 예시2) 인스타그램 유저 객체의 속성은 이메일 주소, 비밀번호, 친구 목록 등이 있으며, 행동과 행동을 가지고 있음 -> 물리적으로 존재하지 않는다 해도 속성과 행동으로 구성된 존재이므로 객체이다. 객체 지향 프로그래밍이란 객체 지향 프로그래밍의 정의 : 프로그램을 여러 개의 독립된 객체들과, 그 객체들 간의 상호..

[알고리즘 중심의 머신러닝 가이드] 13. 위원회의 결정: 앙상블 학습

이 글은 제이펍(Jpub)에서 발간된 을 공부하고 요약한 글입니다. 목차 들어가기 전에 13.1 부스팅 13.1.1 아다부스트 13.1.2 스텀핑 13.2 배깅 13.2.1 서브배깅 13.3 랜덤 포레스트 13.3.1 부스팅과 비교하기 13.4 분류기를 종합하는 다른 방법들 들어가기 전에 랜덤 포레스트에 대해 본격적으로 논하기 전, 랜덤 포레스트의 기본적인 개념인 '앙상블 학습'에 대해 다시 한번 짚고 넘어가고자 한다. 앙상블 학습의 정의와 목적에 대해 알아보도록 한다. - 앙상블 학습(ensemble learning)이란? 더 좋은 예측 성능을 얻기 위해 약학습자(weak learners) 여러 개를 조합하여 강한 학습자(strong learner)를 만드는 것이다. 정의에 따르면, 우리가 앙상블 학습..

과적합(오버피팅, over-fitting) 해결법

목차 오버피팅이란 과적합의 원인 오버피팅으 근본적인 방지 - variance낮추기 (https://nittaku.tistory.com/289) 데이터 보강(agumentation) feature 수 줄이기 가중치 감소 드롭아웃 https://shryu8902.github.io/working/2019-02-01-overfit/ 훈련 데이터를 늘린다 피처를 정규화 / 표준화 시켜준다 피처를 선택하여 제거하거나, 페널티를 준다. 데이터의 차원을 축소한다 (CNN과 같은 커널이나 샘플링 개념이 포함된 신경망 알고리즘은 이 문제가 자동으로 해결이 된다.) 1. 오버피팅이란 오버피팅이란, 신경망이 훈련 데이터에만 지나치게 적응된 나머지, 훈련 데이터가 아닌 새로운 데이터에는 제대로 대응하지 못하는 상태를 말한다. ..

[밑러닝] 배치 정규화(Batch Normalization)

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 배치 정규화(Batch Normalization) 배치 정규화의 효과 NLP에서의 배치 정규화는? 1. 배치 정규화(Batch Normalization) 배치 정규화에 대해 정식으로 소개하기 전에, 이 방식이 왜 그렇게 열광받는지 소개하겠다. 배치 정규화에는 다음과 같은 장점이 있다. 학습을 빨리 진행할 수 있다. 초깃값에 크게 의존하지 않는다. 오버피팅을 억제한다. 배치 정규화는 각 층에서의 활성화 값이 적당히 분포되도록 조정하는 것이다. 조금 더 자세히 얘기를 해보자면, 학습 시에 평균이 0, 분산이 1이 되..

[밑러닝] Xavier 가중치 초깃값 설정법과 He 가중치 초깃값 설정법

* 이 글은 책을 읽으며 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 목차 적절한 가중치 초깃값 설정이 필요한 이유 Xavier 초깃값 설정과 tanh 활성화함수 He 초깃값 설정과 ReLU 활성화함수 1. 적절한 가중치 초깃값 설정이 필요한 이유 이전 포스팅에서, 가중치의 초깃값을 랜덤으로 설정한 것을 기억하는가? (params['W1'] = np.random.normal(0, weight_init_std, (input_size, hidden_size))) 초깃값을 0으로 동일하게 하면, 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문에 가중치 여러개를 설정한 의미가 없게 된..