목록분류 전체보기 (184)
영국 척척석사 유학생 일기장👩🏻🎓
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/CG4sZ/btst89O7IH5/lJsc5XGDzvcandYE4XGD20/img.png)
1. Position 속성 글의 흐름에서 벗어나서 요소들을 자유롭게 배치할 때 쓰는 속성입니다. position에 따라서 위치를 정하는 기준이 달라집니다. 기본 값은 static이고 static인 경우 원래 있어야 할 위치에 배치됩니다. 2. 위치 정하기 위치를 정하는 기준에 대해서 top, right, bottom, left 속성으로 위치를 정할 수 있습니다. 값이 모두 똑같은 경우 inset 속성을 씁니다. 3. relative 포지션 요소의 원래 위치를 기준으로 배치합니다. 이때 요소의 원래 자리는 그대로 차지하고 있습니다. .green { position: relative; top: 15px; left: 10px; } 4. absolute 포지션 가장 가까운 포지셔닝이 된 조상 요소를 기준으로 배..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/JMqHF/btsudQIic1V/oUlpu4sa8CBcys2vJUZSWk/img.png)
머신 러닝 모델이 정확한 예측을 못하는 경우가 많습니다. 이런 문제를 어떻게 해결하는지 알아보겠습니다. 1. 편향 사람의 키를 이용해서 몸무게를 예측하고 싶다고 해봅시다. 선형 회귀를 사용해서 training 데이터에서 위와 같은 관계라고 해봅시다. 위의 선이 과연 몸무게와 키의 관계를 잘 표현하고 있을까요? 뒤의 데이터를 살펴보면 어느 정도까지는 키가 늘어날 때 몸무게가 같이 늘어나지만, 일정 키 부터는 몸무게가 잘 안 늘어납니다. 따라서 아래와 같은 곡선이 데이터를 더 정확하게 표현합니다. 처음에 본 직선 모델의 문제는 모델이 너무 간단해서 아무리 학습을 해도 위와 같은 곡선 관계를 나타내지 못한다는 것입니다. 모델에 한계가 있는 것입니다. 모델이 너무 간단해서 데이터의 관계를 잘 학습하지 못하는 경..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dCNjtp/btsut2f8PD3/sKbQ8KA7fx8sLiMbA6vRY0/img.png)
머신 러닝에 사용되는 데이터는 크게 두 종류가 있습니다. 수치형 (numerical) 데이터 : 나이, 몸무게, 키 범주형 (categorical) 데이터 : 혈액형, 성별 많은 머신 러닝 알고리즘은 인풋 데이트, 즉 입력 변수의 값이 수치형 데이터여야 합니다. 선형 회귀에서 손실함수를 구하고, 경사 하강법을 적용하려면 인풋 데이터가 수치형 데이터여야 합니다. 그럼 범주형 데이터가 있을 때는 어떻게 해야 하는지 알아봅시다. 범주형 데이터를 수치형 데이터로 바꿔 주면 됩니다. 가장 먼저 떠오르는 방법은 1,2,3, 과 같은 자연수를 각 카테고리에 지정해주는 것입니다. 예를 들어 A형은 1, AB형은 2, B형은 3, O형은 4 이런 방식으로 데이터를 변환하는 것입니다. 이제 혈액형은 숫자 값을 가지게 되니..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cn9OUe/btst54eTOej/mYcdGVrekz1J3yhElJRf50/img.png)
이전 글에서 feature scaling을 하는 이유 중 하나는 경사 하강법을 빨리 할 수 있도록 도와주기 때문이라고 했습니다. 어떤 방법으로 도와주는지 알아봅시다. 1. 선형 회귀, 경사하강법 선형 회귀는 위와 같은 데이터가 있을 때 데이터에 가장 잘 맞는 선 또는 가설 함수 를 찾는 것입니다. 데이터에 가장 잘 맞는다는 것은 데이터에 대한 평균 제곱 오차를 최소화한다는 뜻입니다. 평균 제곱 오차는 아래와 같이 계산합니다. 여기서 m은 데이터 개수, htheta(x^(i))는 i번째 데이터의 목표변수의 예측값, y^(i)는 i번째 데이터의 목표변수의 실제값을 나타냅니다. 그리고 손실 함수라는 것은 아래와 같이 평균 제곱 오차로 정의합니다. 손실 함수는 가설 함수를 평가하기 위한 함수입니다. 손실이 크면..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/thUPu/btst6NqnIy8/mbwgds6XHdqtXIV5hVvSh0/img.png)
머신 러닝에서 많이 쓰이는 데이터 전처리 과정을 살펴보겠습니다. '데이터 전처리'란 주어진 데이터를 그대로 사용하지 않고 조금 가공해서 머신 러닝 모델을 학습시키기 더 좋은 형식으로 만들어 주는 것입니다. 1. Feature Scaling feature scaling은 "feature, 입력 변수의 크기를 scale, 조정해준다" 라는 뜻입니다. 머신 러닝 모델에 사용할 입력 변수들의 크기를 조정해서 일정 범위 내에 덜어지도로 바꿔주는 것입니다. 위의 예시처럼 연봉이라는 입력 변수가 있고 나이라는 입력 변수가 있다고 가정해봅시다. 사람의 연봉은 보통 몇천만원 하지만 사람의 나이는 몇 살 밖에 안됩니다. 이렇게 입력 변수의 규모 단위가 너무 차이가 나면 머신 러닝에 방해가 될 수 있기 때문에 feature..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ugNYV/btstRRNvZic/FFMrjy4jZQ10QsudbFDnJ0/img.png)
로지스틱 회귀를 코드로 구현하기 쉽게 바꾸는 것을 해봅시다. 1. 입력 변수와 파라미터 표현 입력 변수와 파라미터는 선형 회귀를 표현할 때와 똑같이 할 수 있습니다. 모든 입력 변수 데이터를 설계 행렬에 나타내면 아래와 같습니다. 그리고 파라미터를 하나의 벡터로 아래와 같이 표현할 수 있습니다. 2. 모든 데이터 예측 값 가설 함수를 행렬 연산에서 어떻게 표현할 수 있는지 알아봅시다. 위에서 한 것처럼 입력 변수와 파라미터를 표현하면 모든 데이터에 대해서 이 식을 계산할 수 있습니다. 이 부분은 선형 회귀를 할 때와 동일합니다. 근데 로지스틱 회귀는 선형 회귀와 가설함수 h가 다릅니다. 위에서 계산한 모든 결과 값을 시그모이드 함수에 넣어주어야 합니다. 계산한 Xtheta의 모든 원소를 시그모이드 함수에..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dPQs5d/btstLQoOds2/kGKHkwSTWqDXPOXlrtwfNK/img.png)
이전 글에서 로지스틱 회귀의 가설 함수와 손실 함수에 대해 알아보았습니다. 이제 경사 하강법을 알아봅시다. 우리가 해야 하는 것은 손실을 최소화하는 것인데 경사 하강법은 그 손실을 최소화하는 하나의 방법입니다. 경사 하강법을 하는 방법은 가설 함수와 손실 함수는 좀 다르지만 선형 회귀와 거의 똑같습니다. 처음에는 세타 값들을 모두 0으로 지정하거나 모두 랜덤하게 지정합니다. 어디선가는 시작해야 하기 때문입니다. 그러면 현재 세타 값들에 대한 손실, 즉 현재 가설 함수에 대한 손실을 계산할 수 있습니다. 여기서부터 시작해서 세타를 조금씩 조율하면서 손실을 계속 줄여나가야 하는 것입니다. 예를 들어서 세타0,1,2 이렇게 세타 값이 3개 있다고 가정해봅시다. 앞 글에서 설명한 대로 손실 함수를 세타0에 대해..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/NetnJ/btstNCQTlDK/SrzuGb8KHosDR6s3woQPq1/img.png)
선형 회귀에서 가설함수가 있었고, 선형 회귀를 통해 하려고 하는 건 학습 데이터에 최대한 잘 맞는 가설 함수를 찾는 것 입니다. 그러려면 가설 함수를 평가하는 어떤 기준이 있어야 하는데, 그 기준이 되는 게 손실 함수입니다. 로지스틱 회귀에서도 마찬가지 입니다. 데이터에 잘 맞는 가설 함수를 찾는 거고, 손실 함수를 이용해서 가설 함수를 평가하는 것입니다. 가설 함수랑 손실 함수가 좀 다르게 생겼을 뿐입니다. 로지스틱 회귀의 가설 함수는 아래와 같다고 지난 글에서 배웠습니다. 그럼 로지스틱 회귀의 손실 함수를 알아보겠습니다. 선형 회귀의 손실 함수는 평균 제곱 오차라는 개념을 기반으로 했습니다. 데이터 하나하나의 오차를 구하고, 그 오차들을 다 제곱해서 평균을 내는 작업을 했었습니다. 로지스틱 회귀의 손..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bcM1AM/btstH23xOAg/D1rqVMnCfI28eNcs2KAYmK/img.png)
저번 글에서 로지스틱 회귀를 하기 위해서는 가설 함수에 대하여 최적의 theta값을 찾아내야 한다고 하였습니다. 가설 함수의 결곽값은 주어진 데이터 x가 특정 분류(분류1)일 확률을 리턴합니다. 그렇기 때문에 h의 결괏값이 0.5 이상이면 1로, 0.5면 0으로 분류했었습니다. 1. 속성이 하나일 때 예를 들어 공부 시간으로 시험을 통과했는지 탈락했는지 예측하고 싶다고 해봅시다. 그럼 속성이 하나니까 아래와 같은 가설 함수가 있습니다. 이렇게 x에 100시간을 넣어서 0.9가 나오면 100시간 공부한 학생이 시험을 통과할 확률은 90%인 거고, x에 40시간을 넣어서 0.4가 나오면 40시간 공부한 학생이 시험을 통과할 확률은 40%라고 해석할 수 있습니다. 그렇기 떄문에 가설 함수의 아웃풋이 0.5인 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bxnYfq/btstyx358kE/9wWKBBcApewSdzv2bOrc20/img.png)
선형 회귀를 이용해서 분류를 할 수 있긴 하지만, 선형 회귀는 예외적인 데이터에 너무 민감하게 반응한다는 단점이 있습니다. 그래서 분류를 할 때는 보통 선형 회귀 대신 '로지스틱 회귀(logistic regression)'을 사용합니다. 1. 로지스틱 회귀 로지스틱 회귀와 선형 회귀의 차이점을 알아봅시다. 데이터가 있으면 선형 회귀는 여기에 가장 잘 맞는 직선을 찾는 것입니다. 즉 일차함수를 찾는 것입니다. 로지스틱 회귀는 데이터에 가장 잘 맞는 일차함수가 아니라 데이터에 가장 잘 맞는 시그모이드 함수를 찾는 것입니다. 2. 시그모이드 함수 시그모이드 함수 식은 아래와 같습니다. 그래프로 그리면 아래와 같이 생겼습니다. 시그모이드 함수의 가장 중요한 특징은, 무조건 0과 1사이의 결과를 낸다는 것입니다...