선형 회귀분석의 기초라고 할 수 있는 단순 선형 회귀분석이다.

 

머신러닝에 있어서 정답 레이블이 연속형인 값을 예측하는 데 사용된다.

 

예를 들어보자.

아버지의 키를 통해 아들의 키가 몇이 될지 예측하고 싶다.

<여기서 아버지의 키는 X변수(독립변수, feature), 아들의 키는 Y변수(종속변수, label)이다.>

데이터로 몇 명의 아버지와 몇명의 아들의 키를 가지고 있다.

 

다음과 같이 아버지의 키와 아들의 키를 scatter로 뿌려보면 다음과 같이 보일 것이다.

그러면 우리는 아버지의 키와 아들의 키를 잘 설명할 수 있는 직선을 그을 수 있다.

다음과 같이 여러 직선을 그은 것 중에, 점(실제 데이터)과 예측(점과 X값이 같으면서 선위의 점) 사이의 거리(cost)

최소가 되는 점이 아버지의 키와 아들의 키를 가장 잘 설명하는 직선이 될 것이다.


왜 우리는 이러한 선을 긋고,

예측을 하려는 것일까?

 

머신러닝의 기본으로 다시 돌아와 보면,

데이터가 풍부해짐에 따라 

가지고 있는 데이터를 통해

새로운 데이터를 맞이 했을 때, 그 값을 미리 예측할 수 있다면,

어떠한 서비스를 예측하여 제공해 줄 수도 있고,

기후 예측 등 실생활에서 활용을 할 수 있다.


 

이 예제에서도 마찬가지로, 아버지의 키를 통해 아들의 키가 어떻게 변화하는지를 보면서

아버지의 키와 아들의 키가 관계가 있다는 인사이트를 도출할 수 있다.

 

다시 본론으로 돌아오면, 이러한 점과 선 사이의 거리는 제곱의 형태나 절댓값의 형태로 나타낼 수 있다.

제곱을 다 더한 것이 우리가 자주 듣던 MSE(Mean Squared Error, 평균 제곱 오차)이고,

절댓값을 다 더한 것이 MAE(Mean Absolute Error, 오차절대합)이다.

결국, 점-선 또는 선-점을 합해버리면 그 값들이 상쇄가 되어 제곱이나 절댓값 형태를 취해주어서

상실되는 것을 방지하는 것이다.

 

여기서 제곱을 한다면, 에러가 크게 날 수록, 그 에러에 대해 제곱을 하게 되면 더 크게 값이 형성된다.

제곱 형태를 사용하면, 많이 벗어난 에러애 대해 큰 벌점을 주게 되는 것이다.

이러한 경우, 이상점이 있다면 error가 높을 것이라는 추측을 할 수 있다.


MSE를 활용하여 cost함수를 최소화 하도록 해보자.

수식적으로 간단하게 접근해보자.

저 아버지와 아들의 관계를 나타낸 선을 y = wx + b라고 한다면,

y와 x의 관계를 잘 설명하는 최적의 w와 b를 구하는 것이 목표인 것이다.

 

여기서  

y는 우리가 예측할 값이므로 H(x)로 표현할 수 있다.

이러한 과정을 Gredient Decesnt, 경사하강법이라고 부른다.

이를 수식적으로 표현해보면, 다음과 같은 cost 식을 도출해 낼 수 있다. 우리는 이 cost(W,b)를 최소화하는 것이 목적이다.

위의 식에서 H(x)자리에 wx+b를 대입하고, 식을 푼다면 이 식은 W에 대한 2차방정식으로 표현될 수 있다.

(나머지 문자는 상수 취급)

그러면 우리는 2차방정식을 그래프(2차함수, 아래로볼록)을 그릴 수 있고,

X축은 W축, Y축은 COST축이라고 말할 수 있다.

 

이 cost가 가장 작은 지점은  이차함수에 있어서 미분된 값(기울기)가 0이 되는 지점일 것이다.

그 값을 구하기 위해 W미분값이 최소가 되는 값을 구하는 과정이 바로 Gredient Decent의 핵심 아이디어이다.

 

기존 가중치 - 알파(learning rate, 학습률) * W를 미분해서 나온 값 * cost(W)값 을 진행하면서

W의 값을 계속 업데이트 해나가며, 더이상 W가 움직이지 않을때, 그 지점이 바로 cost의 최솟값, w의 최적값이 되는 것이다.

 

 여기서 알파값(learning rate)을 어떻게 잡느냐에 따라 W가 움직이는 속도가 정해진다. learning rate 값이 클수록 W는 크게크게 바뀌게될 것이고, learning rate 값이 작을수록 천천히 접근하게 될 것이다.

