퐈니썬's LIfe - 잘 실패하자 RSS 태그 관리 글쓰기 방명록
분류 전체보기 (45)
2021-04-29 09:07:18
728x90
반응형

4.3.1 서포트 벡터 머신

  • 지도 학습 머신 러닝 모델이며, 주로 분류와 회귀분석에 사용
  • 마진으로 최대화할 수 있는 결정 경계선을 찾아 입력된 데이터가 어느 카테고리에 속할지 판단하는 알고리즘
  • 결정 경계에 따라 선형과 비선형 분류 모델로 정의
  • 핵심 용어 : 결정 경계, 서포트 벡터, 마진, 비용, 초평면

그림. 서포트 벡터 머신 시각화

4.3.1.1 서포트 벡터란?

  • 서포트 벡터(Support Vector) → 2차원 공간 상에 나타나는 데이터 포인트를 의미 → 쉽게 말해, 입력되는 데이터를 표현한 것

4.3.1.2 결정 경계

  • 결정 경계 → 주어진 데이터를 통해 만들어지는 모델로, 서포트 벡터 머신 학습의 궁극적인 목적인 이 결정 경계를 찾는 것 → 결정 경계의 차원은 데이터의 벡터 공간의 차원보다 한 차원 낮음
  • N: 데이터의 벡터 공간차원일때,
    결정 경계 차원 = N -1

4.3.1.3 마진이란?

  • 마진(margin) → 서포트 벡터와 결정 경계 사이의 거리 → SVM은 이 마진을 최대로 하는 결정 경계를 찾는 것이 목표 → 즉, 통계적으로 허용하는 범위에서 성능이

4.3.1.4 비용이란?

  • 비용 (cost, loss) → 어떤 모델의 성능을 평가할 때 사용되는 중요한 변수 → SVM에서는 비용(C)라고 정의
  • 비용의 모델 평가

    [주어진 데이터에 대해!!]
    *비용이 낮으면 → 과소 적합의 위험 (모델의 목표대로 잘 찾지 못함)
    *비용이 높으면 → 과대 적합의 위험 (TEST 데이터에 대해 잘 찾지 못함)
    *
    결론적으로 적절한 비용 값을 찾는 과정이 상당히 중요하고, 이것이 학습일 것이다.
  • SVM의 비용
  • SVM에서의 비용은 어떤 의미를 가질까??

    [주어진 데이터에 대해!!]

    비용이 낮다 → 마진을 최대한 높이고 학습 에러율을 증가시키는 결정 경계선 생성
    비용이 높다 → 마진은 낮고, 학습 에러율은 감소하는 결정 경계선 생성

    결론적으로, SVM은 주어진 데이터로 결정 경계선을 생성하여 분류 및 회귀 분석을 하고, 적절한 비용을 가지는 모델을 찾아가는 것이 목표!

    이때, 마진이 낮다는 것은 다른 데이터에 대해 적용되기 힘들다는 것이니, 과대 적합에 부합하는 내용이 되고 마진이 높다는 것은 학습 데이터에 대해서도 잘 처리하지 못하는 것이기에 과소 적합과 부합된다고 볼 수 있다.

4.3.1.5 서포트 벡터 머신의 사용하기

  • 서포트 벡터 머신, 즉 결정 경계선을 만들기 위한 필요한 작업 및 입력 변수들이 있음
  1. 선형 SVM: 커널을 사용하지 않고 데이터를 분류, 비용(C)을 조절해서 마진의 크기 조절 (참조 4.3.1.4 비용이란?)
  2. 커널 트릭: 선형 분리가 주어진 차원에서 불가능할 경우 고차원으로 데이터를 옮기는 효과를 통해 결정 경계를 찾음 → 주요 입력 변수 : 비용, gamma, 마진

[커널 트릭 좀 더 알아보기]

'''

커널 트릭은 "선형 분리"가 불가능할 경우에 데이터의 공간을 저 차원에서 고차원으로 매핑해줌으로써 결정 경계 모델을 찾음

'''

[커널 트릭 사용하기]

커널 트릭의 SVM을 실습 시에 중요한 변수는 다음과 같다.

