로지스틱 분류분석(Logistic Regression)  

- 2가지 분류군으로 사용(0 / 1 encoding)

 

 

예제1) 공부시간과 합격과의 관계 

 

0) 데이터 정리 

 

1) 가설함수 정의 : logistic regression 적용

 

시그모이드 함수(회쉬분석 식) 

 

2) 손실함수(CEE) - ylog(H(x)) - (1-y)log(1-H(x))

 

3) 경사하강법 알고리즘 

 

4) tensorflow 실행

 

예제2) 당뇨병 환자 데이터 셋(759명의 데이터 셋) 

 

- 70~80%  학습, 20~30% 확인 

 

0) 데이터 정리 

1) 가설함수 정의

2) 손실함수 정의 (CEE) 

3) 경사하각법 적용

 

 

4) tensorflow의 흐름

 

console) 

 

1개 빼고는 정답과 동일한 결과를 출력합니다. 

 

머신러닝(MachineLearning)

: 어플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭 합니다. 

 

 

● 추가 설명


- 데이터를 기반으로 통계적인 신뢰도를 강화하고 예측 오류를 최소화하기 위한 다양한 수학적 기법을 적용해 데이터 내의 패턴을 스스로 인지하고 신뢰도 있는 예측 결과를 도출합니다.  

- 데이터 분석 영역은 재빠르게 머신러닝 기반의 예측분석 (Predictive Analysis)으로 재편되고 있습니다. 

- 많은 데이터 분석가와 데이터 과학자가 머신러닝 알고리즘 기반의 새로운 예측모델을 이용해 더욱 정확한 예측 및 의사 결정을 도출하고 있으며 , 데이터에 감춰진 새로운 의미와 통찰력 ( 를 발굴해 놀랄 만한 이익으로 연결시키고 있습니다.  

- 귀납적 학습 : 데이터만 주어지더라도 구조를 추론하려고 시도하기 때문입니다. 

 

 

머시러닝 vs 데이터 마이닝 

- 기계 학습과 데이터 마이닝은 종종 같은 방법을 사용하며 상당히 중첩된다. 다만 다음에 따라 대략적으로 구분

- 기계 학습은 훈련 데이터(Training Data)를 통해 학습된 알려진 속성을 기반으로 예측에 초점을 두고 있습니다. 

- 데이터 마이닝은 데이터의 미처 몰랐던 속성을 발견하는 것에 집중합니다. 이는 데이터베이스의 지식 발견 부분의 분석 절차에 해당합니다. 

 

 

지도학습 (Supervised Learning) 


1) 분류 (Classification) 이진분류 / 다중분류

:  레이블 y가 이산적(Discrete)인 경우 즉, y가 가질 수 있는 값이 [0,1,2 ..]와 같이 유한한 경우 분류, 혹은 인식 문제라고 부릅니다. 일상에서 가장 접하기 쉬우며, 연구가 많이 되어있고, 기업들이 가장 관심을 가지는 문제 중 하나입니다. 이런 문제들을 해결하기 위한 대표적인 기법들로는 로지스틱 회귀법, KNN, 서포트 벡터 머신 (SVM), 의사 결정 트리 등이 있다.


2) 회귀 (Regression)

: 레이블 y가 실수인 경우 회귀문제라고 부릅니다. 데이터들을 쭉 뿌려놓고 이것을 가장 잘 설명하는 직선 하나 혹은 이차함수 곡선 하나를 그리고 싶을 때 회귀기능을 사용합니다. 통계학의 회귀분석 기법 중 선형회귀 기법이 이에 해당하는 대표적인 예입니다. 


3) 추천시스템
4) 시각 음성 감지 인지
5) 텍스트 분석 , NLP

 


비지도학습 (Un supervised Learning) 

 

1) 군집화 (clustering)  

: 데이터가 쭉 뿌려져 있을 때 레이블이 없다고 해도 데이터간 거리에 따라 대충 두 세개의 군집으로 나눌 수 있습니다. 이렇게 x만 가지고 군집을 학습하는 것이 군집화라고 합니다. 

 