이를 잘 맞춰 주어야한다.

 

단순선형회귀의 기본적인 개념은 여기까지다.

질문이 있으시다면 댓글에 적어주시면

성실히 답변해드리겠슴다.

 

'Data Anaylsis > Machine Learning' 카테고리의 다른 글

gausian mixture  (0) 2020.04.13
릿지 라쏘 엘라스틱넷  (1) 2020.03.12
다중회귀, 다항회귀(Multiple linear regression, Polynomial regression)  (0) 2020.03.06
s  (0) 2020.02.27
데이터분석 기본개념  (0) 2020.02.12

X와 Y의 관계를 찾는 것!

우리의 주 관심은 Y(예측하려는 대상)

Yㅡㄹ 설명하는 X변수는 보통 여러개

여러개의 X와 Y의 관계를 찾는것!

X변수들을 조합(결합)하여 Y를 표현

조합하는 방법은 무수히 많음

수학적으로는, Y = f(X1,X2....)

 

 

옵션 - 빠른실행도구모음

Single Linear Regression,

Multiple Linear Regression,

Lasso, Ridge,

 

Polynomial Regression,

----------------------------------------------

random forest

앙상블

 

 

kmeans : 초기 k개의 중심점을 랜덤으로 잡아서 중심점과 점들 사이의 오차를 줄여나가는 방향으로

 더이상 중심점이 움직이지 않을때까지 중심점을 이동시키며 k 개로 군집을 형성한다.

bisecting kmeans : K means의 문제점을 살짝 개선시킨 것으로,

hierarchical clustering과 k means의 합성으로 보면 좋다.

처음 1개의 중심점에서 2개의 sub clustering으로 나아가는 방향으로 클러스터 갯수를 계속 늘려간다.

K를 몇으로 잡느냐에 따라 클러스터의 갯수가 정해진다.

이 클러스터는 k means의 문제점인 어떠한 클러스터에는 빈값을 가질 수 도 있기 때문에 그 점을 개선시키기 위해

계층적 군집화를 바탕으로 k means를 하는 것이다.

 

 

Scaling: Keep in mind that in order to implement a PCA transformation features need to be previously scaled. 

 

Note: The main issue with "Random Under-Sampling" is that we run the risk that our classification models will not perform as accurate as we would like to since there is a great deal of information loss (bringing 492 non-fraud transaction from 284,315 non-fraud transaction)

 

Correlation Matrices

Correlation matrices are the essence of understanding our data. We want to know if there are features that influence heavily in whether a specific transaction is a fraud. However, it is important that we use the correct dataframe (subsample) in order for us to see which features have a high positive or negative correlation with regards to fraud transactions.

 

Note: We have to make sure we use the subsample in our correlation matrix or else our correlation matrix will be affected by the high imbalance between our classes. This occurs due to the high class imbalance in the original dataframe.

 

Anomaly Detection:

Our main aim in this section is to remove "extreme outliers" from features that have a high correlation with our classes. This will have a positive impact on the accuracy of our models.

 

Interquartile Range Method:

  • Interquartile Range (IQR): We calculate this by the difference between the 75th percentile and 25th percentile. Our aim is to create a threshold beyond the 75th and 25th percentile that in case some instance pass this threshold the instance will be deleted.
  • Boxplots: Besides easily seeing the 25th and 75th percentiles (both end of the squares) it is also easy to see extreme outliers (points beyond the lower and higher extreme).

Outlier Removal Tradeoff:

We have to be careful as to how far do we want the threshold for removing outliers. We determine the threshold by multiplying a number (ex: 1.5) by the (Interquartile Range). The higher this threshold is, the less outliers will detect (multiplying by a higher number ex: 3), and the lower this threshold is the more outliers it will detect.

 

The Tradeoff: The lower the threshold the more outliers it will remove however, we want to focus more on "extreme outliers" rather than just outliers. Why? because we might run the risk of information loss which will cause our models to have a lower accuracy. You can play with this threshold and see how it affects the accuracy of our classification models.

 

-----------------------------------------------------------------------------------------------------------------------------------

 

앙상블

전체적인 어울림이나 통일, 조화 

성능이 별로 좋지 않은 모델들을 이용해서

하나의 모델만을 사용할때보다 더 좋은 결과를 보여준다

 

투표기반분류기()

직접투표(민주적인 투표)

다수결의 투표

간접투표는 확률을 이용해서 더 높은 확률이 나온 모델을 사용한다.

 

확률이 높은 모델에 더 비중을 들수 있기 때문에 더 좋다.

 