>> 비용 : 마진 너비 조절 변수, 클수록 마진 너비가 좁아지고 작을수록 마진 너비가 넓어짐
>> 감마 : 커널의 표준 편차 조절 변수, 작을수록 경계 결정선이 완만해지고, 클수록 결정 경 계선이 굴곡을 가짐

결론적으로 Gamma가 크면 decision boundary는 더 굴곡지고, Gamma가 작으면 decision boundary는 직선에 가깝다.

감마값이 클때 (출처: Udacity)
감마값이 작을때 (출처: Udacity)

 

 

 

728x90
반응형
2021-03-04 19:32:22
728x90
반응형

#1. Andrew Ng. Lecture.C1W2L04

강의 출처 : www.youtube.com/channel/UCcIXc5mJsHVYTZR1maL5l9w

 

DeepLearningAI

Welcome to the official DeepLearning.AI YouTube channel! Here you can find the videos from our Coursera programs on machine learning as well as recorded events. DeepLearning.AI was founded in 2017 by machine learning and education pioneer Andrew Ng to fill

www.youtube.com

본업 이외에 따로 무엇가를 준비한다는 것은 쉬운일은 아닌거 같다. 하지만, 꾸준히 하자!

01. Lecture 10. Gradient Descent

  • 강의 목적 - "경사 하강법 (Gradient Descent)" 알고리즘을 사용한, 매개변서 w, b를 훈련세트에 학습시키는 방법.
  • 이전 강의의 연장선으로, 로지스틱회귀 함수의 경사하강법에 대한 설명.

그림 1

로지스틱 회귀법의 "시그모이드 함수" 를 예로 들어 설명합니다.

 

(그림 1의 첫번째 식) "시그모이드 함수"의 표현 식입니다.

 

(그림 1의 두번째 식)  "비용함수"를 J라 할 때, 비용함수 J는 w, b에 대한 함수가 됩니다.

 

이 함수 J는  "손실함수의 평균"으로 정의합니다. 즉, 손실함수와 비용함수는 목적은 같지만 약간의 의미는 다릅니다.

 

결국, m개의 데이터셋이 있다면 각 데이터셋의 손실함수를 계산한 값의 평균이 "비용함수" 로 정의됩니다.

 

이는 훈련셋이 얼마나 참값과 예측값이 맞는지에 대한 측정이 가능하죠.

 

(그림 1의 그래프) 두 가로축은 w,b에 대한 정의가 된 축입니다. 세로축은 비용함수 J에 의한 (w,b)의 출력 값이 되겠죠.

 

J함수가 저 그림에 따른 모양이라면, 어느한점 (w,b)에서 가장 적은 최소값을 찾으려 할 것입니다.

 

그것이 알고리즘이고, 비용함수 J가 아래로 볼록한(convex)한 모양이라는 것이 로지스틱 회귀가 적용에 적절한 비용

 

수가 된다는 것을 의미하고, 이대의 w, b가 적절한 파라미터라고 할 수 있겠습니다.

 

그림 2

결국에는 비용함수 J의 목적은 최소 값을 찾는 것이고, 이 최소값을 찾아나가는 방법이 "경사하강법"입니다.

 

그리고, 비용함수 J가 최소 값일 때 w, b가 적절한 파라미터이므로 이 w, b를 갱신해가며 비용함수 J를 따라 함수값

 

이 최소 값이 되는 w, b를 찾아야겠죠.

 

그림2가 이에 대한 내용입니다. 

 

경사하강법을 본다면 결국 w를 갱신해나가는 것이고, 이 갱신은 기존 w에서 J(w)의 기울기 값에서 a(학습률)의 곱

 

을 빼 는 것으로 갱신해나간다고 합니다. 

 

즉, 기울기가 양일때는 w가 작아지는, 기울기가 음일때는 w가 커지면서 J(w)가 작은 global 미니마를 찾는것이죠. 

 

여기서 중요한 것은 우리가 w,b를 경사하강법으로 J(w,b)가 최소가 되는 w,b를 찾는 것이다.

 

