box plot은 사분위수(상위 25%, 50%, 75%를 각각 Q1, Q2, Q3 표현)를 그림으로 나타낸 것이다. Q1 ~ Q3 사이의 상위 25~75% 구간이 가운데 box로 나타내지고, Q2(상위 50%)는 박스 중간에 직선으로 표시된다. Q1 - (Q3 - Q1) * 1.5 이하와 Q3 + (Q3 - Q1) * 1.5 이상의 구간에 존재하는 샘플들은 이상치(outlier)로 간주되며 점으로 표시된다. 이 범위 내의 최소값(minimum)과 최대값(maximum)을 양 끝의 수직선으로 나타낸다.
"참고로, box plot은 사분위수(상위 25, 50, 75% 숫자 : Q1, Q2, Q3)를 기준으로 Q1 ~ Q3 사이의 상위 25~75% 구간이 가운데 box로 색칠되고, Q1 - (Q3 - Q1) * 1.5 이하와 Q3 + (Q3 - Q1) * 1.5 이상의 구간을 끝 선으로 나타내고 이 밖의 범위에 해당하는 숫자는 이상치(점으로 표시)로 취급하는 그림입니다. 박스의 끝점이 Q1, Q3에 해당하고, 박스 가운데 선이 Q2에 해당하는 것을 참고하세요."
라고 설명하고 있다. 그런데, Q1 - (Q3 - Q1) * 1.5 이하와 Q3 + (Q3 - Q1) * 1.5 이상의 구간을 끝 선으로 나타낸다면, 박스로부터 양 끝으로부터 양 끝 선(수직선)까지 길이가 같아야하는데 다르다. 그래서 검색해보니,
Having an unbalanced dataset is not an uncommon problem in real world. Interested in knowing how to handle Imbalanced Classification problem? Checkout this brief introduction from team at Robofied.
[1]과 [2]에서 설명하는 내용은 비슷하다. ROC 커브는 Recall(=Sensitivity)과False Positive Rate(= 1-Specificity)인데, 이 둘은 모두 actual class가 1인 것중에서 1로 분류한 비율과 0인 것 중에서 1로 분류한 것의 비율을 보는 것인데, PR 커브는 Precision과 Recall(=Sensitivity)을 사용하는데, Recall은 같은데 Precision은 1로 분류된 것 중에서 실제 1의 비율을 보는 것이다. Precision은 실제클래스가 1인 샘플들의 base probability 또는 prior probability가 달라짐에 따라서 Precision이 달라진다. 반면, Recall(=Sensitivity)과 FPR은 base probability 또는 prior probability가 항상 같다. [3]에 PR, ROC를 잘 설명한 그림이 있어 복사해왔다.
위 그림을 예로들어 설명하면 (분홍색 선과 청록색 선은 threshold를 나타냄),
Recall(=Sensitivity) : 전체 노란 샘플개수 중 분홍색 선 위쪽에 존재하는 노란 샘플개수 비율.
False Positive Rate(= 1-Specificity) : 전체 파란 샘플개수 중 분홍색 선 위쪽에 존재하는 파란 샘플개수 비율.
Precision : 분홍색 선 위쪽에 존재하는 노란색 샘플과 파란색 샘플의 합 중에서 분홍색 선 위쪽에 존재하는 노란 샘플개수 비율.
Recall(=Sensitivity)과 FPR은 threshold가 청록cyan색에서 분홍색 라인으로 올라가도 분자는 바뀌어도 분모(base probability 또는 prior probability)는 그대로이다. 반면, Precision은 threshold가 바뀌면 분모(base probability 또는 prior probability)가 바뀌고 분자도 바뀐다. 위와 같이 imbalanced data인 경우 threshold가 위로 올라가면서 Precision의 분모가 급격히 바뀌게 된다. 위 그림에서 클래스 1인 노란색 샘플이 파란색 샘플만큼 많은 경우를 상상해보자. 즉 파란색 샘플들은 그대로인데, 노란색 샘플들이 prediction score가 대략 [-0.3, 1] 범위에 노란 샘플들이 많이 존재하는 경우다. 그러면 threshold가 올라가면서 Precision의 분모가 급격히 변하지 않고 smooth하게 변할 것이다. 윗부분이 노란색 샘플들이 많으므로. 그러면 threshold가 위로 갈수록 분모와 분자는 거의 비슷한 값을 가질 것이다. threshold가 변함에 따라 Precision이 급격하게 변하지 않는 것이다. 따라서 Precision은 1클래스가 rare한 경우에 민감하여 분류 performance를 잘 반영해준다.
The key difference is that ROC curves will be the same no matter what the baseline probability is, but PR curves may be more useful in practice for needle-in-haystack type problems or problems where the "positive" class is more interesting than the negative class.
To show this, first let's start with a very nice way to define precision, recall and specificity. Assume you have a "positive" class called 1 and a "negative" class called 0.Y^Y^is your estimate of the true class labelYY. Then:
Precision =P(Y=1|Y^=1)
Recall=Sensitivity =P(Y^=1|Y=1)
Specificity =P(Y^=0|Y=0)
The key thing to note is that sensitivity/recall and specificity, which make up the ROC curve, are probabilitiesconditioned on the true class label. Therefore, they will be the same regardless of whatP(Y=1)P(Y=1)is. Precision is a probability conditioned onyour estimate of the class labeland will thus vary if you try your classifier in different populations with different baselineP(Y=1). However, it may be more useful in practice if you only care about one population with known background probability and the "positive" class is much more interesting than the "negative" class. (IIRC precision is popular in the document retrieval field, where this is the case.) This is because it directly answers the question, "What is the probability that this is a real hit given my classifier says it is?".
Interestingly, by Bayes' theorem you can work out cases where specificity can be very high and precision very low simultaneously. All you have to do is assumeP(Y=1)is very close to zero. In practice I've developed several classifiers with this performance characteristic when searching for needles in DNA sequence haystacks.
IMHO when writing a paper you should provide whichever curve answers the question you want answered (or whichever one is more favorable to your method, if you're cynical). If your question is: "How meaningful is a positive result from my classifiergiven the baseline probabilities of my problem?", use a PR curve. If your question is, "How well can this classifier be expected to performin general, at a variety of different baseline probabilities?", go with a ROC curve.
There is a very important difference between what a ROC curve represents vs that of a PRECISION vs RECALL curve.
Remember, a ROC curve represents a relation between sensitivity (RECALL) and False Positive Rate (NOT PRECISION). Sensitivity is the other name for recall but the False Positive Rate is not PRECISION.
Recall/Sensitivity is the measure of the probability that your estimate is 1 given all the samples whose true class label is 1. It is a measure of how many of the positive samples have been identified as being positive.
Specificity is the measure of the probability that your estimate is 0 given all the samples whose true class label is 0. It is a measure of how many of the negative samples have been identified as being negative.
PRECISION on the other hand is different. It is a measure of the probability that a sample is a true positive class given that your classifier said it is positive. It is a measure of how many of the samples predicted by the classifier as positive is indeed positive. Note here that this changes when the base probability or prior probability of the positive class changes. Which means PRECISION depends on how rare is the positive class. In other words, it is used when positive class is more interesting than the negative class.
So, if your problem involves kind of searching a needle in the haystack when for ex: the positive class samples are very rare compared to the negative classes, use a precision recall curve. Othwerwise use a ROC curve because a ROC curve remains the same regardless of the baseline prior probability of your positive class (the important rare class).
For the benefit of new folks in the field, here's a list of some well known and prestigious free online courses/books on Data Science and machine learning (for certificate you might have to pay though in some of these). Do add if you know any good free courses/resources in comments:
1) Machine Learning (Stanford University, Andrew Ng Course, Coursera)
This is a very respected course and widely accepted in machine learning industry.
https://www.coursera.org/learn/machine-learning
Do the assignments of this course in python as the course is in Octave language which isn't used that much in industry. Assignment solutions in Python.
【자기주도온라인평생학습 】기초 탈출 파이썬 판다스(Python Pandas) 무료 온라인 강의 리스트 – 8개 교육과정
컴퓨터 프로그래밍에서 pandas는 데이터 조작 및 분석을 위해 Python 프로그래밍 언어로 작성된 소프트웨어 라이브러리입니다. 특히, 숫자 테이블 및 시계열 조작을위한 데이터 구조 및 조작을 제공합니다. 3 절 BSD 라이센스에 따라 공개 된 무료 소프트웨어입니다. 위키백과(영어)
Clustering is an important part of the machine learning pipeline for business or scientific enterprises utilizing data science. As the name suggests, it helps to identify congregations of closely related (by some measure of distance) data points in a blob of data, which, otherwise, would be difficult to make sense of.
However, mostly, the process of clustering falls under the realm ofunsupervised machine learning. And unsupervised ML is a messy business.
There is no known answers or labels to guide the optimization process or measure our success against. We are in the uncharted territory.
Machine Learning for Humans, Part 3: Unsupervised Learning
Clustering and dimensionality reduction: k-means clustering, hierarchical clustering, PCA, SVD.
medium.com
It is, therefore, no surprise, that a popular method likek-means clusteringdoes not seem to provide a completely satisfactory answer when we ask the basic question:
“How would we know the actual number of clusters, to begin with?”
This question is critically important because of the fact that the process of clustering is often a precursor to further processing of the individual cluster data and therefore, the amount of computational resource may depend on this measurement.
In the case of a business analytics problem, repercussion could be worse. Clustering is often done for such analytics with the goal of market segmentation. It is, therefore, easily conceivable that, depending on the number of clusters, appropriate marketing personnel will be allocated to the problem. Consequently, a wrong assessment of the number of clusters can lead to sub-optimum allocation of precious resources.
For the k-means clustering method, the most common approach for answering this question is the so-calledelbow method. It involves running the algorithm multiple times over a loop, with an increasing number of cluster choice and then plotting a clustering score as a function of the number of clusters.
What is the score or metric which is being plotted for the elbow method? Why is it called the ‘elbow’ method?
A typical plot looks like following,
The score is, in general, a measure of the input data on the k-means objective function i.e.some form of intra-cluster distance relative to inner-cluster distance.
For example, in Scikit-learn’sk-means estimator, ascoremethod is readily available for this purpose.
But look at the plot again. It can get confusing sometimes. Is it 4, 5, or 6, that we should take as the optimal number of clusters here?
Not so obvious always, is it?
Silhouette coefficient — a better metric
TheSilhouette Coefficientis calculated using the mean intra-cluster distance (a) and the mean nearest-cluster distance (b) for each sample. The Silhouette Coefficient for a sample is(b - a) / max(a, b). To clarify,bis the distance between a sample and the nearest cluster that the sample is not a part of. We can compute the mean Silhouette Coefficient over all samples and use this as a metric to judge the number of clusters.
Here is a video from Orange on this topic,
For illustration, we generated random data points using Scikit-learn’smake_blobfunction over 4 feature dimensions and 5 cluster centers. So, the ground truth of the problem is that thedata is generated around 5 cluster centers. However, the k-means algorithm has no way of knowing this.
The clusters can be plotted (pairwise features) as follows,
Next, we run k-means algorithm with a choice ofk=2 tok=12 and calculate the default k-means score and the mean silhouette coefficient for each run and plot them side by side.
The difference could not be starker. The mean silhouette coefficient increases up to the point whenk=5 and then sharply decreases for higher values ofki.e.it exhibits a clear peak atk=5,which is the number of clusters the original dataset was generated with.
Silhouette coefficient exhibits a peak characteristic as compared to the gentle bend in the elbow method. This is easier to visualize and reason with.
If we increase the Gaussian noise in the data generation process, the clusters look more overlapped.
In this case, the default k-means score with elbow method produces even more ambiguous result. In the elbow plot below, it is difficult to pick a suitable point where the real bend occurs. Is it 4, 5, 6, or 7?
But the silhouette coefficient plot still manages to maintain a peak characteristic around 4 or 5 cluster centers and make our life easier.
In fact, if you look back at the overlapped clusters, you will see that mostly there are 4 clusters visible — although the data was generated using 5 cluster centers, due to high variance, only 4 clusters are structurally showing up. Silhouette coefficient picks up this behavior easily and shows the optimal number of clusters somewhere between 4 and 5.
BIC score with a Gaussian Mixture Model
There are other excellent metrics for determining the true count of the clusters such asBayesianInformationCriterion(BIC) but they can be applied only if we are willing to extend the clustering algorithm beyond k-means to the more generalized version —GaussianMixtureModel (GMM).
Basically, a GMM treats a blob of data as a superimposition of multiple Gaussian datasets with separate mean and variances. Then it applies theExpectation-Maximization (EM) algorithmto determine these mean and variances approximately.
Gaussian Mixture Models Explained
In the world of Machine Learning, we can distinguish two main areas: Supervised and unsupervised learning. The main…
towardsdatascience.com
The idea of BIC as regularization
You may recognize the term BIC from statistical analysis or your previous interaction with linear regression. BIC and AIC (Akaike Information Criterion) are used as regularization techniques in linear regression for the variable selection process.
BIC/AIC is used for regularization of linear regression model.
The idea is applied in a similar manner here for BIC. In theory, extremely complex clusters of data can also be modeled as a superimposition of a large number of Gaussian datasets.There is no restriction on how many Gaussians to use for this purpose.
But this is similar to increasing model complexity in linear regression, where a large number of features can be used to fit any arbitrarily complex data, only to lose the generalization power,as the overly complex model fits the noise instead of the true pattern.
The BIC method penalizes a large number of Gaussiansand tries to keep the model simple enough to explain the given data pattern.
The BIC method penalizes a large number of Gaussians i.e. an overly complex model.
Consequently, we can run the GMM algorithm for a range of cluster centers, and the BIC score will increase up to a point, but after that will start decreasing as the penalty term grows.
We discussed a couple of alternative options to the often-used elbow method for picking up the right number of clusters in an unsupervised learning setting using the k-means algorithm.
We showed that Silhouette coefficient and BIC score (from the GMM extension of k-means) are better alternatives to the elbow method for visually discerning the optimal number of clusters.
Ifyou have any questions or ideas to share, please contact the author attirthajyoti[AT]gmail.com. Also, you can check the author’sGitHubrepositoriesfor other fun code snippets in Python, R, and machine learning resources. If you are, like me, passionate about machine learning/data science, please feel free toadd me on LinkedInorfollow me on Twitter.
7 . 파이썬 머신러닝 강의 02-2 – 파이썬 NumPy 주요 함수 및 기능 정리 파이썬 NumPy 배열 객체의 기본적 활용을 위한 함수 및 기능을 정리한 강의입니다. 강의자료, 소스코드 다운받기 : https://kbig.kr/board/board.brd?boardId=movie_python&bltnNo=11583395793992 주요내용 – NumPy 패키지와 배열(ndarray) 객체 – NumPy 배열 객체의 주요 속성 – 인덱싱 및 슬라이싱 – 내장 함수 사용 – 브로드캐스팅 – 부울 배열과 마스킹 연산 – 배열 객체 정렬
9 . 파이썬 머신러닝 강의 02-4 – 파이썬 Pandas 주요 함수 및 기능 정리 파이썬 Pandas 주요 기능 및 함수 활용방법을 설명하는 강의입니다. 강의자료, 소스코드 다운받기 : https://kbig.kr/board/board.brd?boardId=movie_python&bltnNo=11583395733821 주요내용 – Pandas 패키지와 Series, DataFrame 객체 – DataFrame 객체와 loc 인덱서, iloc 인덱서의 활용 – DataFrame 객체의 행과 열 조작 – DataFrame 객체의 널 값 연산 – DataFrame 객체의 조인 연산
12 . 파이썬 머신러닝 강의 03-2 – 파이썬 Matplotlib의 라인 플롯 만들기 파이썬 Matplotlib 라이브러리를 활용한 라인 플롯을 그리는 방법을 설명합니다. 강의자료, 소스코드 다운받기 : https://kbig.kr/board/board.brd?boardId=movie_python&bltnNo=11583395646866 주요내용 – 라인 플롯과 주요 속성 설정 – 스타일 컨텍스트 매니저를 이용한 플롯 스타일의 일시적 설정 변경 – 객체지향 인터페이스 Figure와 Axes 객체의 사용 – Matlab 스타일 pyplot 인터페이스의 사용
22 . 파이썬 머신러닝 강의 05-1 – Scikit-Learn 기초 및 데이터 표현 방식 이해 파이썬의 머신러닝 라이브러리인 Scikit-Learn을 소개하고 데이터 표현방식을 설명합니다. 강의자료, 소스코드 다운받기 : https://kbig.kr/board/board.brd?boardId=movie_python&bltnNo=11583395295645 주요내용 – Scikit-Learn 소개 – Scikit-Learn 데이터 표현 방식 – 특징행렬과 대상벡터의 데이터 레이아웃 – Numpy 배열을 이용한 특징 행렬(X), 대상 벡터(y)의 생성 – Pandas DataFrame을 이용한 특징 행렬(X), 대상 벡터(y)의 생성 – Bunch 객체를 이용한 특징 행렬(X), 대상 벡터(y)의 생성
23 . 파이썬 머신러닝 강의 05-2 – Scikit-Learn을 활용한 머신러닝 모델 만들기 Scikit-Learn을 활용하여 데이터 준비부터 모델적합, 예측, 평가에 이르는 전 과정을 설명합니다. 강의자료, 소스코드 다운받기 : https://kbig.kr/board/board.brd?boardId=movie_python&bltnNo=11583395272454 주요내용 – Scikit-Learn Estimator API 기본 활용 절차 – 데이터 준비 – 모델 클래스 선택 – 모델 인스턴스 생성과 하이퍼파라미터 선택 – 특징 행렬과 대상 벡터 준비 – 모델을 데이터에 적합 – 새로운 데이터를 이용해 예측 – 모델 평가
PRML algorithms implemented in Python Python codes implementing algorithms described in Bishop's book "Pattern Recognition and Machine Learning" : https://github.com/ctgk/PRML #DeepLearning #MachineLearning #Python
세계 80개국에서 영어로 작성된 7백만 여개의 Syllabus를 수집해 각 전공별로 어떠한 전공 서적이 수업에 가장 많이 참고되었는지를 기록으로 제공해주는 Open Syllabus 사이트를 소개해드립니다.
요즘에는 학부 때와 다른 전공으로 진로를 정하고자 하시는 분들이 많이 계시지만, 비전공자라는 환경적 제약상 어떠한 서적으로 해당 전공을 심도있게 공부할 수 있는지에 대한 고민을 많이 하게 되는 것 같습니다. 리소스는 넘쳐나지만 그 반대 급부로 선택의 고민이 많아지고 있는 것이죠.
물론 모든 서적을 비교해보며 자신에게 가장 맞는 서적을 기반으로 학습하는 것이 가장 이상적일 수 있겠지만, 현실적인 타협안은 가장 많은 전공자들이 필독하는 바이블과 같은 서적을 시작점으로 학습하는 것일 것입니다. 그리고 Open Syllabus가 해당 선택을 도와줄 수 있는 좋은 지침서가 될 수 있을 것 같습니다.
기계학습과 자연어 처리를 공부하는 저의 경우, Open Syllabus에서 수학, 전산학 그리고 추가적 공부를 한다면 언어학에서 자주 사용되는 교재를 기반으로 학습을 시작해볼 수 있겠네요 !
자연어 처리와 직접적인 관련은 없는 게시물일 수 있지만 여러분의 학습 교재 선택에 있어 도움이 될 수 있는 자료인 것 같아 꼭 공유를 드리고 싶었습니다 😆
P.S 전산학의 1위 레퍼런스 교재가 피터 노빅의 인공지능 서적인 점이 재밌네요 ! 그 외 공룡책(OS), 탑다운 네트워크 서적 등도 높은 순위에 랭크되어 있습니다.
Open Syllabus: https://opensyllabus.org/results-list/fields?size=100
앤드류 응 교수가 속해있는 스탠퍼드 ML Group에서 최근 새로운 부스팅 알고리즘을 발표했습니다. 머신러닝의 대가인 앤드류 응 교수의 연구소에서 발표한 것이라 더 신기하고 관심이 갔습니다. 2019년 10월 9일에 발표한 것으로 따끈따끈한 신작입니다. 이름은 NGBoost(Natural Gradient Boost)입니다. Natural Gradient이기 때문에 NGBoost지만 Andrew Ng의 NG를 따서 좀 노린 것 같기도 하네요.. 엔쥐부스트라 읽어야 하지만 많은 혹자들이 앤드류 응 교수의 이름을 따서 응부스트라 읽을 것 같기도 합니다.
어쨌든 다시 본론으로 넘어가면, 지금까지 부스팅 알고리즘은 XGBoost와 LightGBM이 주름잡았습니다. 캐글의 많은 Top Ranker들이 XGBoost와 LightGBM으로 좋은 성적을 내고 있습니다. NGBoost도 그와 비슷한 명성을 갖게 될지는 차차 지켜봐야겠죠.
제목: 랜덤 포레스트를 통한 주가 움직임 예측 금융 분야에서 모든 사람은 주가를 예측하는데 있어 우위를 점할 무언가를 찾고 있습니다. 머신 러닝의 세계는 주가를 정확하게 예측할 수 있는 방법을 열심히 찾고 있는데요. 일부 존재하긴 하지만 퍼포먼스를 보장하기는 어렵습니다. 이 시리즈에서는 인기 있는 머신 러닝 모델 인 랜덤 포레스트를 다룰 것입니다. 랜덤 포레스트에서는 다양한 지표를 기반으로 주식의 움직임을 예측하는 머신 러닝 모델이 될 것입니다. 시리즈의 첫 번째 부분에서는 모델 개요를 설명합니다.
Video 1: https://youtu.be/V8jZuOtckn8 Video 2: https://youtu.be/W2hXbqnrUyY Video 3: https://youtu.be/bdEQwJ6SPnA Video 4: https://youtu.be/E2LX_hUHMn0 Video 5: https://youtu.be/iJmteST6fP8 Video 6: https://youtu.be/ioUtR92tDAA
Recently, I came across this excellent machine learning playlist by Prof. Arti Ramesh from SUNY Binghamton. It contains videos on all topics covered in a machine learning course. I think folks here will like it.
그룹에 Mathematics for Machine Learning(MML) 책을 보고 공부하시는 분들이 많을 것 같습니다. 동명의 Coursera 강의를 듣는 분들도 계실테고요.
강의를 진행하는 4명의 강사 중 한 명인 Sam Cooper는 Coursera의 MML 강좌를 등록한 학생 수가 15만명이 넘은 것을 자축하며, 해당 강좌를 유튜브에 무료로 풀기로 결정했다는 소식을 알렸습니다. 확인해보니 Chapter.3인 PCA 재생목록은 아직 올라와있지 않긴 하지만 '선형대수'와 '다변수미적분학'은 빠짐없이 올라와있네요.
+) 검색해보니 MML 강좌가 이미 Youtube 내 다른 재생목록으로 올라와있긴 한데 해당 강좌는 Unofficial 업로드이고, 빠진 영상도 더러 있는 것 같습니다. ICL 측에서 Official하게 올려준 강좌의 도움을 받아 수학 공부를 합시다..! (영어 자막도 제공해줍니다 크) https://www.facebook.com/groups/TensorFlowKR/permalink/1038633053144419/?sfnsn=mo
Machine Learning Tutorial 6 - Decision Tree Classifier and Decision Tree Regression in Python https://www.facebook.com/groups/DataScienceGroup/permalink/2755799524481920/?sfnsn=mo
Machine Learning for Intelligent Systems: Cornell CS4780/CS5780
Lectures: https://www.youtube.com/playlist?list=PLl8OlHZGYOQ7bkVbuRthEsaLr7bONzbXS Course Website: http://www.cs.cornell.edu/courses/cs4780/2018fa/syllabus/index.html Find The Most Updated and Free Artificial Intelligence, Machine Learning, Data Science, Deep Learning, Mathematics, Python, R Programming Resources https://www.marktechpost.com/free-resources/
Here's the best order. In order Linear Algebra, Optimisation Theory, Probability Theory, Statistical Machine Learning, Classical Machine Learning, Computer Vision, Deep Learning
[CS230 Deep Learning ](https://scpd.stanford.edu/search/publicCourseSearchDetails.do?method=load&courseId=82209222)
[CS231A Computer Vision: From 3D Reconstruction to Recognition ](https://scpd.stanford.edu/search/publicCourseSearchDetails.do?method=load&courseId=10796915)
[CS231N Convolutional Neural Networks for Visual Recognition ](https://scpd.stanford.edu/search/publicCourseSearchDetails.do?method=load&courseId=42262144)
[AA228 Decision Making Under Uncertainty ](https://scpd.stanford.edu/search/publicCourseSearchDetails.do?method=load&courseId=39254289)
머신러닝 공부를 시작하기 위해 구글 검색을 해보면 열이면 아홉은 Andrew Ng 교수의 머신러닝 강좌부터 볼 것을 추천하고 있다. 앤드류 응 교수는 구글 브래인팀을 이끌었던 세계적인 AI 권위자로 스탠포드 대학 교수이자 코세라 창립자이다.
참고로 코세라 강의는 월 $45를 결제하면 Specializations에 있는 모든 과목을 무제한을 들을 수 있는데, 유명한 머신러닝 강의는 대부분 코세라에 있다. 가입 후 7일 동안은 무료라서 일단 가입했다.

앤드류 응 교수의 강의는 머신러닝 기본 강의라고 보면 될 것 같다. 수업은 원하는 때에 들을 수 있었고, 다만 숙제가 있다. 숙제는 Octave(옥타브)라는 스크립트 언어로 나왔다. 개인적으로 이 강의를 보고 난 후 파이썬을 공부했는데, 파이썬을 이미 공부한 사람들은 강의 숙제를 할 때 GitHub에 파이썬 코드로 재작성된 자료를 참고하면 될 것이다.
2. 파이썬(Python) 공부
어떤 머신러닝 전문가는 머신러닝을 배울 때 코딩부터 배우지 말라고 한다. 그런데 필자는 앤드류 응 교수의 머신러닝 수업을 대강 마무리 하고 바로 파이썬 문법을 공부했다. 삽질부터 해보는 개발자여서 그런지 이론보다는 코드에 먼저 눈이 갔던 것 같다.
파이썬은 머신러닝에 즐겨 쓰이는 프로그래밍 언어이다. R이나 Matlab 같은 것도 있는데 머신러닝 언어 중 대세는 파이썬이라고 한다.
필자는 파이썬 공부를 하기 위해 파이썬 공식 사이트로 가서 문서들을 한 번 쭉 훑어보고 유데미(Udemy)에서 제일 짧은 강의부터 찾았다. 강의 이름은 김왼손의 유기농냠냠파이썬이라는 강좌였는데 파이썬 문법 부분만 빠르게 넘겨 보았다. 여러가지 프로그래밍 언어를 다뤄봐서 그런지 몇몇 파이썬 만의 독특한 문법들 빼고는 크게 어렵지는 않았다. 개인적으로 파이썬 문법 공부는 하루면 충분했던 것 같다.
만약 이미 코세라를 구독하고 있고 프로그래밍이 처음이거나 파이썬을 기초부터 제대로 배우고 싶다면 Python 3 Programming 강의를 추천한다.
3. 그래프 모형, 인공신경망 강의
머신러닝을 공부할 때는 머신러닝 개론 -> 그래프 모형 -> 인공신경망 순으로 공부하면 된다고 한다. 그래프 모형(Graphical Model)이란 머신러닝의 근간을 이루는 모델로 변수간 상호 의존 관계를 설명한다.

그래프 모형에 대한 강의는 Daphne Koller 교수의 Probabilistic Graphical Models 강의가 가장 유명하다. 이 역시 코세라 강의이다.
다음으로 최근 머신러닝의 대세가 된 알고리즘인 인공신경망(Neural Network) & 딥러닝(Deep Learning) 공부를 했다. AI, 머신러닝, 인공신경망, 딥러닝 개념이 어렵다면 아래 그림과 같은 관계라고 보면 된다.

AI(Artificial Intelligence)란 인간의 지능을 기계로 만든 것을 의미하며, 그 구체적인 방법 중 하나가 머신러닝(Machine Learning)인 것이다. 그리고 머신러닝을 구현하는 알고리즘 중의 하나가 인공신경망(Neural Network)과 딥러닝(Deep Learning)인 것이다.
딥러닝은 인공신경망에서 발전된 형태로 심화신경망 또는 개선된 인공신경망 등으로 불리기도 한다.
인공신경망 강의 역시 앤드류 응 교수의 코세라 강의인 Neural Networks and Deep Learning 강의를 들었다. 참고로 아직 보지는 않았지만 인공신경망 쪽에서 휴고 라로첼(Hugo Larochelle)의 유튜브 강의도 괜찮다고 한다.
4. 머신러닝 실습 강의
코세라 강의를 들으면서 잘 이해되지 않은 부분도 있고, 영어로 수업이 진행되다 보니 놓치는 부분도 많았던 것 같다. 그래서 조금 더 쉽고 실용적인 강의가 없나 찾다가 추가로 유데미에 있는 머신러닝 강의를 들었다.
참고로 유데미 강의는 프로그래밍을 전혀 해보지 않은 사람은 다소 따라가기 어려워 보였다. 강의는 텐서플로우와 케라스를 통해 인공 신경망 개발 환경을 구축해보고 딥러닝을 통한 이미지, 데이터 분류 실습을 해본다.
또한 강화학습에 대한 내용과 Apache Sparks MLlib을 통한 대량 데이터 머신러닝 처리에 대한 내용도 배울 수 있었다.
5. 추가 학습
유데미 강의는 아직도 틈틈히 수강하고 있다. 그 와중에 다른 머신러닝/딥러닝 강의를 알아보다가 홍콩과기대 김성 교수님의 강의를 보게 되었다. 뭔가 이전에 배웠던 내용을 recap 하는 차원에서 보게 되었는데 머신러닝 이론에 대해 깔금하게 정리되어 있다. 머신러닝 공부를 시작하거나 공부 중이라면 참고하면 괜찮은 강의이지 않을까 싶다.
6. 머신러닝 공부에 도움 될 만한 URL 모음
머신러닝 공부에 도움 될 만한 사이트나 자료에 대한 URL은 이곳에 계속 업데이트할 예정이다.
- 딥러닝을 위한 기초 수학 : https://www.slideshare.net/theeluwin/ss-69596991 - 텐서플로우 연습 코드 모음 : https://github.com/golbin/TensorFlow-Tutorials - 구글 딥러닝 강의 : https://www.udacity.com/course/deep-learning--ud730 - 머신러닝 오픈소스 튜토리얼 : https://scikit-learn.org/stable/tutorial/ - 옥스포드 머신러닝 수업자료 : https://www.cs.ox.ac.uk/people/nando.defreitas/machinelearning/ - 머신러닝 용어집 : https://developers.google.com/machine-learning/glossary/?hl=ko
아리스토텔레스의 "시작이 반이다" 라는 명언이 있다. 그런데 영어 원문은 "Well begun, is half done." 이다. 한국어로 번역되면서 Well의 의미가 삭제된 것 같다. 제대로 해석하면 "좋은"시작이 반을 차지한다는 것이지 무작정 시작만 하면 된다는 의미는 아니다.
머신러닝, 딥러닝 공부 역시 마찬가지인 것 같다. 제대로 된 강의와 가이드로 공부를 시작해야 한다. 그리고 그 첫 시작은 앤드류 응 교수의 coursera 강의라고 생각한다. 아직도 머신러닝 공부를 망설이고 있다면, 일단 코세라에 접속해서 무료 강의부터 들어보자.
Learn: 1. linear algebra well (e.g. matrix math) 2. calculus to an ok level (not advanced stuff) 3. prob. theory and stats to a good level 4. theoretical computer science basics 5. to code well in Python and ok in C++
Then read and implement ML papers and *play* with stuff! :-)
Particle Swarm Optimization – A Tutorial Dear all here is a tutorial paper on one of the optimization algorithms, is called particle swarm optimization (PSO). It is one of the most well-known optimization algorithms. In this paper: • Introduction to PSO. • Detailed explanation for the PSO algorithm with a good visualization. • Two neumerical examples, o The first example explains in a step-by-step approach how the PSO works. o The second example explains how the PSO suffers from the local minima problem. • Another experiment to explain fastly how the PSO can be used for optimizing some classifiers such as Support vector Machine (SVM) • The paper includes Matlab code
Your comments are highly appreciated.
Here is the link of the pdf https://www.academia.edu/36712310/Particle_Swarm_Optimization_-A_Tutorial or here on researchgate https://www.researchgate.net/publication/325575025_Particle_Swarm_Optimization-A_Tutorial?_sg=ClpsRLk5klozmA85qNOSIg2eNn_d1WDbh1yDUouQVJ7DTHmxP4DQuCK42YkJHtmQyc6U7zLXAwGAYbzWm6E03QtSGm18_jZG71IS6P9z.yGITB4_GJRnwIchxQM63qJvdswe4sGcmi9e4odn0gB2lL6nqWNdPYzTJsGI0Afo0xn-OWZMLXFIhmMTeLtuDaQ
The code is here https://de.mathworks.com/matlabcentral/fileexchange/62998-particle-swarm-optimization--pso--tutorial