모델도 다양한 모델들을 사용할 수록 좀 더 일반화된 결과를 보여줄 수 있다.

앙상블은 그럼 갯수를 늘릴 수록 더 좋은것인가? -- 

0.5보다는 높아야된다.

 

배깅 앤드 페이스팅

샘플을 여러번 뽑아 각 모델을 학습시켜 결과를 집계

배깅은 중복 허용, 페이스팅은 중복 불가

배깅을 사용하면 오버피팅을 막을 ㅅ 있다.

 

out of bag 평가 63프로정도만 사용되고 37퍼정도는 남아있게 된다.

검증셋, 교차 검증에 사용해서 배깅 성능 측정을 위한 좋은 지표가 된다.

 

검증을 위해 데이터를 따로 빼놓는것이

교차검증 - 오버피팅을 방지하기 위해서

 

랜덤포레스트

각각의 트리들은 독립적으로 생성하게 되고, 랜덤 샘플해서 피쳐또한 모두 사용하지 않고,

피쳐도 랜덤으로 선택한다.

 

소프트 투표를 쓴다 + 배깅을 쓴다

 

중요한 매개변수 n-estimators, max-features

(default값을 사용하는 것이 좋다.) 모델이 돌아가면서 스스로 최적의 갯수를 찾아낸다.

 

부스팅 -

여러개의 모델들을 연결 시켜서 더 좋은 모델을 만드는 앙상블 학습 방법이다.

아다부스트는

데이터가 잘 학습되지 않는 곳에 가중치를 주어 모델의 성능을 향상시킨다.

 

그래디언트 부스팅

잔여 오차에 대해 새로운 모델을 학습시키는 방법이다.

 

잔여오차를 데이터로 또 만들어서 그 오차에대한 모델을 학습시켜서 

 

확인하면 좋은 매개변수 : learning rate, n_estimator(여기서 모델의 갯수는 잔여오차 모델의 갯수인가)

early stopping 잘씀

 

stacking (?)

잘모르겠다.

 

-----------------------------------------------------------------------------------------------------------------------------------

데이터베이스를 왜 설명하냐?

 

창고같은거다.

 

비지도학습

(파라미터)

 

-----------------------------------------------------------------------------------------------------------------------------------

의사결정나무 설명력이 없다? (X)

SVM 초평면

 

-----------------------------------------------------------------------------------------------------------------------------------

데이터 전처리

데이터 품질이란 신뢰성을 의미

 

잡음이 많이 포함되는 경우, 오버피팅이 발생할수 있으며 일반화가 어렵다.

이상치 일반적인 데이터인데 기존 범주를 살짝 벗어나는 것이다.

결측치

 

데이터 수집

데이터 정제 

 

결측치가 몇퍼센트가 없으면 버리는게 좋고, 너무 많으면 대체를 하는건가?

noise 제거 방법 (잘모르겠음)

 

 

안녕하세요 보나에요!

 

오늘은 리눅스에서 python2와 python3를 모두 사용하는 방법에 대해서 남겨볼까해요~!

 

우선 python2는 기본적으로 리눅스를 설치하면서 내장이 된다고 합니다! 한번 확인해볼까요?

 

터미널에서 python을 입력하고 enter! 하니깐 짜잔~ python2.7.5버전이 불러와 지네요~~~~!!

 

근데 저와 같은 초보는 python2보다는 python3에 익숙...해요... ㅎㅎㅎ

그래서 python3를 깔아보도록 하겠습니다!

 

인터넷에 연결이 되어있다면 yum 명령어를 사용하는게 가장 간편다하고 하네요 !!

yum install -y https://centos7.iuscommunity.org/ius-release.rpm 
yum update

다음과 같이 입력해주세요!

 

다음!

 

yum install -y python36u python36u-libs python36u-devel python36u-pip

python3.6.x 버전의 라이브러리, 디벨롭, pip등등... 이것들을 깔아주어야 나중에 pip 하기 편하겠죠??

 

이제

 

ls -al /usr/bin/python

이 명령어를 치시면 /usr/bin 밑에 있는 python으로 시작하는 많은 파일들이 보일꺼에요~~

그렇다면! 우리는 이제 alternative라는 명령어를 활용해볼꺼에요~~

 

이 명령어로 이제 python2,3를 자유자재로 바꿀 수 있어요!!

update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

alternatives를 업데이트 할건데, python2.7 은 1번으로 등록할꺼고, python 3.6은 2번으로 등록할꺼야~ 라는 뜻이에요!

 

update-alternatives --config python

다음 명령어를 입력하시면!

짜잔! 이제 1 또는 2를 입력하시고 엔터를 치시면 해당되는 번호의 python버전으로 기본 설정이 됩니다~~

 