어떻게?? 미분으로!!

 

그림 2의 모든 식들이 해당 내용 w := w - a* dJ(w,b)/dw b := b - a* dJ(w,b)/db  - 우리는 천천히 이해할 수 있습니다!

 

다음에는 미분으로 어떻게 찾아가는지 공부하면서 미분의 의미도 정립해보도록 하겠습니다.

728x90
반응형
2021-03-03 13:17:38
728x90
반응형

01. Keras

01. Keras란?

케라스는 딥러닝 모델을 간편하게 만들고, 훈련시킬 수 있는 파이썬을 위한 딥러닝 프레임워크로, 백엔드 엔진에서 제공하는 최적화된 텐서 라이브러리를 사용합니다.

케라스는 모듈 구조로 구성되어 있어 하나의 텐서 라이브러리에 국한하여 구현되어 있지 않고, 여러 가지 백엔드 엔진과 매끄럽게 연동됩니다.

현재는 TensorFlow, Theano, CNTK 3개를 백엔드 엔진으로 사용할 수 있습니다. (백엔드 엔진 변경하는 방법; https://keras.io/api/utils/backend_utils/)

 

02. Keras workflow

케라스를 사용하는 대부분의 작업 흐름은 다음과 같습니다.

  1. 입력 텐서와 타겟 텐서로 이루어진 훈련 데이터를 정의
  1. 입력과 타겟을 맵핑하는 층으로 이루어진 네트워크(모델)를 정의
  1. 손실함수, 옵티마이저, 모니터링하기 위한 측정지표를 선택하여 학습
  1. 훈련 데이터에 대해 모델의 fit() 메서드를 반복적으로 호출

 

02. Keras를 이용하여 MNIST 학습하기

01. 데이터 호출

가장 기본적인 예제인 MNIST 데이터셋을 이용하여 손글씨 데이터를 분류 예측하는 모델 제작.

케라스에서 MNIST 데이터셋을 numpy배열 형태로 호출이 가능하다.

# 필요한 라이브러리 불러오기
from keras.datasets import mnist
from keras import models
from keras import layers
from keras.utils import to_categorical

# MNIST 데이터셋 불러오기
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 이미지 데이터 준비하기 (모델에 맞는 크기로 바꾸고 0과 1사이로 스케일링)
# 노말라이즈를 하는, 0~1의 이미지를 기준으로 한다. (왜그런지 보쟈)
train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255

02. 훈련, 테스트 데이터 설정

 

# 레이블을 범주형으로 인코딩
train_labels = to_categorical(train_labels) #범주형이라고하고, 원핫인코딩 필수적인 작업
#원핫 인코딩 왜하냐 알아보기.
test_labels = to_categorical(test_labels)

03. 모델 정의

# 모델 정의하기 (여기에서는 Sequential 클래스 사용)
model = models.Sequential()
model.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,))) 512개의 perceptron

model.add(layers.Dense(10, activation='softmax'))
model.add(layers.Dense(len(train_labels[0]), activation='softmax'))

# 모델 컴파일 하기
model.compile(optimizer='rmsprop',
                loss='categorical_crossentropy',
                metrics=['accuracy'])

04. 모델 훈련

# fit() 메서드로 모델 훈련 시키기
model.fit(train_images, train_labels, epochs=5, batch_size=128)

05. 정확도 측정

# 테스트 데이터로 정확도 측정하기
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('test_acc: ', test_acc)

06. 결과 보기

Epoch 1/5
469/469 [==============================] - 1s 2ms/step - loss: 0.4283 - accuracy: 0.8745
Epoch 2/5
469/469 [==============================] - 1s 2ms/step - loss: 0.1105 - accuracy: 0.9669
Epoch 3/5
469/469 [==============================] - 1s 2ms/step - loss: 0.0683 - accuracy: 0.9800
Epoch 4/5
469/469 [==============================] - 1s 2ms/step - loss: 0.0469 - accuracy: 0.9867
Epoch 5/5
469/469 [==============================] - 1s 2ms/step - loss: 0.0355 - accuracy: 0.9891
313/313 [==============================] - 0s 576us/step - loss: 0.0662 - accuracy: 0.9811
test_acc:  0.9811000227928162

