기본 콘텐츠로 건너뛰기

5월, 2019의 게시물 표시

신경망 with [개발자를 위한 머신러닝] (1/2)

신경망 일반적인 분류, 군집의 블로그 설명은 넘어가기로 한다 l   신경망 모델 역사 l   신경망과 해결 가능한 문제 l   다층 퍼셉트론 l   이진 함수 모델링을 위한 간단한 신경 계층 구현 1.  신경망 모델 역사 맥클러치와 피츠 모델 1940년대 중반 인간 두뇌의 학습 기능을 표현하는 최초의 수학적 방법은  Warren McCulloch 와 Walter Pitts 가 1943년 발표한 [A Logical calculus of ideas immanent in nervous activity]에 맥클러치와 피츠 모델이다 맥클러치와 피츠 모델 모델에서 조정할 파라미터를 나타내기 위해 일반적으로 w 문자를 사용한다. 퍼셉트론 모델 인공 뉴런을 구현하는 가장 간단한 방법중 하나 임의 분포로 가중치를 초기화 입력 벡터를 선택하고 네트워크에 사용 지정한 입력 벡터와 가중치 값에 대한 네트워크의 출력 y'를 계산 y' != y 일때 error 를 추가해 모든 가중치(w)를 수정 2단계로 돌아감 y'=y일때까지 반복 퍼셉트론 모델 퍼셉트론(Perceptron) 은 맥클러치와 피츠 모델을 바탕으로 만들어 졌지만, 오차 계산하는 학습 메커니즘이 추가 됐다는 점이다 퍼셉트론 모델  에 대해 자세히 설명한 블로그이다 예측 값 개선: ADALINE(Adaptive Linear Neuron) 알고리즘 퍼셉트론 모델에 비해 한층 진화된 알고리즘 오차 계산할때 그랜디언트 디센트 방식을 사용하고 활성화 출력이 가중치의 합계에 적용되기 전에 오차가 측정된 지점을 변경하는 과정이 추가됨 임의 분포로 가중치를 초기화 입력 벡터를 선택하고 네트워크에 사용 지정한 입력 벡터와 가중치 값에 대한 네트워크의 출력 y'를 계산 사용할 출력 값을 합계 후의 출력 값 모델 출력을 올바른 레이블 O 와 비교해 오차를 계산 if y' != y, 반복적인 그래디언트 디

머신러닝 학습과정 with [개발자를 위한 머신러닝] (2/2)

머신 러닝 학습 과정 (2/2) 5. 모델 정의 사용할 모델을 선택하는 작업 수행하려는 작업 유형과 입력 데이터 유형에 따라 모델을 선택 이 과정에서 올바른 모델 정의란 없음, 하지만 어느정도의 가이드 라인은 있다 특성을 기반으로 정보를 그룹화 하여 데이터의 특징을 파악하려 하는가? 비 지도학습 기반의 클러스터링 ( k-means ,   k-medoids, DBSCAN , ...) 데이터가 순차적이거나 순서를 고려해야하는가? 순환신경망 사용 변수에 대해 결과를 예측하거나, 데이터에 태그를 저장하기 위해 그룹으로 분류 하려 하는가? 지도학습 기반의 분류 및 회귀 ( KNN, SVM, 나이브베이즈 분류, 의사결정 나무, 로지스틱 , ...) 데이터 또는 패턴이 공간적으로 발견되는가? 합성곱 신경망 사용 많은 차원이 있는 데이터 인가? 덜 중요한 특징은 제외하고 가장 유용한 특징들을 추출하기 원하는가? 차원축소기법을 사용 (주성분분석등 ) 목표에 도달하는 일련의 단계를 만드는 전략? 강화학습 분야   위에서 정의한 가이드라인이 정답은 아니다. 더 좋은 모델과 그렇지 않은 모델만 있을 뿐이다. 6. 손실 함수( Loss Function) 정의 머신러닝 에서 손실 함수를 정의하는 작업은 중요하다. 손실 함수란 모델의 예상 값에서 실제 예상 값 까지의 거리를 측정하는 함수 손실 함수의 결과값을 가장 작게 만드는것이 머신러닝의 학습 목표 기본적으로 평균제곱오차(Mean Squared Error, MSE) , 교차 엔트로피 오차(Cross Entroypy Error , CEE) 가 사용됨 최근 머신러닝이 발전함에 따라 경사하강법( Gradient descent )을 사용 7. 모델 피팅 및 평가 모델과 데이터가 필요하며, 모델을 훈련하고 검증하는 단계 데이터셋 분할 일반적으로 n-fold cross validation 을 사용 데이터셋에서 Training Data와 Test Data를