한번 해볼까요?

 

보이는 사진과 같이, 1번을 입력하고 python을 입력하니까 python2.7.5가 실행되었고,

다시 update-alternatives --config python, 2 입력, python 엔터! python 3.6.8이 실행되었습니다!!!

 

이제 입맛에 맞게 골라서 사용할 수있는 환경을 만들었습니다!!!!!

'OS > Linux' 카테고리의 다른 글

transfer files from window to linux  (0) 2020.08.13
centos7에 python 가상환경 설치하기  (0) 2020.05.03
linux(centos7) 명령어 모음  (0) 2020.04.30
2020_0123  (0) 2020.01.23

리눅스

 

centOS7 로그인시 root 관리자 계정으로 로그인한다. 비밀번호는 초기에 설정해 준 것으로 들어가면 된다.

 

 

주의할점 : rm -rf / 명령어를 치면 다 지워지므로 주의....

 

프로세스 관리 : 프로세스의 생성, 제거, 프로세스 간의 메시지 전달, 프로세스 시작과 정지 등의 작업을 담당.

자원 관리 : 컴퓨터의 여러 자원이 효율적으로 사용되도록 조정하고 관리해 준다.

모든 프로그램은 cpu에 탑재가 되야 실행이 된다. 메모리에 잇다고 실행되는 것은 아니다.

cpu가 하나면 서로 다른프로그램들이 경쟁한다.

스케쥴링: 사용자로부터 요청받은 여러 개의 작업 중 먼저 해야 할 작업순서를 결정해 효율적으로 작업을 할 수 있도록 해준다. (nice나 renice를 활용하면 cpu에게 요청하는 우선순위를 올릴 수 있다.)

 

-19 ~ 20> 숫자가 작아질수록 우선순위가 높아진다.

보통 -10정도 되면 좀 더 빠르게 할당받을 수 있다.

resource limit (자원 제한) 자주 사용되는 용어이다 -rlimit

 

 

 

운영체제는 응답시간이 빨라야한다.(response)

안드로이드 운영체제는 기반이 리눅스이다.

리눅스 커널에 올라가 있고 centos와 비슷. 구글에서 만들어 놓은 프레임워크 윗단에 fpk라고 불리는 어플리케이션이 올라가는 것이다.

처리능력과 

 

/proc/sys

/sys

 

응답성은 삼성폰이 LG폰보다 더 낫다.

-system tuning

 

Unix

- Linux

- BSD계열 : FreeBSD

 

(로그버퍼?)

 

kernel 이란 무엇인가?/???

 

Dennis Ritchie는 C언어 개발자.

네트웍 씨름 많이 할 것이다.

 

 

셸(shell): 명령어 번역기, UNIX 커널과 사욜자 사이의 인터페이스를 제공함.

 

centOS에 있는것은 BASH

 

BASH = bourne again shell

 

 

리눅스 명령어

history

rm

ls

cd

esc shift:

q!나가기

wq!저장하고 나가기

yy는 그줄 복사

p는 붙여넣기

vi /root/.bashrc 셸 스크립트로 우리가 사용할 수 있는 명령어들의 집합이다.

source /root/.bashrc

vi /root/.vimrc

vi /etc/services

 

redhat의 페도라?

cloudera

POSIX 표준지원

 

TCP/IP는 통신이 엮여있으면 무조건 기억해야 한다.

 

Ngnix는 apache웹서버를 가볍게 만든 작은 서버이다?

cluster = 서버 시스템의 모음(노드라고도 표현)

노드들의 모음.

 

HDFS가 중요한 이유: 분산을 시킨다

linux는 xfs기반, 그 위에 HDFS가 존재하는것.

 

master / node

master / slave 용어를 다 다르게 쓰기 때문에 혼란스럽지 않도록 주의해야 한다.

 

 

 

로그가 어디에 쌓이는지 잘 확인해야한다.

 

어떤 프로그램이든 제대로 정상하다가 안될때, 비정상동작할때,

로그를 보면 다 출력이 되있다. 이걸로 원인을 파악하는 것이 중요하다.

 

/root 와 /를 헷갈리면 안된다

 

/root 는 root의 home 디렉토리?

/는 최상위 root 디렉토리?

 

/dev

/proc

/sys

/var

여기서는 어떠한 작업도 하지 말어라

cd 엔터해버리면 로그인한 계정의 홈으로 이동한다.

작업은 여기서 한다. 따른 디렉토리 가서 작업 잘못하다가는 큰일난다.

 

winlogbeat - logstash - elastic - kibana

filebeat        -

+ Recent posts