03. 코드내용 학습하기

01. MNIST 데이터 셋에 대하여

01. MNIST 데이터 셋?

National Institute of Standards and Technology의 줄임말로, 미국 국립표준기술연구소의 손으로 쓴 글자 데이터셋에서 숫자만 따로 뽑아낸 데이터 셋.

0~255사이의 값을 가지는 흑백 이미지이며 28x28(784) 사이즈를 지니며 7만 개의 이미지(6만 개 트레이닝 셋, 1만 개 테스트 셋)으로 구성되어있다.

02. MNIST 데이터 셋 살펴보기

# 필요한 라이브러리 불러오기
from keras.datasets import mnist
from keras import models
from keras import layers
from keras.utils import to_categorical

# MNIST 데이터셋 불러오기
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

------------------------------------------------------------------------------
test_image : shape : (10000,28,28) 28x28 이미지 10000장
test_label : shape : 10000 10000장 이미지 대한 0~9까지의 라벨
train_image : shape : (60000,28,28) 28x28 이미지 60000장
train_label : shape : 60000 60000장 이미지 대한 0~9까지의 라벨

* 각 한장에 28x28 배열이며 각 배열의 값들은 0~255의 값을 가지고 이미지로 보았을때 
0~9까지의 형상을 가진다

03. MNIST 데이터 셋 PLOT 해보기

import matplotlib.pyplot as plt
#train image의 5번째 이미지 추출
image = train_images[4]  #reshape전의 이미지

#plot the sample
fig = plt.figure
plt.imshow(image, cmap='gray')
plt.show()
print("train_image 4번째 라벨은", train_labels[4])
#실행결과 Console: train_image 4번째 라벨은 9 

04. 모델구조 파악하기

모델을 정의하는 방법은 두 가지로, Sequential 클래스함수형 API를 사용한다.

1) Sequential 클래스 : 가장 자주 사용하는 구조로, 층을 순서대로 쌓아 올린 네트워크

2) 함수형 API : 완전히 임의의 구조를 만들 수 있는 비순환 유향 그래프(DAG) 만듬 ( 공부가 필요)

 

해당 코드에서는, Sequential 클래스 형태로 모델화하였다.

모델은 2개의 Dense 층으로 되어있고, 각각 "relu", "softmax"의 활성함수를 가진다.

마지막 층은 10개의 확률 점수가 들어 있는 배열을 반환하는 소프트맥스층이며, 각 점수는 현재 숫자 이미지가 10개의 숫자 클래스 중 하나에 속할 확률을 나타낸다(?)

#model.summary() 통해 전체적인 구조
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 512)               401920    
_________________________________________________________________
dense_1 (Dense)              (None, 10)                5130      
=================================================================
Total params: 407,050
Trainable params: 407,050
Non-trainable params: 0
_________________________________________________________________

05. 결과 파악하기

학습된 모델이 Test 모델을 판별할때, 98.34%로 MNIST의 숫자를 맞춘다는 의미이다.

즉, 테스트 데이터 10000개 중에서 200장 가량 틀렸다는 것으로 볼 수 있다.

Test loss: 0.08414454758167267
Test accuracy: 0.9817000031471252

 

 

예측 라벨과 실제 테스트라벨이 다른 결과들 16개를 랜덤하게 선정하여 보았을때, 실제로 사람이 보아도 판별하기 쉽이낳는 것들이 있는 것을 확인 할 수 있다.

04. 전체코드

01. 학습하기

 

# 필요한 라이브러리 불러오기
from keras.datasets import mnist
from keras import models
from keras import layers
from keras.utils import to_categorical
import matplotlib.pyplot as plt
from keras.utils import plot_model

# MNIST 데이터셋 불러오기
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 이미지 데이터 준비하기 (모델에 맞는 크기로 바꾸고 0과 1사이로 스케일링)
train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255

# 레이블을 범주형으로 인코딩
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

# 모델 정의하기 (여기에서는 Sequential 클래스 사용)
model = models.Sequential()
model.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
model.add(layers.Dense(10, activation='softmax'))
model.summary()

