본문 바로가기

분류 전체보기465

[자료구조] Stack(스택) - 참조 문헌 및 사이트(Reference) Data Structure : A Pseudocode Approach with C Data Structure and Algorithm in C++ 코드는 깃허브를 참조 : https://github.com/junstar92/DataStructure_Algorithm/tree/master/Data_Structure/Stack 스택(Stack)은 데이터의 삽입과 삭제가 오로지 top이라고 불리는 한쪽 끝에서 이루어지는 선형 리스트이며, LIFO(Last In First Out)의 특성을 갖는 자료구조로 나중에 들어온 데이터가 먼저 삭제됩니다. 아래와 같은 구조를 갖습니다. 스택은 배열과 리스트로 구현이 가능하며, 보통 맨 위에 있는 값만 알 수 있으며 맨 위에 새.. 2020. 8. 31.
Basics of Neural Network programming (Week 1, 2) 해당 내용은 Coursera의 딥러닝 특화과정(Deep Learning Specialization)의 첫 번째 강의 Neural Networks and Deep Learning를 듣고 정리한 내용입니다. (Week 2) 1주차 내용은 딥러닝에 대해서 소개하는 내용과 수업의 전반적인 방향을 이야기해주어서, 따로 게시글을 쓰는 것이 아닌 여기에서 간단하게 정리하고 넘어가겠다. 딥러닝 특화과정에서는 5개의 강의가 있으며, 각 강의에서는 다음과 같은 내용을 다룬다.1. Nueral Network(NN) and Deep Learning(DL)- NN과 DL에 대해서 배우며, NN을 만드는 방법과 데이터를 학습하는 방법에 대해서 배울 것이다(고양이 이미지 인식기도 만들어 볼 것이다). 2. Improving Dee.. 2020. 8. 30.
[Python/파이썬] 모듈(Module)과 패키지(Package) - 참고 문헌 및 사이트 https://docs.python.org/3/ 모듈 Module 우리가 이전 게시글에서 파이썬 코딩을 할 때, 주로 인터프리터를 실행시켜서 한줄씩 실행했었습니다. 인터프리터로 클래스나 함수를 작성하고 종료하면, 당연하겠지만 정의했던 것들이 사라집니다. 그래서 자주 사용되는 함수/클래스/변수나 좀 더 긴 프로그램을 작성하고자 할때, 우리는 편집기를 사용해서 코드를 작성하고 그 파일을 입력으로 읽어서 사용하는 것이 좋으며, 이렇게 작성하는 것을 스크립트를 작성한다고 합니다. 또한, 프로그램이 길어짐에 따라서 코드의 가독성을 높히고 유지보수를 쉽게하기 위해서 여러 개의 파일로 나눌 수도 있고, 자주 사용하는 함수를 각 프로그램에 정의를 복사하는것이 아니라 단순 파일을 읽음으로써 사용.. 2020. 8. 29.
[자료구조] 리스트(List), 배열(Array), 연결리스트(Linked List) - 참조 문헌 및 사이트(Reference) Data Structure : A Pseudocode Approach with C Data Structure and Algorithm in C++ 리스트 List 리스트는 자료구조(Data Structure)에서 기본이 되는 추상자료형(Abstract Data Type:ADT)으로, sequential한 data의 집합입니다. 즉, 선형적으로 순서가 있는(ordered) 값들의 집합이라고 보면 되겠습니다. 여기서 ADT란 간단하게 data의 정의와 그 data에 대한 연산이 정의된 가상의 자료구조를 의미하며, 그 연산에는 data의 삽입/삭제/탐색 등이 있습니다. 리스트는 배열(Array)이나 연결리스트(Linked List)로 구현이 가능합니다. 배열은 프로.. 2020. 8. 28.
[Machine Learning] Exam 7 (Week 8) 해당 내용은 Andrew Ng 교수님의 Machine Learning 강의(Coursera)를 정리한 내용입니다. 8주차 과제는 다음과 같습니다. - pca.m : PCA 알고리즘 구현 코드 - projectData.m : PCA 알고리즘으로 구한 \(U\) 행렬을 통해서 새로운 feature \(z\)를 구하는 함수 - recoverData.m : 새로운 feature \(z\)에서 다시 n차원의 \(x_{approx}\)를 구하는 함수 - findClosestCentroids.m : 각 training example \(x^{(i)}\)의 가장 가까운 centroid의 index를 반환하는 함수 - computeCentroids.m : 각 centroid에 속하는 example을 평균을 구해서 cen.. 2020. 8. 27.
[Machine Learning] Dimensionality Reduction(PCA) 해당 내용은 Andrew Ng 교수님의 Machine Learning 강의(Coursera)를 정리한 내용입니다. [Data Compression] 엄청 많은 feature가 있는 training set이 있다고 하자. 그리고 그 중에서 아래와 같이 cm와 inch의 feature만을 뽑아서 그래프로 나타내보았다. 이와 같이 cm와 inch는 길이에 대한 feature이며, 두 feature가 연관성이 높다고 볼 수 있다. 우리는 2차원의 data를 1차원으로 줄여서 합칠 수 있다. 이렇게 차원을 줄이면 data의 양이 감소해서 사용되는 메모리를 절약할 수 있으며 학습 알고리즘의 속도를 높여준다. 3차원에서 2차원으로 감소하는 것은 위와 같다. feature \(x_1, x_2, x_3\)을 2차원의 평.. 2020. 8. 27.
[ML] Support Vector Machine(SVM) - 참고 문헌 및 사이트 핸즈 온 머신러닝 2nd https://en.wikipedia.org/wiki/Support_vector_machine https://ko.wikipedia.org/wiki/%EC%84%9C%ED%8F%AC%ED%8A%B8_%EB%B2%A1%ED%84%B0_%EB%A8%B8%EC%8B%A0 http://jaejunyoo.blogspot.com/2018/01/support-vector-machine-1.html Coursera의 Machine Learning에서 SVM에 대해서 강의를 들었지만, 조금 부족한 부분이 있어서 따로 더 공부를 해보았습니다. 강의에서 SVM을 설명할 때는 Logistic Regression에서 시작해서 Cost Function으로 hinge loss라는 .. 2020. 8. 26.
[Machine Learning] Unsupervised Learning 비지도 학습 해당 내용은 Andrew Ng 교수님의 Machine Learning 강의(Coursera)를 정리한 내용입니다. [Clusterning] 이전까지는 supervised learning 지도학습에 대해서 이야기를 했었고, supervised learning은 아래처럼 주어진 training set과 이에 해당하는 label이 존재했다. 따라서 그래프를 봐도 명확하게 구분이 된다. 하지만, unsupervised learning 비지도 학습은 아래처럼 label이 없고 단지 Training set만 존재한다. 그렇기 때문에, 우리는 이 data를 가지고 어떠한 구조를 가지는지 찾아야하고, 이것을 Unsupervised Learning이라고 한다. 우리는 Training Set을 비슷한 특성을 가진 data.. 2020. 8. 25.
[Machine Learning] Exam 6 (Week 7) 해당 내용은 Andrew Ng 교수님의 Machine Learning 강의(Coursera)를 정리한 내용입니다. 7주차 과제는 아래와 같다. gaussianKernel.m - SVM을 위한 가우시안 커널 코드를 작성하면 된다. dataset3Params.m - SVM의 파라미터 \(C, \sigma\)를 구하는 코드를 작성하면 된다. processEmail.m - Email의 단어들을 순회하면서 해당하는 Voca List의 index번호를 찾아서 반환하는 코드를 작성한다. emailFeatures.m - email로부터 feature를 추출해야 한다. 주어지는 함수들은 다음과 같다. 전체 코드는 아래 Github에서 확인할 수 있다. https://github.com/junstar92/Coursera/.. 2020. 8. 25.
[Machine Learning] SVM : Kernel 해당 내용은 Andrew Ng 교수님의 Machine Learning 강의(Coursera)를 정리한 내용입니다. 이번 시간에는 non-linear classifier에서 SVM을 적용하는 방법에 대해서 알아보자. - Kernel [Non-linear Decision Boundary] 위와 같은 data에서는 non-linear decision boundary가 필요하고, 우리는 다음과 같이 예측할 수 있을 것이다. \[\begin{align*}\text{Predict } y = 1 \text{ if } \\ &\theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_1x_2 \\ &+ \theta_4x_1^2 + \theta_5x_2^2 + \cdots \leq 0 \en.. 2020. 8. 23.