1.1 벡터와 공간
1.2 행렬과 사상
1.3 행렬식과 확대율
0.1 절에서 설명했듯이 무엇가를 하려고 할 때 많은 수치를 묶은 데이터를 다루고 싶은 경우가 생길 것입니다. 그러한 데이터를 단순히 '수치의조합'으로 다루는 것이 아니라, '공간 안의 점'으로간주하여 직관을 활용하는 것이 이 책 전체의 주제입니다.
그 중심이 되는 개념인 '벡터'와 '행렬', 그리고 쓰만한 보조역인 '행렬식'을 이 장에서 설명합니다. 선형대수를 아무리 생각 없이 공부하면 무의식 중에 문자 배열에만 누이 가기 쉽습니다. 그래서는 직관을 활용할 수 없습니다. '공각'이라는 생걱을 잊지 마세요.
문자 배열(표면상) 의미
벡터 숫자를 일렬로 늘어 놓은 것 화살표, 또는 공간 안의 점
행렬 숫자를 직사각형으로 늘어 놓은것 공간에서 공간으로의 직교 사상
행렬식 뭔가 귀찮은 계산 위의 사상에 따른 부피 확대율
이 장은 기술적인 측면에서 사칙연사을 정복하는 것이 목표입니다. 구체적으로 말하면 수치가 주어진 벡터.행렬뿐만 아니라 문자식에 대해서도 '실제의 모습'을 의식하여 계산할 수 있는 것이 중요합니다(1.2.16절 크기에 구애되라). 신호 처리나 데이터 분석 등 '선형대수를 도구로 사용하는 응용 분야'에서는 문자식을 제대로 다루지 않으면 따라갈 수 없기 때문입니다.
2018년 2월 3일 토요일
0장 왜 선형대수를 배워야 하는가?
0.1 공.간이라고 생각하면 직관이 먹힌다.
우리는 3차원 공간에 살고 있습니다. 3차원 세계의 일을 다루기 위해서는 '공간'을 잘 기술할 수 있는 용어가 필요합니다. 컴퓨터 그래픽스, 자동차 네비게이션, 게임 등이 대표적인 예일 것입니다. 선형대수의 무대가 되는 벡터 공간은 현실 공간의 성질을 특정 수준에서 추상화한 것입니다. 따라서 선형대수는 공간을 설명하는데 편리한 용어나 개념을 제공해 줍니다. 예를 들어 "2차원 평면에 3차원 물체를 어떻게 그릴 것인가"를 궁리한다면 "3차원 공간 중 이곳에 이런 물체가 있을 때 시점을 이런 식으로 이동.회전시키면 누에는 어떤 2차원 화상이 나타날까" 라는 문제가 발생합니다. 이러한 문제에서도 선형대수 용어는 기초적인 역할 을 담당합니다.
그러나 오직 현실 공간의 문제를 해결하기 위해 선형대수를 배우는 것은 아닙니다.
무슨 일을 해도 단일 수치가 아닌, 다수의 수치를 조합한 데이터를 다루고 싶은 경우가 나타날것입니다. 이 경우는 '공간'과 직접적인 관계가 없으므로일부러 공간을 의식하지 않고 다룰수 있습니다. 그렇지만 이 데이터를 '고차원 공간 내의 점'이라고 해석하면 '공간'에 대한 우리의 직관을 활용하는 것도 가능합니다.
우리는 3차원 공간만 인식할 수 있지만, 3차원 공간으로부터 유추하여 직관적으로 이해할 수 있는 '일반의 n차원에서 성립하는 현상'도 많습니다. 실제로 이러한 해석은 데이터 분석의수단으로 효과가 있습니다. 그리고 '공간'의 문제가 되면 선형대수가 나설 차례입니다. 주성분 분석이나 최소제곱법 등이 고전적이고 대표적인 예입니다. 이 책에서느닝러한 방향으로 응용도 염두에 두고 설명할 것입니다.
0.2 근사 수단으로 사용하기 편리하다
선형대수가 다루는 대상은 선형적, 즉 직선이나 평면처럼 '곧은 것'입니다. 곧은 대상이므로 다루기 쉽고, 예측하기 좋으며, 명쾌한 결과를 얻을수 있습니다.
"쉬운 문제만 다룬다는 것이낙? 쉬운 문제를 잘 풀 수 있다고 해도 전혀 훌륭하지 않아" 라고 생각해도 당연합니다. '곧은 것'만 다뤄서는 대단히 궁색하죠. 곡면을 그리고 싶을 수도 있고요. 그래프를 그리면 곡선이 되는 현상 또한 있을 것입니다.
그래서 선형대수는 유효합니다. 왜냐하면 대상의 대부분의 줌업(zoom up,확대)하면 거의다 곧기 때문입니다. 질이 나쁜 들쭉날쭉한 예를 제외하면 곡선이라도, 고면이라도, 충분히 확대해보면 곧게 보입니다. 이 경우 작은 범위를 생각하는 한, '곧다'라고 근사해도 그 나름대로 도움이 되는 결과를 얻을 수 있습니다. 곡면을 그릴 때도 '작은 평면의 조립'으로 근사 표현합니다. 그래프가 곡선이어도 단기 예측이라면 직선으로 근사하여 연장합니다. 이러한 방법이 어느 정도 유효한지는 무엇을 하고 싶은지에 따라 다릅니다. '우와, 조잡하다'라고 생각할지도 모르지만, 이와 비슷한 접근법은 의외로 많이 사용하고 있습니다. 진지하게 식을 세우기 어렵고 힘들 때, '우선 곧은 것으로 근사해보자'라는 방법은 공학에서는 상투적인 방법입니다. '이정도로 만족'인지 '다른 좋은 방법이 없다'인지는 한마디로 말하기 힘듭니다.
이 책을 읽으면서 '문제 선정이 너무 한정적이다. 이런 방법이 사용되는 경우는 거읭 ㅓㅂㅅ겠지'라고 느낀다면 이 이야기를 떠올려 주십시오.
우리는 3차원 공간에 살고 있습니다. 3차원 세계의 일을 다루기 위해서는 '공간'을 잘 기술할 수 있는 용어가 필요합니다. 컴퓨터 그래픽스, 자동차 네비게이션, 게임 등이 대표적인 예일 것입니다. 선형대수의 무대가 되는 벡터 공간은 현실 공간의 성질을 특정 수준에서 추상화한 것입니다. 따라서 선형대수는 공간을 설명하는데 편리한 용어나 개념을 제공해 줍니다. 예를 들어 "2차원 평면에 3차원 물체를 어떻게 그릴 것인가"를 궁리한다면 "3차원 공간 중 이곳에 이런 물체가 있을 때 시점을 이런 식으로 이동.회전시키면 누에는 어떤 2차원 화상이 나타날까" 라는 문제가 발생합니다. 이러한 문제에서도 선형대수 용어는 기초적인 역할 을 담당합니다.
그러나 오직 현실 공간의 문제를 해결하기 위해 선형대수를 배우는 것은 아닙니다.
무슨 일을 해도 단일 수치가 아닌, 다수의 수치를 조합한 데이터를 다루고 싶은 경우가 나타날것입니다. 이 경우는 '공간'과 직접적인 관계가 없으므로일부러 공간을 의식하지 않고 다룰수 있습니다. 그렇지만 이 데이터를 '고차원 공간 내의 점'이라고 해석하면 '공간'에 대한 우리의 직관을 활용하는 것도 가능합니다.
우리는 3차원 공간만 인식할 수 있지만, 3차원 공간으로부터 유추하여 직관적으로 이해할 수 있는 '일반의 n차원에서 성립하는 현상'도 많습니다. 실제로 이러한 해석은 데이터 분석의수단으로 효과가 있습니다. 그리고 '공간'의 문제가 되면 선형대수가 나설 차례입니다. 주성분 분석이나 최소제곱법 등이 고전적이고 대표적인 예입니다. 이 책에서느닝러한 방향으로 응용도 염두에 두고 설명할 것입니다.
0.2 근사 수단으로 사용하기 편리하다
선형대수가 다루는 대상은 선형적, 즉 직선이나 평면처럼 '곧은 것'입니다. 곧은 대상이므로 다루기 쉽고, 예측하기 좋으며, 명쾌한 결과를 얻을수 있습니다.
"쉬운 문제만 다룬다는 것이낙? 쉬운 문제를 잘 풀 수 있다고 해도 전혀 훌륭하지 않아" 라고 생각해도 당연합니다. '곧은 것'만 다뤄서는 대단히 궁색하죠. 곡면을 그리고 싶을 수도 있고요. 그래프를 그리면 곡선이 되는 현상 또한 있을 것입니다.
그래서 선형대수는 유효합니다. 왜냐하면 대상의 대부분의 줌업(zoom up,확대)하면 거의다 곧기 때문입니다. 질이 나쁜 들쭉날쭉한 예를 제외하면 곡선이라도, 고면이라도, 충분히 확대해보면 곧게 보입니다. 이 경우 작은 범위를 생각하는 한, '곧다'라고 근사해도 그 나름대로 도움이 되는 결과를 얻을 수 있습니다. 곡면을 그릴 때도 '작은 평면의 조립'으로 근사 표현합니다. 그래프가 곡선이어도 단기 예측이라면 직선으로 근사하여 연장합니다. 이러한 방법이 어느 정도 유효한지는 무엇을 하고 싶은지에 따라 다릅니다. '우와, 조잡하다'라고 생각할지도 모르지만, 이와 비슷한 접근법은 의외로 많이 사용하고 있습니다. 진지하게 식을 세우기 어렵고 힘들 때, '우선 곧은 것으로 근사해보자'라는 방법은 공학에서는 상투적인 방법입니다. '이정도로 만족'인지 '다른 좋은 방법이 없다'인지는 한마디로 말하기 힘듭니다.
이 책을 읽으면서 '문제 선정이 너무 한정적이다. 이런 방법이 사용되는 경우는 거읭 ㅓㅂㅅ겠지'라고 느낀다면 이 이야기를 떠올려 주십시오.
2018년 2월 1일 목요일
1.1 학습의 종류
1.1 학습의 종류
일반화 능력을 갖도록 하는 것
1.1.2 비지도학습
1.1.3 가화 학습
일반화 능력을 갖도록 하는 것
1.2 머신러닝 과업들
1.2.1 희귀(regression)
실숫값 함수를 표본점으로부터 근사하는 지도 학습 방식의 함수 근사 문제다.
1.2.2 분류
주어진 패턴을 식별하는 지도 학습 방식의 패턴 인식 문제다
1.2.3 이상 검출
1.2.4 클러스터링
1.2.5 자원축소
1.3 머신러닝의 접근법
머신러닝에는 다양한 계파가 있다. 이 절에서는 패턴 x의 유형 y를 예측하는 분류 문제를 예로 들어, 머신러닝의 주된 계파인 생성적 분류와 식별적 분류, 그리고 빈도주의 및 베이지안 접근법에서 기초가 되는 아이디어도 소개한다.
1.3.1 생성적 분류와 식별적 분류
패턴 x가 주어졌을 때 유형 y의 조건부 확률 p(y|x)가 최대가 되도록 하는 유형 y를 구할 수 있으면, 패턴 인식을 수행할 수 있다.
1.3 머신러닝의 접근법
머신러닝에는 다양한 계파가 있다. 이 절에서는 패턴 x의 유형 y를 예측하는 분류 문제를 예로 들어, 머신러닝의 주된 계파인 생성적 분류와 식별적 분류, 그리고 빈도주의 및 베이지안 접근법에서 기초가 되는 아이디어도 소개한다.
1.3.1 생성적 분류와 식별적 분류
패턴 x가 주어졌을 때 유형 y의 조건부 확률 p(y|x)가 최대가 되도록 하는 유형 y를 구할 수 있으면, 패턴 인식을 수행할 수 있다.
2018년 1월 24일 수요일
2. 지도 학습
2.1 분류와 희귀
지도 학습에는 분류(classification)와 희귀(regression)가 있습니다.
분류는 미리 정의된, 가능성 있는 여러 클래스 레이블(class label)중 하나를 얘측
이진 분류(binary classification): 두 개의 클래스로 분류
한 클래스를 양성(positive)클래스, 다른 하나를 음성(negative)클래스
다중 분류(multiclass classification): 셋 이상의 클래스로 분류
희귀는 연속적인 숫자, 또는 프로그래밍 용어로 말하면 부동소수점수(수학 용어로는 실수)를 예측하는 것
ex)어떤 사람의 교육 수준, 나이, 주거지를 바탕으로 연간 소득을 예측하는 것
출력값에 연속성이 있는지 여부로 휘귀와 분류를 구분할 수 있습니다.
연속성이 있으면 희귀
연속성이 없으면 분류
2.2 일반화, 과대적합, 과소적합
지도 학습에서는 훈련 데이터로 학습한 모델이 훈련 데이터와 특성이 같다면 처음 보는 새로운 데이터가 주어져도 정확히 예측할 거라 기대합니다. 모델이 처음 보는 데이터에 대해 정확하게 예측할 수 이/ㅅ으면 이를 훈련 세트에서 테스트 세트로 일반화(generalization)되었다고 합니다. 그래서 모델을 만들 때는 가능한 정확하게 일반화되도록 해야 합니다.
보통 훈련 세트에 대해 정확히 예측하도록 모델을 구축합니다. 훈련 세트와 테스트 세트가 매우 비슷하다면 그 모델이 테스트 세트에서도 정확히 예측하리라 기대할 수 있습니다. 그러나 항상 그런 것만은 아닙니다. 예를 들어 아주 복잡한 모델을 만든다면 훈련 세트에만 정확한 모델이 되어버릴수 있습니다.
가상의 예를 만들어 설명해보겠습니다. 초보 데이터 과학자가 요트를 구매한 고객과 구매의사가 없는 고객그의 데이터를이용해 누가 요트를 살지 예측하려 합니다. 그래서 관심없는 고객들을 성가시게 하지 않고 실제 구매할 것 같은 고객에게만 홍보 메일을 보내는 것이 목표입니다.
알고리즘이 새로운 데이터도 잘 측정하는 방법은 테스트 세트로 평가해보는 것밖에 없습니다. 그러나 직관적으로 보더라도(아마 수학적으로 볼때도) 간단한 모델이 새로운 데이터에 더 잘 일반화 될것이라고 예상할 수 있습니다. 만약 "50세 이상인 사람은 보트를 사려고 한다"라는 규칙을 만들었다면 이 규칙은 모든 고객데이터를 만족시킬 뿐 아니라, 나이 외에 자녀 수나 혼인 상태를 추가한 규칙보다 더 신뢰할 수 있습니다. 그렇기 때문에 우리는 언제나 가장 간단한 모델을 찾으려고 합니다. 초보 데이터 과학자가 했던것 처럼 가진 정보를 모두 사용해서 너무 복잡한 모덱을 만드는 것을 과대적합(overfitting)이라고 합니다. 과대 적합은 모델이 훈련 세트의 각 샘플에 너무 가깝게 맞춰져서 새로운 데이터에 일반화되기 어려울 때 일어납니다. 반대로 모델이 너무 간단하면, 즉"집이 있는 사람은 모두 요트를 사려고 한다"와 같은 경우에는 데이터의 면면과 다양성을 잡아내지 못할 것이고 훈련 세트에도 잘 맞지 않을 것입니다. 너무 가단한 모델이 선택되는 것을 과소적합(underfitting)이라고 합니다.
모델을 복잡하게 할 수록 훈련 데이터에 대해서는 더 정확히 예측할 수 있습니다. 그러나 너무 복잡해지면 훈련 세트의 가가 데이터 포인트에 너무 민감해져 새로운 데이터에 잘 일반화되지 못합니다.
2.2.1 모델 복잡도와 데이터셋 크기의관계
모델의 복잡도는 훈련 데이터셋에 담긴 입력 데이터의다양성과관련이깊습니다. 데이터셋에 다양한 데이터 포인트가 많을수록 과대적합 없이 더 복잡한 모델을 만들 수 있습니다. 보통 데이터 포인트를 더 많이 모으는 것이 다양성을 키워주므로 큰 데이터셋은 더 복잡한 모델을 만들 수 있게 해줍니다. 그러나 같은 데이터 포인트를 중복하거나 매우 비슷한 데이터를 모으는 것은 도움이 되지 않습니다.
2.3 지도 학습 알고리즘
2.3.1 예제에 사용할 데이터 셋
2.3.2 k-최근접 이웃
k-NN(k-Nearest Neighbors)알고리즘은 가장 간단한 머신러닝 알고리즘, 훈련 데이터셋에서 가장 가까운 데이터 포인트, 즉 '최근접 이웃'을 찾습니다.
2.3.3 선형 모델
희귀의 선형 모델
희귀를 위한 선형 모델은 특성이 하나일 땐 직선, 두 개일 땐 평면이 되며, 더 높은 차원(특성이 더 많음)에서는 초평면(hyperplane)이 되는 희귀 모델의 특징을 가지고 있습니다.
선형 희귀(최소제곱법)
선형 희귀(linear regression) 또는 최소제곱법(OLS, ordinary least squares)은 가장 간단하고 오래된 희귀용 선형 알고리즘입니다. 선형 희귀는 예측과 훈련 세트에 있는 타깃 y 사이의 평균제곱오차(mean squared error)를 최소하하는 파라미터 w와 b를 찾습니다. 평균제곱오차는 예측값과 타깃값의 차이를 제곱하여 더한 후에 샘플의 개수로 나눈 것입니다. 선형 희귀는 매개변수가 없는 것이 장점이지만, 그래서 모델의 복잡도를 제어할 방법도 없습니다.
지도 학습에는 분류(classification)와 희귀(regression)가 있습니다.
분류는 미리 정의된, 가능성 있는 여러 클래스 레이블(class label)중 하나를 얘측
이진 분류(binary classification): 두 개의 클래스로 분류
한 클래스를 양성(positive)클래스, 다른 하나를 음성(negative)클래스
다중 분류(multiclass classification): 셋 이상의 클래스로 분류
희귀는 연속적인 숫자, 또는 프로그래밍 용어로 말하면 부동소수점수(수학 용어로는 실수)를 예측하는 것
ex)어떤 사람의 교육 수준, 나이, 주거지를 바탕으로 연간 소득을 예측하는 것
출력값에 연속성이 있는지 여부로 휘귀와 분류를 구분할 수 있습니다.
연속성이 있으면 희귀
연속성이 없으면 분류
2.2 일반화, 과대적합, 과소적합
지도 학습에서는 훈련 데이터로 학습한 모델이 훈련 데이터와 특성이 같다면 처음 보는 새로운 데이터가 주어져도 정확히 예측할 거라 기대합니다. 모델이 처음 보는 데이터에 대해 정확하게 예측할 수 이/ㅅ으면 이를 훈련 세트에서 테스트 세트로 일반화(generalization)되었다고 합니다. 그래서 모델을 만들 때는 가능한 정확하게 일반화되도록 해야 합니다.
보통 훈련 세트에 대해 정확히 예측하도록 모델을 구축합니다. 훈련 세트와 테스트 세트가 매우 비슷하다면 그 모델이 테스트 세트에서도 정확히 예측하리라 기대할 수 있습니다. 그러나 항상 그런 것만은 아닙니다. 예를 들어 아주 복잡한 모델을 만든다면 훈련 세트에만 정확한 모델이 되어버릴수 있습니다.
가상의 예를 만들어 설명해보겠습니다. 초보 데이터 과학자가 요트를 구매한 고객과 구매의사가 없는 고객그의 데이터를이용해 누가 요트를 살지 예측하려 합니다. 그래서 관심없는 고객들을 성가시게 하지 않고 실제 구매할 것 같은 고객에게만 홍보 메일을 보내는 것이 목표입니다.
알고리즘이 새로운 데이터도 잘 측정하는 방법은 테스트 세트로 평가해보는 것밖에 없습니다. 그러나 직관적으로 보더라도(아마 수학적으로 볼때도) 간단한 모델이 새로운 데이터에 더 잘 일반화 될것이라고 예상할 수 있습니다. 만약 "50세 이상인 사람은 보트를 사려고 한다"라는 규칙을 만들었다면 이 규칙은 모든 고객데이터를 만족시킬 뿐 아니라, 나이 외에 자녀 수나 혼인 상태를 추가한 규칙보다 더 신뢰할 수 있습니다. 그렇기 때문에 우리는 언제나 가장 간단한 모델을 찾으려고 합니다. 초보 데이터 과학자가 했던것 처럼 가진 정보를 모두 사용해서 너무 복잡한 모덱을 만드는 것을 과대적합(overfitting)이라고 합니다. 과대 적합은 모델이 훈련 세트의 각 샘플에 너무 가깝게 맞춰져서 새로운 데이터에 일반화되기 어려울 때 일어납니다. 반대로 모델이 너무 간단하면, 즉"집이 있는 사람은 모두 요트를 사려고 한다"와 같은 경우에는 데이터의 면면과 다양성을 잡아내지 못할 것이고 훈련 세트에도 잘 맞지 않을 것입니다. 너무 가단한 모델이 선택되는 것을 과소적합(underfitting)이라고 합니다.
모델을 복잡하게 할 수록 훈련 데이터에 대해서는 더 정확히 예측할 수 있습니다. 그러나 너무 복잡해지면 훈련 세트의 가가 데이터 포인트에 너무 민감해져 새로운 데이터에 잘 일반화되지 못합니다.
2.2.1 모델 복잡도와 데이터셋 크기의관계
모델의 복잡도는 훈련 데이터셋에 담긴 입력 데이터의다양성과관련이깊습니다. 데이터셋에 다양한 데이터 포인트가 많을수록 과대적합 없이 더 복잡한 모델을 만들 수 있습니다. 보통 데이터 포인트를 더 많이 모으는 것이 다양성을 키워주므로 큰 데이터셋은 더 복잡한 모델을 만들 수 있게 해줍니다. 그러나 같은 데이터 포인트를 중복하거나 매우 비슷한 데이터를 모으는 것은 도움이 되지 않습니다.
2.3 지도 학습 알고리즘
2.3.1 예제에 사용할 데이터 셋
2.3.2 k-최근접 이웃
k-NN(k-Nearest Neighbors)알고리즘은 가장 간단한 머신러닝 알고리즘, 훈련 데이터셋에서 가장 가까운 데이터 포인트, 즉 '최근접 이웃'을 찾습니다.
2.3.3 선형 모델
희귀의 선형 모델
희귀를 위한 선형 모델은 특성이 하나일 땐 직선, 두 개일 땐 평면이 되며, 더 높은 차원(특성이 더 많음)에서는 초평면(hyperplane)이 되는 희귀 모델의 특징을 가지고 있습니다.
선형 희귀(최소제곱법)
선형 희귀(linear regression) 또는 최소제곱법(OLS, ordinary least squares)은 가장 간단하고 오래된 희귀용 선형 알고리즘입니다. 선형 희귀는 예측과 훈련 세트에 있는 타깃 y 사이의 평균제곱오차(mean squared error)를 최소하하는 파라미터 w와 b를 찾습니다. 평균제곱오차는 예측값과 타깃값의 차이를 제곱하여 더한 후에 샘플의 개수로 나눈 것입니다. 선형 희귀는 매개변수가 없는 것이 장점이지만, 그래서 모델의 복잡도를 제어할 방법도 없습니다.
2018년 1월 22일 월요일
1.7 첫 번째 애플리케이션: 불꽃의 품종 종류
붓꽃의 품종을 정확하게 분류한 데이터를 가지고 있으므로 지도 학습
몇 가지 선택사항(붓꽃의 품종) 중 하나를 선택
분류(Classfication), 출력될 수 있는 값(붓꽃의 종류)들을 클래스(class)
붓꽃 하나 에 대한 기대 출력은 꽃의 품종, 즉 품종을 레이블(Label)
1.7.1 데이터 적재
1.7.2 성과 측정: 훈련 데이터와 테스트 데이터
이 데이터로 머신러닝 모델을 만들고 새로운 데이터의 품종을 예측 하러 합니다. 하지만 만든 모델을 새 데이터에 적용하기 전에 이 모델이 진짜 잘 작동하는지 알아야 합니다. 다시 말해서 우리가 만든 모델의 예측을 신뢰할 수 있는 지 알아야 합니다.
불행이도 모델을 만들 때 쓴 데이터는 평가 목적으로 사용할 수 없습니다. 모델이 훈련 데이터를 그냥 전부 기억할 수 있으니 훈련 데이터에 속한 어떤 데이터라도 정확히 맞출 수 있기 때문입니다. 이렇게 데이터를 기억한다는 것은 모델을 잘 일반화 하지 않았다는 뜻입니다.(다른 말로는 새로운 데이터에 대해서는 잘 작동하지 않는다는 것입니다.)
모델의 성능을 측정하려면 레이블을 알고 있는 (이전에 본 적 없는) 새 데이터를 모델에 적용해 봐야 합니다. 이를 위해 우리가 가지고 있는 레이블된 데이터(150개의 붓꽃 데이터)를 두 그룹으로 나눈ㅂ니다. 그중 하나는 머신러닝 모델을 만들 때 사용하며, 훈련 데이터 혹은 훈련 세트(traning set)라고 합니다. 나머지는 모델이 얼마나 잘 작동하는지 측정하는 데 사용하며, 이를 테스트 데이터, 테스트 세트(test set)혹은 홀드아웃 세트(hold-out-set)라고 부릅니다.
scikit-learn은 데이터셋을 섞어서 나눠주는 train_test_split함수를 제공합니다. 이 함수는 전체 행 중 75%를 레이블 데이터와 함께 훈련 세트로 뽑습니다. 나머지 25%는 레이블 데이터와 함께 테스트 세트가 됩니다. 훈련 세트와 테스트 세트를 얼만큼씩 나눌지는 상활에 따라 다르지만 전체의 25%를 테스트 세트로 사용하는 것은 일반적으로 좋은 선택입니다.
1.7.3 가장 먼저 할 일: 데이터 살펴 보기
시각화는 데이터를 조사하는 아주 좋은 방법.산점도가 그중 하나입니다. 산점도는 데이터에서 한 특성을 x축에 놓고 다른 하나는 y축에 놓아 각 데이터 포인트를 하나의 점으로 나타내는 그래프. 아쉽게도 컴퓨터 화면은 2차원이라 한 번에 2개(혹은 3개)의 특성만 그릴 수 있습니다. 따라서 이 그래프는 3개 이상의 특성을 표현하기 어렵습니다. 대신 모든 특성을 짝지어 만드는 산점도 행렬을 사용할 수 있습니다.
이 그래프를 그리려면 먼저 NumPy 배열을 pandas의 DataFrame으로 변경해야 합니다. pandas는 산점도 행렬을 그려주는 scatter_matrix함수를 제공합니다.
1.7.4 첫 번째 머신러닝 모델: k-최근접 이웃 알고리즘
k-최근접 이웃 알고리즘에서 k 는 가장 가까운 이웃 '하나'가 아니라 훈련 데이터에서 새로운 데이터 포인트에 가장 가까운 'k개'의 이웃을 찾는다는 뜻
scikit-learn의 모든 머신러닝 모델은 Estimator라는 파이썬 클래스로 각각 구현되어 있습니다. k-최근접 이웃 분류 알고리즘은 neighbors 모듈 아래 KNeighborsClassifier 클래스에 구현되어있습니다. 모델을 사용하려면 클래스로부터 객체를 만들어야 합니다. 이때 모델에 필요한 매개변수를 넣습니다.
KNeighborsClassifier에서 가장 중요한 매개변수는 이숫의 개수입니다.
fit 메소드는 knn 객체 자체를 반환합니다.(그리고 knn객체 자체를 변경시킵니다.) 그래서 knn 객체가 문자열 형태로 출력됩니다. 이 출력에서 모델을 생성할 때 사용한 매개 변수를 볼 수 있습니다. 거의 모든 매개변수가 기본값이고 n_neighbors=1은 우리가 지정한 값입니다. scikit-learn 모델들이 많은 매개 변수를 가지고 있지만 대부분 성능을 최적화하거나 특별한 목적으로 사용합니다.
1.7.5 예측하기
1.7.6 모델 평가하기
몇 가지 선택사항(붓꽃의 품종) 중 하나를 선택
분류(Classfication), 출력될 수 있는 값(붓꽃의 종류)들을 클래스(class)
붓꽃 하나 에 대한 기대 출력은 꽃의 품종, 즉 품종을 레이블(Label)
1.7.1 데이터 적재
1.7.2 성과 측정: 훈련 데이터와 테스트 데이터
이 데이터로 머신러닝 모델을 만들고 새로운 데이터의 품종을 예측 하러 합니다. 하지만 만든 모델을 새 데이터에 적용하기 전에 이 모델이 진짜 잘 작동하는지 알아야 합니다. 다시 말해서 우리가 만든 모델의 예측을 신뢰할 수 있는 지 알아야 합니다.
불행이도 모델을 만들 때 쓴 데이터는 평가 목적으로 사용할 수 없습니다. 모델이 훈련 데이터를 그냥 전부 기억할 수 있으니 훈련 데이터에 속한 어떤 데이터라도 정확히 맞출 수 있기 때문입니다. 이렇게 데이터를 기억한다는 것은 모델을 잘 일반화 하지 않았다는 뜻입니다.(다른 말로는 새로운 데이터에 대해서는 잘 작동하지 않는다는 것입니다.)
모델의 성능을 측정하려면 레이블을 알고 있는 (이전에 본 적 없는) 새 데이터를 모델에 적용해 봐야 합니다. 이를 위해 우리가 가지고 있는 레이블된 데이터(150개의 붓꽃 데이터)를 두 그룹으로 나눈ㅂ니다. 그중 하나는 머신러닝 모델을 만들 때 사용하며, 훈련 데이터 혹은 훈련 세트(traning set)라고 합니다. 나머지는 모델이 얼마나 잘 작동하는지 측정하는 데 사용하며, 이를 테스트 데이터, 테스트 세트(test set)혹은 홀드아웃 세트(hold-out-set)라고 부릅니다.
scikit-learn은 데이터셋을 섞어서 나눠주는 train_test_split함수를 제공합니다. 이 함수는 전체 행 중 75%를 레이블 데이터와 함께 훈련 세트로 뽑습니다. 나머지 25%는 레이블 데이터와 함께 테스트 세트가 됩니다. 훈련 세트와 테스트 세트를 얼만큼씩 나눌지는 상활에 따라 다르지만 전체의 25%를 테스트 세트로 사용하는 것은 일반적으로 좋은 선택입니다.
1.7.3 가장 먼저 할 일: 데이터 살펴 보기
시각화는 데이터를 조사하는 아주 좋은 방법.산점도가 그중 하나입니다. 산점도는 데이터에서 한 특성을 x축에 놓고 다른 하나는 y축에 놓아 각 데이터 포인트를 하나의 점으로 나타내는 그래프. 아쉽게도 컴퓨터 화면은 2차원이라 한 번에 2개(혹은 3개)의 특성만 그릴 수 있습니다. 따라서 이 그래프는 3개 이상의 특성을 표현하기 어렵습니다. 대신 모든 특성을 짝지어 만드는 산점도 행렬을 사용할 수 있습니다.
이 그래프를 그리려면 먼저 NumPy 배열을 pandas의 DataFrame으로 변경해야 합니다. pandas는 산점도 행렬을 그려주는 scatter_matrix함수를 제공합니다.
1.7.4 첫 번째 머신러닝 모델: k-최근접 이웃 알고리즘
k-최근접 이웃 알고리즘에서 k 는 가장 가까운 이웃 '하나'가 아니라 훈련 데이터에서 새로운 데이터 포인트에 가장 가까운 'k개'의 이웃을 찾는다는 뜻
scikit-learn의 모든 머신러닝 모델은 Estimator라는 파이썬 클래스로 각각 구현되어 있습니다. k-최근접 이웃 분류 알고리즘은 neighbors 모듈 아래 KNeighborsClassifier 클래스에 구현되어있습니다. 모델을 사용하려면 클래스로부터 객체를 만들어야 합니다. 이때 모델에 필요한 매개변수를 넣습니다.
KNeighborsClassifier에서 가장 중요한 매개변수는 이숫의 개수입니다.
fit 메소드는 knn 객체 자체를 반환합니다.(그리고 knn객체 자체를 변경시킵니다.) 그래서 knn 객체가 문자열 형태로 출력됩니다. 이 출력에서 모델을 생성할 때 사용한 매개 변수를 볼 수 있습니다. 거의 모든 매개변수가 기본값이고 n_neighbors=1은 우리가 지정한 값입니다. scikit-learn 모델들이 많은 매개 변수를 가지고 있지만 대부분 성능을 최적화하거나 특별한 목적으로 사용합니다.
1.7.5 예측하기
1.7.6 모델 평가하기
2018년 1월 20일 토요일
1. 데이터 시각화 개념 잡기
데이터(Data)와 정보(Information), 지식(Knowledge)의 차이의 이해 와 데이터 시각화 연관성
- 데이터와 정보, 통찰의 차이
- 정보로 부터 지식으로서의 변환, 더 나아가 통찰까지
- 데이터의 수집, 처리, 조직화
- 데이터 시각화의 역사
- 시각화된 데이터가 어떻게 의사 결정에 도움이 되는가?
- 시각화의 구성
1) 데이터, 정보, 지식, 통찰
- 데이터
데이터는 디지털 형태를 가진, 별개으 ㅣ객관적 사실들, 여러 다른 방법으로 조직되고 배열될 수 있는 기본구성 요소로써, 비즈니스 과정에서 만나는 여러 문제 해결의 실마리가 될 수 있는 유용한 정보를 제공해 준다.
데이터는 매우 단순할 수도 크지 않을 수도 있고, 조직화되지 않을 수도 있다. 이런 개별적 데이터들은 그 자체로 의미를 가지지 못할 뿐만 아니라 더 중요한 데이터 간의 구조나 관계가 명시되지 않았기 때문에 의사 결정에 그대로 사용될 수 없다.
- 정보
정보는 비즈니스 문제를 해결하기 위한 목적으로 가공, 처리된 데이터이다. 데이터 간에 관계나 연관성을 부여함으로써 정보가될 수 있는데, 이런 연관성은 데이터에 문맥이나 배경을 부여함으로써 얻어질 수 있다. 데이터의 배경 정보는 데이터에 대한 질문에 답할 수 있게 하기 때문에 유용하다.
- 지식
지식은 인간이 정보를 이해하고조직화할 때 드러나게 되고, 의사 결정을 이끄는 데 사용된다. 지식은 데이터, 정보일 뿐만 아니라 경험을 통해 축적된 기술들도 포함하며 적절한 의사 결정을 내리는 능력, 그것을 실행하는 능력으로 이뤄진다.
지식의 필수적 구성요소인 '데이터의 연결'을 통해 각 정보 조각들 간의 상대적 중요성을 이해할 수 있게 된다. 과거의 결과와 비교함으로써, 패턴을 발견해 냄으로써 더 이상 문제를 처음부터 풀어낼 필요가 없게 된다.
지식은 점점 증가하는 방향으로 변하게 된다. 특히 정보가 재배열되거나 다시 조직화될 때, 혹은 연산 알고리즘이 변경되었을 때 변한다. 지식은 데이터로부터 추출된 과거 정보에의해 계산되는 알고리즘의 결과를 가림키는 화살곽 ㅏㅌ다. 지식 역시 그 결과들과 시각적으로 상화작용하며 얻어진다는 많은 예가 있다. 이렇게 지식은 과거에 기반한 반면에 통찰은 미래로 가는 길을 열어준다.
- 데이터 분석과 통찰
분석은 통찰을 이끌어 낼 수 있는 데이터들 간의관계를 결정짓는 수학적 알고리즘에 달려 있다. 통찰을 이해하기 위한 한 가지 간단한 방법은 유추를 고려하는 것이아. 데이터에 구조가 없거나 비즈니스와 잘 정렬되지 않았을 경우에, 유추는 데이터를 좀 더 구조적 형태로 바꿔주고 더욱 비즈니스 목ㄹ표와 가깝게 정렬되게 함으로써, 더 명확하고 깊이 이해할 수 있게 해준다. 통찰은 혁신적 결과를 가져주는 '유레카'의 순간이다. 한 가지 주의할 것은 분석과 비즈니스 인텔리전스를 혼동해선 안 된다. 분석은 예측 능력을 포함하는 데 반해 비즈니스 인텔리전스는 과거 데이터에 기반한 결과를 제공한다.
분석은 대개 데이터의 넓은 범위에 적용되며, 이런 이류로 내부적으로 혹은 외부적으로 데이터 협업이 매우 빈번하게 일어난다. 어떤 비즈니스 패러다임에서는 대규모의 데이터 셋 모음에서의 협업은 오로지 내부적으로 일어나다고 하지만 대부분의 경우 퍼즐을 갖추거나 각각의 점들을 연결하는 데에 있어 외부적 연결이 도움을 준다.ㅣ 가장 많이 사용되는 외부 데이터 소스 두 가지는 소셜 미ㅣㄷ어와 소비자 기반 데이터이다.
- 데이터의 변환
데이터는 다양한 카테고리가 있는데, 그 중에 과거 성능 데이터, 실험 데이터, 벤치마크 데이터가 있다. 과거 성능 데이터와 실험 데이터는 꽤 명백한 데이터인데 반해, 벤치마크 데이터는 두 개의 다른 항목이나 제품을 기준에 따라 측정, 비교해 얻은 데이터이다. 데이터가 정보로 변환돼 더 처리를 거치게 되면, 문제 해결에 사용된다.
- 데이터, 정보로의 변환
데이터에서 정보로의 변환은 수집, 처리, 조직화 과정을 포함하게 된다.
수집된 데이터는 어떤 처리와 조직화 과정을 필요로 하며, 그 결과 구조, 모델 혹은 패턴을 가지게 될 수도 있고, 그러지 않을 수도 있다. 그러나 최소한 이 과정을 통해 데이터에 관한 질문에 대한 답을 체계적으로 찾을 수 있다.
- 데이터 수집
데이터 수집은 시간이 걸리는 과정이다. 그래서 회사들은 데이터 수집을 자동화하기를 원한다. 그러나 사람이 직접 데이터를 수집하는 일이 아직까지는 일반적이다. 현대의 자동화 과정을 통한 데이터 수집은 센서와 같은 입력 장치들을 사용한다. 데이터 자동으로수집하는 또 다른 방법은 문서나 로그 파일을 스캔함으로써 가능하다. 웹 기반 방법을 통해 데이터베이스에 저장된 데이터를 수집하게 수종으로 처리하는 방식도 정보로 변환될 수 있다. 데이터베이스로 저장되는 웹 기반 방식을 통해 데이터가 수집되도록 처리하는 방식은 비로소 데이터가 정보로 변화하게 한다. 최근 웹 기반의 협업환경은 향상된 통신과 데이터 공유를 통해 혜택을 얻고 있다.
- 데이터 전처리
데이터 클리닝(data cleaning), 데이터 통합(data integration), 데이터 정리(data reduction), 데이터 변환(data transformation)과 같은 몇 가지 데이터 처리 기법이 있다.
데이터 클리닝은 데이터가 일관성을 가지도록 하고노이즈를 제거하기 위해 적용
데이터 통합은 다양한 출처로부터 얻어진 데이터들이 데이터 웨어하우스(data warehouse)와 같은 잘 알려진 일관적 서식을 갖도록 병합하고 결합나다. 데이터 정리는 병합, 종합 그리고 불필요한 특성들을 제거함으로써 데이터 크기를 줄일 수 있다. 데이터 변환은 적은 범위 안으로 데이터를 축소하기 위해 상둉될 수 있고, 이를 통해 데이터의 처리와 시각화에 있어 정확성과 효율성을 향상시킬 수 있다.
이상 검출(anomaly detection)은 수집된 데이터 중 예상되는 형태나 규칙 안에 속하지 않는 이상한 데이터들을 식별하는 것이다.
변칙은 아웃라이어(outliers)나 노이즈(noise)로 알려져 있다. 옐르 들어 신호 데이터에서 이상한 특정한 신호는 노이즈로 여겨지면, 거래 데이터에서는 사기성 거래가 아웃라이어가 된다. 정확한 데이터 수집은 데이터의 무결성(integrity)을 유지하기 위해 필수적이다. 변칙 데이터들의 부작용만큼, 이면적으로아웃라이어들은 매우 중요한데, 예를 덜어 특히 사기성 보험 청구의 경우에 매우 유용하다.
- 데이터와 정보, 통찰의 차이
- 정보로 부터 지식으로서의 변환, 더 나아가 통찰까지
- 데이터의 수집, 처리, 조직화
- 데이터 시각화의 역사
- 시각화된 데이터가 어떻게 의사 결정에 도움이 되는가?
- 시각화의 구성
1) 데이터, 정보, 지식, 통찰
- 데이터
데이터는 디지털 형태를 가진, 별개으 ㅣ객관적 사실들, 여러 다른 방법으로 조직되고 배열될 수 있는 기본구성 요소로써, 비즈니스 과정에서 만나는 여러 문제 해결의 실마리가 될 수 있는 유용한 정보를 제공해 준다.
데이터는 매우 단순할 수도 크지 않을 수도 있고, 조직화되지 않을 수도 있다. 이런 개별적 데이터들은 그 자체로 의미를 가지지 못할 뿐만 아니라 더 중요한 데이터 간의 구조나 관계가 명시되지 않았기 때문에 의사 결정에 그대로 사용될 수 없다.
- 정보
정보는 비즈니스 문제를 해결하기 위한 목적으로 가공, 처리된 데이터이다. 데이터 간에 관계나 연관성을 부여함으로써 정보가될 수 있는데, 이런 연관성은 데이터에 문맥이나 배경을 부여함으로써 얻어질 수 있다. 데이터의 배경 정보는 데이터에 대한 질문에 답할 수 있게 하기 때문에 유용하다.
- 지식
지식은 인간이 정보를 이해하고조직화할 때 드러나게 되고, 의사 결정을 이끄는 데 사용된다. 지식은 데이터, 정보일 뿐만 아니라 경험을 통해 축적된 기술들도 포함하며 적절한 의사 결정을 내리는 능력, 그것을 실행하는 능력으로 이뤄진다.
지식의 필수적 구성요소인 '데이터의 연결'을 통해 각 정보 조각들 간의 상대적 중요성을 이해할 수 있게 된다. 과거의 결과와 비교함으로써, 패턴을 발견해 냄으로써 더 이상 문제를 처음부터 풀어낼 필요가 없게 된다.
지식은 점점 증가하는 방향으로 변하게 된다. 특히 정보가 재배열되거나 다시 조직화될 때, 혹은 연산 알고리즘이 변경되었을 때 변한다. 지식은 데이터로부터 추출된 과거 정보에의해 계산되는 알고리즘의 결과를 가림키는 화살곽 ㅏㅌ다. 지식 역시 그 결과들과 시각적으로 상화작용하며 얻어진다는 많은 예가 있다. 이렇게 지식은 과거에 기반한 반면에 통찰은 미래로 가는 길을 열어준다.
- 데이터 분석과 통찰
분석은 통찰을 이끌어 낼 수 있는 데이터들 간의관계를 결정짓는 수학적 알고리즘에 달려 있다. 통찰을 이해하기 위한 한 가지 간단한 방법은 유추를 고려하는 것이아. 데이터에 구조가 없거나 비즈니스와 잘 정렬되지 않았을 경우에, 유추는 데이터를 좀 더 구조적 형태로 바꿔주고 더욱 비즈니스 목ㄹ표와 가깝게 정렬되게 함으로써, 더 명확하고 깊이 이해할 수 있게 해준다. 통찰은 혁신적 결과를 가져주는 '유레카'의 순간이다. 한 가지 주의할 것은 분석과 비즈니스 인텔리전스를 혼동해선 안 된다. 분석은 예측 능력을 포함하는 데 반해 비즈니스 인텔리전스는 과거 데이터에 기반한 결과를 제공한다.
분석은 대개 데이터의 넓은 범위에 적용되며, 이런 이류로 내부적으로 혹은 외부적으로 데이터 협업이 매우 빈번하게 일어난다. 어떤 비즈니스 패러다임에서는 대규모의 데이터 셋 모음에서의 협업은 오로지 내부적으로 일어나다고 하지만 대부분의 경우 퍼즐을 갖추거나 각각의 점들을 연결하는 데에 있어 외부적 연결이 도움을 준다.ㅣ 가장 많이 사용되는 외부 데이터 소스 두 가지는 소셜 미ㅣㄷ어와 소비자 기반 데이터이다.
- 데이터의 변환
데이터는 다양한 카테고리가 있는데, 그 중에 과거 성능 데이터, 실험 데이터, 벤치마크 데이터가 있다. 과거 성능 데이터와 실험 데이터는 꽤 명백한 데이터인데 반해, 벤치마크 데이터는 두 개의 다른 항목이나 제품을 기준에 따라 측정, 비교해 얻은 데이터이다. 데이터가 정보로 변환돼 더 처리를 거치게 되면, 문제 해결에 사용된다.
- 데이터, 정보로의 변환
데이터에서 정보로의 변환은 수집, 처리, 조직화 과정을 포함하게 된다.
수집된 데이터는 어떤 처리와 조직화 과정을 필요로 하며, 그 결과 구조, 모델 혹은 패턴을 가지게 될 수도 있고, 그러지 않을 수도 있다. 그러나 최소한 이 과정을 통해 데이터에 관한 질문에 대한 답을 체계적으로 찾을 수 있다.
- 데이터 수집
데이터 수집은 시간이 걸리는 과정이다. 그래서 회사들은 데이터 수집을 자동화하기를 원한다. 그러나 사람이 직접 데이터를 수집하는 일이 아직까지는 일반적이다. 현대의 자동화 과정을 통한 데이터 수집은 센서와 같은 입력 장치들을 사용한다. 데이터 자동으로수집하는 또 다른 방법은 문서나 로그 파일을 스캔함으로써 가능하다. 웹 기반 방법을 통해 데이터베이스에 저장된 데이터를 수집하게 수종으로 처리하는 방식도 정보로 변환될 수 있다. 데이터베이스로 저장되는 웹 기반 방식을 통해 데이터가 수집되도록 처리하는 방식은 비로소 데이터가 정보로 변화하게 한다. 최근 웹 기반의 협업환경은 향상된 통신과 데이터 공유를 통해 혜택을 얻고 있다.
- 데이터 전처리
데이터 클리닝(data cleaning), 데이터 통합(data integration), 데이터 정리(data reduction), 데이터 변환(data transformation)과 같은 몇 가지 데이터 처리 기법이 있다.
데이터 클리닝은 데이터가 일관성을 가지도록 하고노이즈를 제거하기 위해 적용
데이터 통합은 다양한 출처로부터 얻어진 데이터들이 데이터 웨어하우스(data warehouse)와 같은 잘 알려진 일관적 서식을 갖도록 병합하고 결합나다. 데이터 정리는 병합, 종합 그리고 불필요한 특성들을 제거함으로써 데이터 크기를 줄일 수 있다. 데이터 변환은 적은 범위 안으로 데이터를 축소하기 위해 상둉될 수 있고, 이를 통해 데이터의 처리와 시각화에 있어 정확성과 효율성을 향상시킬 수 있다.
이상 검출(anomaly detection)은 수집된 데이터 중 예상되는 형태나 규칙 안에 속하지 않는 이상한 데이터들을 식별하는 것이다.
변칙은 아웃라이어(outliers)나 노이즈(noise)로 알려져 있다. 옐르 들어 신호 데이터에서 이상한 특정한 신호는 노이즈로 여겨지면, 거래 데이터에서는 사기성 거래가 아웃라이어가 된다. 정확한 데이터 수집은 데이터의 무결성(integrity)을 유지하기 위해 필수적이다. 변칙 데이터들의 부작용만큼, 이면적으로아웃라이어들은 매우 중요한데, 예를 덜어 특히 사기성 보험 청구의 경우에 매우 유용하다.
The Pandas Series
The Pandas Series data structure is a one-dimensional, heterogeneous array with labels, We can create a Pandas Series data structure as follows:
- Using a Python dict
- Using a NumPy array
- Using a single scalar value
When creating a Series, we can hand the constructor a list of axis labels, which is commonly referred to as the index. The index is an optional parameter. By default, if we use a NumPy array as the input data, Pandas will index values by auto incrementing the index commencing from 0. If the data handed to the constructor is a Python dict, the sorted dict keys will become the index. In the case of a scalar value as the input data, we are required to supply the index. For each new value in the index, the scalar input value will be reiterated. The Pandas Series and DataFrame interfaces have features and behaviors borrowed from NumPy arrays and Python dictionaries, such as slicing, a lookup function that uses a key, and vectorized operations. Performing a lookup on a DataFrame column returns a Series. We will demonstrate this and other features of Series by going back to the previous section and loading the CSV file again:
- Using a Python dict
- Using a NumPy array
- Using a single scalar value
When creating a Series, we can hand the constructor a list of axis labels, which is commonly referred to as the index. The index is an optional parameter. By default, if we use a NumPy array as the input data, Pandas will index values by auto incrementing the index commencing from 0. If the data handed to the constructor is a Python dict, the sorted dict keys will become the index. In the case of a scalar value as the input data, we are required to supply the index. For each new value in the index, the scalar input value will be reiterated. The Pandas Series and DataFrame interfaces have features and behaviors borrowed from NumPy arrays and Python dictionaries, such as slicing, a lookup function that uses a key, and vectorized operations. Performing a lookup on a DataFrame column returns a Series. We will demonstrate this and other features of Series by going back to the previous section and loading the CSV file again:
피드 구독하기:
글 (Atom)