# 구 조확인
from IPython.display import SVG
from keras.utils import model_to_dot

# SVG(model_to_dot(model, show_shapes=True).create(prog='dot',format='svg'))

# 모델 컴파일 하기
model.compile(optimizer='rmsprop',
                loss='categorical_crossentropy',
                metrics=['accuracy'])

# fit() 메서드로 모델 훈련 시키기
history=model.fit(train_images, train_labels,epochs=10, batch_size=64, verbose=1)
# batch size가 높을수록, 속도빠르고, 정화도가 낮아.

# 테스트 데이터로 정확도 측정하기
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=0)

print('Test loss:', test_loss)
print('Test accuracy:', test_acc)
# 학습 정확성 값과 검증 정확성 값을 플롯팅 합니다.

#결과파악.

import random
import numpy as np
predicted_result = model.predict(test_images)
predicted_labels = np.argmax(predicted_result, axis=1)

test_label = np.argmax(test_labels, axis=1)

wrong_result = []

for n in range(0, len(test_label)):
    if predicted_labels[n] != test_label[n]:
        wrong_result.append(n)

samples = random.choices(population=wrong_result, k=16)

count = 0
nrows = ncols = 4

plt.figure(figsize=(12,8))

for n in samples:
    count += 1
    plt.subplot(nrows, ncols, count)
    plt.imshow(test_images[n].reshape(28, 28), cmap='Greys', interpolation='nearest')
    tmp = "Label:" + str(test_label[n]) + ", Prediction:" + str(predicted_labels[n])
    plt.title(tmp)

plt.tight_layout()
plt.show()

02. 결과보기

from keras.datasets import mnist

# MNIST 데이터셋 불러오기
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

import matplotlib.pyplot as plt
#train image의 4번째 이미지 추출
image = train_images[4]

#plot the sample
fig = plt.figure
plt.imshow(image, cmap='gray')
plt.show()
print("train_image 4번째 라벨은", train_labels[4])

num = 10
images = train_images[:num]
labels = train_labels[:num]

num_row = 2
num_col = 5