2) 차원 축소

 

● 강화학습 (Reinforcement Learning) 

:  강화학습은 현재의 상태(State)에서 어떤 행동(Action)을 취하는 것이 최적인지를 학습하는 것입니다.  행동을 취할 때마다 외부 환경에서 보상(Reward)이 주어지는데, 이러한 보상을 최대화 하는 방향으로 학습이 진행됩니다. 그리고 이러한 보상은 행동을 취한 즉시 주어지지 않을 수도 있다고 합니다(지연된 보상). 

 

 

 

선형회귀(Linear Regression Analysis) 

: 독립변인이 종속변인에 영향을 미치는지 알아보고자 할 때 실시하는 분석 방법입니다. 선형성이라는 기본 가정이 충족된 상태에서 독립변수와 종속변수의 관계를 설명하거나 예측하는 통계방법으로 회귀분석에서 독립변수에 따라 종속변수의 값이 일정한 패턴으로 변해 가는데 , 이러한 변수간의 관계를 나타내는 회귀선이 직선에 가깝게 나타나는 경우를 의미합니다.  

- 선형이기 때문에 어떤 X 값이라도 W와 b만 정의되면 알 수 있습니다. 


종 류
- 단순회귀분석 : 독립변수가 하나인 경우
- 다중회귀분석 : 독립변수가 여러 개인 경우

 

 

단순 선형 회귀 분석

H(x) = Wx + b

x : 독립변수
y : 종속 변수
W : 직선의 기울기 (가중치 : weight) 
b : y 절편 (bias)

 

 

편차(Deviation)

- 수학 및 통계학에서 편차는 자료값 또는 변량과 평균의 차이를 나타내는 수치입니다. 
- 편차를 살펴보면 자료들이 평균을 중심으로 얼마나 퍼져 있는지를 알 수 있습니다.  
- 자료값이 평균보다 크면 편차는 양의 값을 , 평균보다 작으면 음의 값을 가지게 됩니다.
- 편차의 크기는 차이의 크기를 나타냅니다. 
- 편차의 절댓값은 절대편차 , 편차의 제곱은 제곱편차라고 합니다. 

 

 

용어 정의

잔차 (Residual) 
: 회귀분석에서 종속변수와 적합값 예상값 의 차이, 잔차는 종속변수 적합값 으로 정의

분산 (Variance)
: 편차의 제곱

표준 편차 (Standard Deviation)
: 분산의 제곱근

 

 

1. 단순회귀분석 

 

1) 가설함수(Hypothesis) 정의 y = wx + b

2) 손실(Loss or Cost)함수 정의 

 

- 선형회기 일 때, 평균 제곱 오차(MSE) 사용 

: 실제 값과 예측 값의 차이를 제곱하여 평균을 낸 값입니다. 

 

3) 경사하강법(Gradient descent) algorithm 사용

 

- 손실이 계산 될 때마다 경사하강법을 넣어서 최적의 w, b 값을 찾도록 학습시킵니다.

학습률 x 접선의 기울기(미분값) 

손실 값 = 0이 되는 것을 찾아가는 것으로 음수가 나오면 양수쪽으로 이동, 양수가 나오면 음수쪽으로 이동

 

4) tensorflow 실행

tensorflow = 배열이나 행렬의 데이터가 흘러간다는 의미를 가집니다. 

tensor / 행렬, 배열의 데이터를 의미 , flow/ 흘러가는 구조

 

출력값 

 

2. 다중회귀분석 

※ 중간고사 점수를 가지고 기마고사 점수 예측 하기 

 

0) 데이터 정리

 

1) 가설 함수 정의 

 

2) 손실 함수 정의

3) 경사하강법 알고리즘 

 

4) tensorflow 실행

너무 적게 학습 시켜도 안되고, 너무 많이 학습 시켜도 좋지 않습니다. 입력데이터에 따라서 그 숫자는 다릅니다. 일반적으로 반복의 수는 결과를 통해서 지속적 변경이 요구됩니다. 

 

결과값

100번 학습이 될 때, nan이 출력되었다. 

 

해결점) 

