전체 글
-
MLE(Maxinum Likelihood Estimation)에 대한 이해Study/통계 2020. 5. 28. 19:09
위키피디아에 MLE의 정의를 보면 '어떤 확률변수에서표집한 값들을 토대로 그 확률변수의모수를 구하는 방법, 어떤 모수가 주어졌을 때, 원하는 값들이 나올가능도를 최대로 만드는 모수를 선택하는 방법'이라 합니다. 어느정도 이해한 지금의 상황에선 위의 뜻이 좋은 설명이라고 생각하지만 처음 MLE를 접했을 때 잘 이해되지 않는 부분이 있었습니다. 이해를 위해 나름대로 기록한 내용을 적어 보려고 합니다. Thumbtack Question 압정은 동전과를 모양이 다르기 때문에 쉽게 50:50 확률이라고 보기 힘듭니다. 실제로 압정을 던져서 앞이 3번 뒤가 2번 나왔으니 3/5, 2/5의 확률이라고 대답하기엔 부족한 점이 있습니다. Binomial Distribution Binomial Distribution은 이..
-
MAP - Maximum a Posteriori 최대 사후 확률Study/통계 2020. 5. 7. 12:06
MLE(Maximum Likelihood Estimation)는 주어진 관측결과의 발생 가능성을 가장 높게 만들어 주는 모수를 찾아냈습니다. MAP는 MLE와 전혀 다른 개념을 가지고 있는데 MAP는 주어진 관측결과와 '사전지식(사전확률)'을 결합해서 최적의 모수를 찾아내는 방법입니다. 어떤 모수 θ의 사전 확률 분포가 p(θ)로 주어져 있고, 그 모수에 기반한 조건부 확률분포 f(x|θ)와 그 분포에서 수집된 값 x가 주어져 있습니다. 이떄 모수의 사후 확률분포는 베이즈 정리에 의해 다음과 같이 계산할 수 있습니다. 여기서 x가 주어져 있기 때문에 분모는 θ에 대해 상수가 됩니다. 여기에서 최대 사후 확률 모수는 다음과 같이 정의됩니다. 최대 사후 ..
-
알고리즘 소개Study/Algorithm 2020. 5. 6. 12:24
알고리즘은 주어진 문제를 해결하기 위한 단계적 절차 또는 방법이다. 알고리즘은 명확하게 기술되어야 하고 유한한 시간 내에 모든 유효한 입력에 대해 올바른 해를 주어야 한다. 주어진 문제를 해결하는 여러 개의 알고리즘들 중 시간적으로 효율적인 알고리즘을 선택해야 한다. 문제를 알고리즘으로 해결하는 단계별 과정들은 다음과 같다. 1. 문제 이해: 주어진 문제를 완전히 이해해야 한다. 2. 알고리즘 설계: 주요 알고리즘 설계 기법을 참고하여 알고리즘을 설계햐야 한다. 3. 정확성 증명: 알고리즘이 정확하다는 것을 증명해야 한다. 4. 알고리즘 분석: 알고리즘의 시간(혹은 공간) 효율성을 분석해야 한다. 5. 알고리즘 구현: 알고리즘은 컴퓨터 프로그램으로 구현해야 한다. 알고리즘은 자연어나 의사 코드로 표현한다..
-
객체지향이란?Study/객체지향 프로그래밍 2020. 4. 27. 12:19
객체지향 프로그램은 추상화라는 개념을 이용한다. 추상화는 자세한 사항을 다루는 것에서 해방시켜주는 개념으로, 자세한 묘사를 생략하고 특징만 포착해서 그리는 것이라고 할 수 있다. 객체지향 프로그램은 프로시저 추상화와 데이터 추상화를 묶어 놓은 것이다. 프로시저 추상화 프로시저 추상화란 특정 프로시저를 사용할 때 프로시저 안에서 어떤 계산이 이루어지는지 자세히 모르더라도 어떻게 호출하고 무엇을 수행하는지만 알고 있으면 자세한 것은 걱정할 필요가 없는 것을 의미한다. 데이터 추상화 데이터 추상화란 데이터 자체만 정의하는 것이 아니라 데이터에 대한 조작, 즉 오퍼레이션도 함께 정의하는 개념이다. 데이터 추상화를 적용한 시스템은 서비스를 제공하는 객체들의 집합으로 볼 수 있다. 데이터 추상화는 시스템의 복잡성을..
-
소프트웨어 품질의 특성Study/객체지향 프로그래밍 2020. 4. 27. 11:59
사용 용이성: 사용자가 소프트웨어를 수비게 사용할 수 있느지를 의미한다. 사용 용이성에는 여러 가지 측면이 있는데 초보자가 쉽게 배울 수 있는 특성, 전문가가 효율적으로 사용할 수 있는 특성, 오류를 쉽게 다룰 수 있는 특성 등이 포함된다. 효율성: 소프트웨어를 작동시키는 데 드는 비용의 절감을 뜻함 신뢰성: 결함이 적을수록 신뢰성이 높다. 유지보수성: 소프트웨어를 쉽게 변경할 수 있는 성질, 변경하기 어려울수록 유지보수성이 낮다. 재사용성: 소프트웨어 부품을 조금만 변경하여 다른 여러 시스템에서 사용할 수 있다면 재사용성이 높은 것이다. 재사용성이 높으면 장기적으로 개발비를 절약할 수 있다.
-
Java 자바 개요Software Development/Java 2020. 4. 18. 21:24
The Java "White Paper" Buzzwords Simple Object-Oriented Network-Savvy Robust Secure Architecture-Neutral Portable Interpreted High-Performance Dynamic Development Environment Command-Line Tools javac java Intergrated Development Environment Eclipse A Simple Java Program public class Hello { public static void main(String[] args) { System.out.println("Hello World!"); } } Constants final public cl..
-
Python Decorator 란?Software Development/Python 2020. 4. 10. 17:26
Decorator는 호출 가능한(callable) 함수, 메소드 또는 클래스 definition을 수정하는데 사용되는 파이썬 객체입니다. Decorator는 정의된 원래 객체를 받아 수정된 객체를 return하며, 정의된 이름에 바인딩 됩니다. Decorator는 Java annotations에서 영감을 받아 비슷한 syntax를 가지고 있습니다. @을 사용합니다. 아래의 코드는 @dec2 @dec1 def func(arg1, arg2, ...): pass 아래의 코드와 동일합니다. def func(arg1, arg2, ...): pass func = dec2(dec1(func)) 장식자는 메타 프로그래밍의 한 형태입니다. 예를 들어 아래 샘플에서 viking_chorus는 menu_item을 호출할 때..