#plot images
fig, axes = plt.subplots(num_row, num_col, figsize=(1.5*num_col, 2*num_row))
for i in range(num):
    ax = axes[i//num_col, i%num_col]
    print(i//num_col, i%num_col)
    ax.imshow(images[i], cmap='gray')
    ax.set_title('Label: {}'.format(labels[i]))
plt.tight_layout()
plt.show()
728x90
반응형
2021-02-25 18:45:20
728x90
반응형

#1. Andrew Ng. Lecture.C1W2L01 ~ C1W2L03

강의 출처 : www.youtube.com/channel/UCcIXc5mJsHVYTZR1maL5l9w

01. Logistic Regression

  • 강의 목적 - "로지스틱 회귀가 어떤 것인가" 에 대한 간략한 전달
  • "로지스틱 회귀"는 "지도학습 문제"에서 출력 레이블 y가 0 or 1 일 경우 즉, 이진 분류에 사용되는 알고리즘

예를들어, 고양이 사진인지 아닌지 구분하는 경우라면? x라는 입력이 주어지면, y의 예측값을 출력하는 알고리즘이 필요

 

할 것 즉, x는 고양이 사진이고, y의 예측값은 고양이 사진일 확률 일것 문제는, 입력 x와 파라미터 w,b가 주어졌을

 

때, 어떻게 y의 예측값을 출력 할 수 있을까?

 

잘 안되는 방법은 w*x +b 와 같은 선형식으로 두는 것. 왜??

 

선형함수는 음수도 가질 수있기에, 이진 분류에는 좋은 방법이 아니다.

 

왜냐하면, 예측 값인 y는 확률로 항상 0<y<1 값을 가져야하기 때문!! 그렇기 때문에 0과 1로 표현이 잘 되어질 수 있는

 

활성 함수인 "시그모이드 함수" 를 주로 적용한다.

 

 

위 그림은 "시그모이드 함수" 그래프와 식을 나타낸다. 이를 보면 알 수 있듯이, z가 양의 값으로 클수록 z의 함수 값은 1

 

에, z가 음의 값으로 클수록 z의 함수 값은 0에 수렴한다.

 

그러므로 로지스틱 회귀를 구현할때, y가 1이 될 확률을 잘 예측하도록 파라미터 w,b를 학습해야 한다.

 

 

02. Lecture 09. Logistic Regression Cost Function

  • 강의 목적: 파라미터 w, b를 학습하려면, 비용함수의 정의가 필요. "로지스틱 회귀"를 학습할  수 있는 비용함수에 대해 알아보자.
  • 손실함수(loss function), 비용 함수 (cost function), 목적 함수 (objective function): 머신러닝을 통한 예측값이 실제값과 차이(오차)와 관련한 식(equation)

  • 예측값과 실제값의 오차를 최소화하려 하면 비용함수 혹은 손실함수라 함. 즉, 비용함수는 예측값의 오차를 최소화하기 위해 최적화된 식이어야 함

위 식에 대해 말해보자면, i번째 y의 예측값은 w*x(i) + b의 시그모이드이며, 이때 시그모이드 함수는 첫 번째 줄의

 

where 이후의 식으로 정의가 된다. 즉, w*x(i) + b가 i번째 z로 치환이 된다고 보면 된다.

 

1~m개의 주어진 훈련 데이터를 w, b를 찾아 학습할때, 우리가 원하는 값은 i번째 y의 예측값이 훈련 세트에 포함된 i번

 

째 y의 참값과 가까워지도록 하는 것.

 

이를 측정 할 수 있는 것이 손실함수(=오차함수=비용함수)이다. 손실함수를 L이라고 부르고, y^ = 예측값, y = 참값이

 

라 할때, 1/2(y^ - y)^2가 손실함수로 표현될 수 있으나, "로지스틱 회귀" 에서는 적절한 손실함수가 아니다.

 

여기서 명심할 것은 y의 예측값과 y 참값의 오차가 얼마나 큰지를 측정하는 것이 "손실함수"

 

  • 그렇다면, 로지스틱 회귀법에서 시그모이드 함수의 적절한 손실함수는 ??다음과 같이 표현 할 수 있다.

그 이류를 이해한대로 적어보자!

손실함수는 최소화 되어야하는 것을 전제로 한다. 

y^ 이 예측값, y가 참값이라 할때 y^는 로지스틱 회귀 함수를 따른다. 

y= 1 경우)  손실함수  L=  -log(y의 예측값)이 되고, 우리는 예측값이 1 이 되길 원하므로  손실함수는 최소가 되길 원할

 

것. 그럴려면, y의 예측값(y^)이 최대 값이 되도록 그려져야하고, y^은 로지스틱 회귀 함수를 따르기에 1에 수렴하도로

 

증가할 것이다.

반면에, y = 0 경우) 손실함수 L = -log(1-y의 예측값)이 되고, 우리는 예측값이 0 이 되길 원하므로  손실함수는 최소가

 

되길 원할 것이고, 그러므로, 1-y의 예측값이 최대 값이 되도록그려져야하고,  y^는 최소가 되도록 가야할 것이다. 

y^는 로지스틱 회귀 함수를 따르기에 0에 수렴하도록 감소할 것이다.

 

 

정말 어렵지만, 조금씩 알아가고 있는것 같아 기쁘다! 꾸준히 하자!

728x90
반응형
2021-02-23 18:54:52
728x90
반응형

1장. CentOS 7 Linux 얻기

CentOS는 "The Community ENTerprise Operating System"의 약자로 Red Hat 계열의 리눅스와 완전하게 호환되는 무료 기업용 리눅스 운영체제 입니다. 서버 하드웨어 자원 및 프로세스를 관리하기 위해서는 반드시 필요한 소프트웨어 입니다. 부팅 USB, CD나 DVD를 가지고 계시다면, 바로 "2장 CentOS 7 Linux 설치" 로 이동하십시오.