learning_rate=0.00001을 줄여보도록 하겠습니다. 

 

9900번에서 손실값이 0.301307로 점점 줄어들었습니다. 예측값이 점점 맞춰져 가고 있습니다. 

실제 값- finalterm = [152.,185.,180.,196.,142]

모델(예측값) - 150.93 , 184.98941, 180.49393 , 196.34583 , 142.05391  

 

실제값과 상당히 유사한 값을 예측하고 있습니다. 

 

조금 더 정확한 값을 예측하기 위해서 횟수 15001번으로  늘려보도록 하겠습니다. 

- 15001번인 이유는 마지막 값을 출력하기 위함입니다. 

 

실제 값- finalterm = [152.,185.,180.,196.,142]

모델(예측값) - 151.22945, 184.79118, 180.59178, 196.36273, 141.8395

 

- 횟수가 늘어났다고 해서 모든 값이 점수가 향상된다고 반드시 이야기 할 수는 없습니다. 마지막 값은 변동 예측치가 조금 떨어진걸 통해서 알 수 있습니다. 평균 값을 봤을 때 손실값이 줄어들 수 있음을 확인할 수 있습니다. 

 

※ 학습 데이터를 통해서 정확도를 이야기를 하면 안됩니다. 추가적으로 새로운 데이터에 적용해봤을 때, 나온 결과를 보고 정확도를 확인할 수 있습니다. 

 

 

위의 코드를 실용적으로 변경해보도록 하겠습니다. 

 

- 데이터를 metrix의 형태로 넣어줍니다. 

같은 결과를 보이지만, 퍼포먼스가 엄청 큰 차이로 발생합니다. 

 

 

지금까지 만든 모델을 확인해보겠습니다. 

148.60616 이라는 결과가 나옵니다.  

 

anaconda prompt를 관리자 권한으로 실행합니다. 

 

파이썬 버전 확인 - python --version 

3.7 버전은 tensorflow 2버전과 호환성을 가지고 있고, 3.6 버전은 tensorflow 1버전과 호환성을 가지고 있기 때문에 버전이 상당히 중요합니다. 

 

버전이 맞지 않아서 환경이 틀어져 버리면 돌이킬 수 없는 상황이 올 수 있습니다. 그런 상황을 대비해서 가상환경을  통해서 사용해보도록 하겠습니다. 

 

 

- 가상환경 구축하기 

conda create -n 이름, 파이썬 버전 입력 

- 3.6 버전은 tensorflow 1버전과 호환성을 가지고 있기 때문에 3.6 버전으로 가상환경을 구축합니다. 

 

 

- 가상환경 확인 

conda env list

 

 

- 가상환경으로 들어가기

conda activate 환경이름. 

- conda 생략 가능

 

 

- 설치된 패키지랑 버전 확인 

pip freeze 

 

 

- 패키지 설치 

pip install 패키지명 == 버전

 

버전을 지정하지 않으면 가장 최신의 버전이 다운 받아지는데, 상호 버전의 호환성이 일치하지 않아서 라이브러리 간의 호환성에 의해서 error가 발생할 수 있습니다. 그렇기 밑에 호황성에 맞는 버전으로 다운받겠습니다. 

 

 

1) numpy (1.14.1)

 

2) pandas (0.22.0)

 

3) tensorflow (1.8)

 

4) scikit-learn (0.19.1)

 

5) seaborn (0.8.1)

 

6) keras (2.1.6)

 

7) jupyter notebook 

 

- pycharm 가상환경 설정

 

pycharm에서 지금까지 설정한 가상환경을 설정하도록 하겠습니다. 

 

 

환경설정을 할 파일을 선택합니다. 

 

 

저장했던 가상환경을 설정하여 ok를 눌러주고, creat를 눌러줍니다. 

 

 

this window 를 눌러줍니다. 

 

 

이전에 사용하는 환경과 다르기 때문에 새로운 환경이 설정되어 시작하므로 새롭게 켜줍니다. 

 

 

구축 이후. 환경이 잘 설정이 되었는지 확인해주어야합니다!!

+ Recent posts