머신러닝 학습과정 with [개발자를 위한 머신러닝] (1/2)

머신 러닝 학습 과정 (1/2) 1. 문제이해 문제를 풀 때 데이터와 가능한 작업량을 미리 분석하는 것  문제의 정의 데이터 수집과정 데이터 수집의 시간 전처리의 유무 2. 데이터셋 정의 및 획득 ETL 프로세스 ETL( Extract, transform, load)은 단어대로 추출, 변환, 적재를 하는 프로세스 빅데이터를 분석하기 위해서 필요한 전처리 과정   데이터를 추출 후 분석할수 있게 변환하여 적재하는 과정  전통적인 ETL 다이어그램 SciPy 및 pandas 를 사용한 데이터셋 로드 및 탐색 분석 예제 코드 :  https://github.com/Limdh3325/Machine-Learning-for-Developers/blob/master/Chapter02/Code/Dataset_IO.ipynb 3. 피처 엔지니어링 가공전 데이터를 가져와서 모델이 일반화 하기 쉬운 형태로 변환하는 과정 예측 모델의 정밀도를 향상시키기 위해 학습용 원시 데이터를 기반으로 피처를 변환, 추출, 선택하거나 새로운 피처를 생성하는 작업 누릭된 데이터 다루기 불완전한 데이터셋이 있을때 누락된 부분은 모델에 도움이 되지 않는다. 따라 결측치를 처리하는 방법이 필요함 기본적으로 아래의 방법을 행함 해당 결측치행을 제거하여 학습에 사용하지 않는것 데이터의 평균을 사용하여 결측치에 넣는것 해당 열의 중앙값 사용 해당 열의 빈번한 값을 사용 하지만 위의 방법으로 학습이 안될 가능성이 있기 때문에 적중률을 높이기 위해 좀더 고급기술을 사용한다.  누락된 값(결측치)에 대한 상세한 처리 방법은 결측치 처리 블로그  에서 확인해주시기 바랍니다. 원핫 인코딩 (One-Hot Encoding) 하나의 값만 True(1)이고 나머지는 모두 False(0)인 인코딩 머신러닝에서는 수치로된 데이터만 이해할수 있기 때문 보통 자연어 처리 부분에서 사용함 결측치

머신러닝 소개 및 통계 과학 with [개발자를 위한 머신러닝]

예제 코드 다운 로드  https://github.com/PacktPublishing/Machine-Learning-for-Developers 사용할 도구 Anaconda3 - jupyter notebook , Mac OS X 사용 언어 Python3 라이브러리 pandas (데이터처리 ) , NumPy(행렬과 같은 데이터), matplotlib (플로팅 라이브러리, 그래프) 기본적인 수학개념 기술통계학 : 주요 연산 ( 샘플코드는 넘어감 ) 평균 : 모든 원소의 합을 그 원소의 개수로 나눈 값 분산 : 평균으로 부터 모든 원소간 거리를 평균 한 값 표준 편차 : √분산 확률 및 확률 변수 ( 샘플코드는 넘어감 ) 확률에 대해 더 상세한 설명은 확률의 이해 사건(event) : 한 실험에서 나타날 수 있는 모든 결과의 일부 세트 확률 : 사건의 발생 가능성, 0 ~ 1 사이의 실수 베르누이 분포 : 발생할 수가 0 과 1로 이루어 지는 단일 사건일때 사용 균일 분포(Uniform Distribution) : 확률변수가 구간 [a,b] 내의 모든 영역에서 일정한 확률을 가질때 사용 정규 분포 : 가우스 함수라고 불리며 연속적인 랜덤 함수 로지스틱 분포 : 정규 분포와 비슷하지만 정규 분포 보다 더 긴 꼬리를 가지고있음, 누적 분포함수(CDF)가 중요, CDF를 계산하면 시그모이드 곡선을 볼수있음. 확률 함수에 대한 통계적 측정 기준 비대칭도(Skewness) 첨도(Kurtosis) 이외 필요한 수학적 지식 미분 적분 연쇄 법칙 편미분 참고 https://www.packtpub.com/big-data-and-business-intelligence/machine-learning-developers https://m.blog.naver.com/PostView.nhn?blogId=mykepzzang&