만약 부팅 USB, CD나 DVD를 가지고 계시지 않다면, 아래 링크를 통해 ISO 이미지 파일을 다운로드 하실 수 있습니다. DVD ISO 설치를 권장합니다.

CentOS Mirror

  • DVD ISO : CentOS의 최소한 패키지와, 일반패키지를 포함해 선택 가능한 파일 (권장)
  • Everything ISO : CentOS와 관려된 모든 패키지가 포함된 파일
  • Minimal ISO : CentOS를 사용하기 위한 최소한 패키지만 포함한 파일

ISO 이미지 파일을 다운로드 한 후, 다음을 수행하여 부팅 USB를 제작 할 수 있습니다.

  1. 부팅 USB 제작 유틸리티인 Rufus 를 다운로드 받습니다. (htps://rufus.ie/참조)
  2. Rufus 실행하여 장치 목록에 설치할 USB 장치를 선택합니다.
  3. 부트 선택 항목에 [선택] 목록을 통하여 설치하고자하는 ISO를 지정합니다.
  4. 시작 버튼을 누르고 상태란 아래에 완료가 되면 부팅 USB 제작이 완료됩니다.

그림 1.1. Rufus 부팅 USB 제작 설정 완료 화면

2장. CentOS 7 Linux 설치

CentOS 7 Linux DVD나 최소 부트

  1. 매체에서 설치 프로그램을 시작하려면, 다음 절차를 따르십시오:
  2. 설치에 필요하지 않는 외부 FireWire나 USB 디스크의 연결을 모두 해제하십시오.
  3. 컴퓨터 전원을 켜십시오.
  4. 미디어(부트매체; 부팅 USB..)를 컴퓨터에 삽입하십시오.
  5. 컴퓨터 전워을 켜십시오.

미디어에서 부팅을 하기 위해서 특별한 키나 키조합을 눌러야 할 필요가 있습니다. 대부분의 컴퓨터나 서버에서 컴퓨터를 킨 직후 화면에 짧은 메세지가 나타납니다. "Press F10 to select boot device" 과 같은 문장이 전형적인 예입니다. 실제로 구체적인 메세지나 눌러야 할 키의 종류는 컴퓨터나 서버에 따라 달라질 수 있습니다. 해당 컴퓨터나 서버의 문서를 참조하십시오.

2.1. CentOS 7 Linux 시스템 부트

부트 미디어는 몇 가지 옵션과 함께 화면에 부트 메뉴를 표시합니다. 만약 60초간 아무런 키를 누르지 않는다면, 기본적으로 [Test this media & Install CenOS 7] 항목으로 진입합니다. DVD를 체크할 필요성이 없기 때문에, [Install CentOS 7] 항목으로 진입합니다.

그림 2.1 CentOS 7 Linux 부팅 화면

2.2 CentOS 7 Linux 설치 가이드

CentOS 7 Linux 설치 환경은 그래픽 환경으로 표기됩니다. 해당 섹션부터 CentOS 7 Linux 설치 환경에 대한 설명과 절차를 기술합니다.

2.2.1 설치과정 언어 설정

마우스를 사용하여, 설치 과정의 기본값으로 사용하고자 하는 언어를 선택하실 수 있습니다. (그림 2.2 참조)

본 가이드에서는 영문으로 진행합니다. 선택을 마치셨으면, Continue를 누르고 계속 진행합니다.

그림 2.2 CentOS 7 Linux 언어설정 화면

2.2.2 설치 옵션 화면

마우스를 사용하여, 설치 옵션을 설정하실 수 있습니다. 설치 옵션 화면은 아래의 내용을 참조하십시오. (그림 2.3 참조)

  • DATE & TIME : OS상에서의 시간을 설정.
  • KEYBOARD : 키보드 언어 설정
  • LANGUAGE SUPPORT : OS 시스템 언어 설정
  • INSTALLATION SOURCE : 설치 소스 설정 (기본값: DVD설정)
  • SOFTWARE SELECTION : 서버 설치 환경 설정 (필요한 패키지 선택가능)
  • INSTALLATION DESTINATION : OS 설치 저장소 설정
  • NETWORK & HOSTNAME : 네트워크 및 유저 설정

그림 2.3 CentOS 7 Linux 설치 옵션설정 화면

2.2.3 DATE & TIME, KEYBOARD, LANGUAGE SUPPORT 설정

마우스를 사용하여, 설치 옵션을 설정하실 수 있습니다. 해당 옵션들은 사용자에 따라 선택하시면 됩니다. DATE & TIME의 경우 추후 Network Time protocol 설저을 통해 동기화가 가능합니다.

2.2.4 INSTALLATION SOURCE 설정

설치 소스를 어떻게 설정 할지에 대한 항목입니다. 마우스를 사용하여, 설치 옵션을 설정하실 수 있습니다. 기본적으로 DVD로 설정되어있습니다. 본 가이드에서는 부팅 USB로 진행하므로 별도의 설정이 필요하지 않습니다. (그림 2.4 참조)

그림 2.4 CentOS 7 Linux Installation source 설정 화면

2.2.5 SOFTWARE SELECTION 설정

CentOS 7 Linux의 설치 환경일 설정하는 항목입니다. OS 설치의 목적에 따라 Base Environment를 설정하고, Add-Ons for selected Environment 목록을 통해 필요한 패키지를 설정하도록 합니다.

본 가이드에서는 UI 환경을 사용하고자, Base Environment는 "GNOME Desktop"을 설정하고, 추가적인 패키지는 설정하지 않도록 하였습니다. (그림 2.5 참조)

그림 2.5 CentOS 7 Linux software selection 설정 화면

2.2.6 INSTALLATION DESTINATION 설정

CentOS 7 Linux의 설치 저장소를 설정하는 항목입니다. 기본적으로 Local Standard Disks 항목을 통해 설치하고자 하는 disk를 설정합니다. 설정 후에 partitioning을 하여 설치를 합니다.

특별히 파티션을 정할 필요가 없다면, "Automatically configure partitioning." 으로 설정하여 설치를 진행하십시오. (그림 2.6 참조)

설정이 완료되면, "Begin Installation" 을 클릭하여 설치를 진행하십시오. (그림 2.7 참조)

그림 2.6 CentOS 7 Linux Installation destination 설정 화면

그림 2.7 CentOS 7 Linux 설치 시작

2.2.7 슈퍼유저(super user) 암호 설정 및 계정 생성

  1. 슈퍼 유저(super user) 암호 설정 : 시스템 관리 및 프로세스에서 중요한 슈퍼유저 계정은 루트계정으로 모든권한을 가진 계정입니다. "ROOT PASSWORD" 를 통해 암호를 설정합니다. 차후 관리하면서 터미널 커맨드라인을 통해 변경이 가능합니다. (그림 2.8 참조)
  2. 계정 생성 : CentOS 7 Linux는 hostname 형태의 짧은 호스트 이름으로 물어봅니다. 이를 계정이라고 지칭합니다. 많은 네트워크 연결된 시스템에서 자동적으로 도메인명을 제공해서, 사용자는 호스트명만 입력하도록 돕는, DHCP(Dynamic Host Configuration Protocol) 서비스를 제공합니다. 계정 생성은 이후에 서버로의 네트워크 접속에 중요합니다. (그림 2.8 참조)

그림 2.8 CentOS 7 Linux 계정 설정

2.2.8 라이센스 동의

계정 생성 이후에 "LICENSE INFORMATION" 항목을 클릭합니다. 이 화면은 CentOS 7 Linux의 전체 라이센스 항목을 표시합니다. (그림 2.9참조)

그림 2.9 CentOS 7 Linux 라이센스 화면

라이센스 약관에 동의한다면, "약관에 동의합니다."를 선택하시고 "완료"를 클릭하십시오.

2.2.9 CentOS 7 Linux 설치완료

설치가 완료 된 후에, 기본 설정 확인을 위한 창들이 나타납니다. 해당 항목들 확인하고 "NEXT" 를 클릭해주십시오. (그림 2.10 참조)

그림 2.10 CentOS 7 Linux 설치 죄종단계

그림 2.11 CentOS 7 Linux 바탕화면

728x90
반응형