SlideShare a Scribd company logo
1 of 75
[기계학습 연구회]
스팍 & 머신러닝 개요
5주차 : 2016년 2월 11일
• 장형석
• chjang1204@nate.com
Hadoop 2.0
1. 하둡 2.0
 Hadoop App Store Layer
 BI
1. 하둡 2.0
 하이브리드 BI
1. 하둡 2.0
 하이브리드 BI
1. 하둡 2.0
 하이브리드 BI
1. 하둡 2.0
 Process : Batch & Interactive & Real-Time
1. 하둡 2.0
1. 하둡 2.0
 Hortonworks Data Platform : 하둡 1.0에서 2.0으로 발전
 하둡 1.0과 2.0
분산 OS
[분산병렬처리 : 자원관리,스케줄링]
MapReduce 2.0
[New DataFlow : DAG]
1. 하둡 2.0
1. 하둡 2.0
 YARN as Cluster Operating System
 자원관리
MapReduce 1.0
자원 할당 기준
1) Map Slot
2) Reduce Slot
1. 하둡 2.0
1. 하둡 2.0
 빅데이터 분석은 Hadooooooo … ooooooooooop 으로
 Stinger Loadmap
YARN
Tez
ORC File
Hive
Service
Buffer
Caching
1. 하둡 2.0
1. 하둡 2.0
 Speed
 ORC File Format
1. 하둡 2.0
SQL on Hadoop
 SQL 기반의 데이터 분석 문제점과 대안
출처 : Hyounggi Min / hg.min@samsung.com / slideshare.net : [SSA] 04.sql on hadoop(2014.02.05)
2. SQL on Hadoop
 SQL 기반의 데이터 분석 문제점과 대안
2. SQL on Hadoop
 SQL 기반의 데이터 분석 문제점과 대안
2. SQL on Hadoop
 SQL 기반의 데이터 분석 문제점과 대안
2. SQL on Hadoop
2. SQL on Hadoop
 S/W
 분류
 A type : SQL to MapReduce
- 전통적인 방식
- Hive QL → MapReduce 변환 → Hadoop Cluster에서 실행
1. Hive : 대용량 배치 처리에 적합
2. Stinger : tez, 보다 빠른 응답속도에 더 초점을 맞춤
 B type : 자체 SQL 실행엔진 on Hadoop
- Hadoop, Hive 기반
• MapReduce는 사용하지 않음
• HDFS 100% 호환
• Hive의 MetaStore를 활용, 그 외 일부 기능을 활용하는 경우도 있음
- 자체 SQL 실행엔진 - 인메모리 방식의 분산 Query 엔진
3. Impala : 클라우데라, 인메모리, 상용수준이나 CDH에 의존성이 있음
4. Tajo : 국산, 하둡의 이상에 충실, Hive에서 기본적으로 지원하는 기능을 일부만 구현
5. Presto : 페이스북, Pipelining & Streaming, 가장 빠름(매우 빠르게)
6. Drill : Apache, 구글의 Dremel
2. SQL on Hadoop
 분류
 C type : 혼합 방식
- 인메모리, MapReduce DAG
7. Shark(SparkSQL) : Spark 기반으로 SQL을 지원
2. SQL on Hadoop
Spark
3. Spark
 개요
 분산, 초고속, 인메모리 MapReduce like Computing Framework
- Interactive 쿼리를 위한 인메모리 데이터 스토리지
- Graph 등 쿼리에 최적화된 실행 엔진
- Iterative Algorithms(Machine Learning)
- Interactive Data Mining
- 하둡보다 엄청 빠름
- Stinger와 유사한 아키텍처
 Hadoop Storage 및 DataBase Support
- 하둡 기반 시스템과 호환
- HDFS, Hbase, SequenceFiles …..
- Mysql, Oralce, Casandra ... : JDBC Driver
3. Spark
 특징
 HDFS & Hive 통합
- Port of Hive to run on Spark
- Existing Hive 데이터
- Existing Hive Metastore
- Existing Query(HiveQL, UDFs, … )
 Programming is Scala
- Scala Shell
- Python Support : PySpark
- Java Support
 History
- Spark started in 2009, UC Berkeley AMP Lab
- Shark started in 2011
 Spark vs Hadoop : Word Count
3. Spark
 구성요소
3. Spark
 Process & Scheduling
3. Spark
MapReduce
3. Spark
 Data Process Model
3. Spark
 Data Process Model Spark
3. Spark
 Spark runs on Hadoop Cluster
3. Spark
 Example : Log Mining
3. Spark
 성능 : Logistic Regression
 Spark 기반 다양한 분석
3. Spark
Spark의 실습환경 및 소개
4. Spark 실습환경 및 소개
 Spark의 주요기능
구분 모듈 기능 분야
핵심 Spark Core 맵리듀스와 같은 병렬처리 및 반복 연산 분산병렬처리
주요
패키지
Spark SQL 하이브와 같은 SQL 분석 데이터웨어하우스
MLlib 마훗과 같은 머신러닝라이브러리 데이터 마이닝
GraphX 네트워크 분석 네트워크 분석
Spark Streaming 스톰과 같은 스트리밍 분석 스트리밍/패턴인식
확장
프로젝트
BlinkDB 빠른 응답속도를 가진 SQL 쿼리 분석 Ad-Hoc 분석
SparkR 통계 패키지인 R과의 통합 통계 분석
4. Spark 실습환경 및 소개
 클러스터 매니저
 독립 모드
- 스팍에 내장된 클러스터 매니저를 사용한다.
- 가장 빠르고 쉽게 스팍 클러스터를 구축할 수 있는 방법이다.
 Mesos 모드
- 하둡, 하둡 에코시스템, 기타 애플리케이션을 모두 관리할 수 있는 클러스터 매니저이다.
- 클러스터에 속한 모든 머신의 컴퓨팅 자원을 통합 관리할 수 있다.
 YARN 모드
- 하둡 2.0의 YARN의 리소스 매니저를 이용하는 방법이다.
- 하둡이 설치된 환경에서 사용하며, 다른 클러스터 매니저를 추가할 필요가 없다.
4. Spark 실습환경 및 소개
 Spark Shell
 기본 Shell
- ./bin/spark-shell
- ./bin/pyspark
# Scala 언어
scala> sc
res: spark.SparkContext = spark.SparkContext@470d1f30
# Python 언어
>>> sc
<pyspark.context.SparkContext object at 0x7f7570783350>
 IPython Notebook
- IPYTHON_OPTS="notebook --pylab inline" ./bin/pyspark
# 한국에서 개발을 주도하는 제플린!!! 도 있습니다.
4. Spark 실습환경 및 소개
 로컬 모드와 분산 모드
 로컬 모드
$ bin/pyspark --master local
- Shell을 실행하는 로컬 머신에서, 단일 프로세서로 Spark이 실행됨
- Spark/PySpark Shell 모두 가능
 로컬 [N] 모드
$ bin/pyspark --master local[N]
- Shell을 실행하는 로컬 머신에서, [N]개의 프로세서로 Spark이 병렬로 실행됨
- Spark/PySpark Shell 모두 가능
 분산 모드
$ bin/spark-shell --master spark://master.host:7077
- Spark Master/Worker 데몬이 구동되고 있는 클러스터 환경에서, 분산+병렬로 실행됨
- Spark Shell 만 가능
-> 클러스터 매니저를 Mesos를 사용할 경우
$ bin/spark-shell --master mesos://mesos.host:Port
4. Spark 실습환경 및 소개
 주요 개념
 RDD
- Resilient Distributed Datasets
- 병렬처리가 가능한 Spark의 데이터셋
- Spark Context로 유지됨
- Fault-Tolerant collection of elements
 RDD Operation
1. Transformation
2. Action
 RDD Operation의 특징
1. Transformation Operations are Lazy
2. RDD Operation is run where a Action Operation is Called.
3. Spark can persist a RDD.
Spark 맛보기
5. Spark 맛보기
 준비하기
# 나는 누구인가?
whoami
# 나는 지금 어디에 있는가?
hostname
pwd
# 네트워크는?
ip a
ping 8.8.8.8
ping 192.168.40.101
ping 192.168.40.102
5. Spark 맛보기
 주의사항
# putty가 뭔가요?
-> 복사 후 마우스 오른쪽 버튼을 눌러보세요.
# 101번 머신과 102번 머신 어디로 접속해야 하나요?
-> 아무곳이나 가능합니다. 하지만 101번으로 접속해 주세요.
# Spark Shell에서 코드를 입력했는데 안되요?
-> 앞에 빈칸을 입력하면 곤란해요.
-> 두 줄 이상 입력할 때 주의하세요.
5. Spark 맛보기
 Pyspark Shell 테스트하기
 로컬 모드로 Pyspark Shell( 언어 : Python )을 실습
$ cd $SPARK_HOME
$ bin/pyspark --master local
>>> lines = sc.textFile("README.md")
>>> lines.count()
98
>>> lines.first()
u'# Apache Spark
>>> pythonLines = lines.filter(lambda line: "Python" in line)
>>> pythonLines.count()
3
5. Spark 맛보기
 Spark Shell 테스트하기
 로컬 모드로 Spark Shell( 언어 Scala )을 실습
$ bin/spark-shell
val x= sc.parallelize(Array("b", "a", "c"))
val y= x.map(z => (z,1))
println(x.collect().mkString(", "))
println(y.collect().mkString(", "))
val x1= sc.parallelize(Array("b", "a", "c"),2)
println(x1.collect().mkString(", "))
5. Spark 맛보기
 Spark 서비스 구동하고 확인하기
 일단 하둡과 Spark 서비스가 동작하고 있는지 확인
$ jps
3827 SecondaryNameNode
3598 NameNode
3989 ResourceManager
5315 Master
5379 Worker
4077 NodeManager
13469 Jps
3684 DataNode
 Spark 데몬이 없으면 다음을 실행하고 다시 jps 명령어로 확인
$ sbin/start-all.sh
웹브라우저에서 http://192.168.40.101:8080/
확인하면 Spark Master 포트도 알 수 있음.
5. Spark 맛보기
 MLlib Process
 Process
1단계 : 데이터 로딩
2단계 : 학습 데이터/ 평가 데이터로 분리
3단계 : 학습(Training)
4단계 : 평가
5단계 : 모델 저장
6단계 : 서비스 활용
5. Spark 맛보기
 MLlib 맛보기
 NaiveBayes 분류기 (1)
scala> import org.apache.spark.mllib.classification.{NaiveBayes, NaiveBayesModel}
scala> import org.apache.spark.mllib.linalg.Vectors
scala> import org.apache.spark.mllib.regression.LabeledPoint
scala> val data = sc.textFile("file:///data/spark-1.6.0/data/mllib/sample_naive_bayes_data.txt")
scala> println(data.collect().mkString("n"))
scala> val parsedData = data.map { line =>
| val parts = line.split(',')
| LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))
| }
scala> val splits = parsedData.randomSplit(Array(0.6, 0.4), seed = 11L)
scala> val training = splits(0)
scala> val test = splits(1)
scala> training.count()
5. Spark 맛보기
 MLlib 맛보기
 NaiveBayes 분류기(2)
scala> val model = NaiveBayes.train(training, lambda = 1.0, modelType = "multinomial")
scala> val predictionAndLabel = test.map(p => (model.predict(p.features), p.label))
scala> val accuracy = 1.0 * predictionAndLabel.filter(x => x._1 == x._2).count()
scala> test.count()
scala> println(predictionAndLabel.collect().mkString("n"))
scala> val trainPrediction = training.map(p => (model.predict(p.features), p.label))
scala> val trainAccuracy = 1.0 * trainPrediction.filter(x => x._1 == x._2).count()
scala> training.count()
scala> println(training.collect().mkString("n"))
scala> println(trainPrediction.collect().mkString("n"))
scala> model.save(sc, "myModel_NaiveBayes")
scala> val NBModel = NaiveBayesModel.load(sc, "myModel_NaiveBayes")
5. Spark 맛보기
 MLlib 맛보기
 DecisionTree 분류기 (1)
scala> import org.apache.spark.mllib.tree.DecisionTree
scala> import org.apache.spark.mllib.tree.model.DecisionTreeModel
scala> import org.apache.spark.mllib.util.MLUtils
scala> val data = MLUtils.loadLibSVMFile(sc, "file:///data/spark-1.6.0/data/mllib/sample_libsvm_data.txt")
scala> println(data.collect().mkString("n"))
scala> val numClasses = 2
scala> val categoricalFeaturesInfo = Map[Int, Int]()
scala> val impurity = "gini"
scala> val maxDepth = 5
scala> val maxBins = 32
5. Spark 맛보기
 MLlib 맛보기
 DecisionTree 분류기 (2)
scala> val splits = data.randomSplit(Array(0.7, 0.3))
scala> val (trainingData, testData) = (splits(0), splits(1))
scala> val model = DecisionTree.trainClassifier(trainingData, numClasses, categoricalFeaturesInfo,
impurity, maxDepth, maxBins)
scala> val labelAndPreds = testData.map { point =>
| val prediction = model.predict(point.features)
| (point.label, prediction)
| }
scala> val testErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble
scala> testData.count()
scala> model.save(sc, "myModel_DTree")
scala> val DTModel = DecisionTreeModel.load(sc, "myModel_DTree")
Spark 머신러닝 아키텍처
6. 머신러닝 아키텍처
 요구사항
 통합환경
빅데이터 환경은 시스템의 다양한 컴포넌트와 통합되어야 한다.
데이터셋과 스토리지, 분석과 레포팅, 프론트 애플리케이션 등
 확장성
빅데이터 환경은 확장성이 높아야 하며, 개별 시스템은 독립적이어야 한다.
Scale Out(규모의 확장)과 Scale Up(성능의 확장)이 모두 가능해야 함.
 다양성
빅데이터 환경은 다양한 형태의 작업을 모두 수용할 수 있어야 한다.
머신러닝, 실시간 처리, 분석 애플리케이션, 등
 다중성
빅데이터 환경은 배치 작업 뿐만 아니라 실시간 작업도 모두 처리할 수 있어야 한다.
Spark은 이러한 요구사항을 모두 만족함
6. 머신러닝 아키텍처
 비즈니스 유스케이스 : 온라인 영화 서비스
 데이터의 급증으로 머신 러닝 시스템이 필요
모델 기반의 프로세스 VS 사람 기반의 프로세스
 개인화
사용자의 경험과 사용자의 행동 데이터를 활용
추천 -> 특정 사용자가 관심있을만한 아이템 목록을 제공
매체 : 웹페이지, 이메일, 직접적인 마케팅 채널, 모바일 앱 등
 타겟 마케팅, 사용자 분류(Segment)
타겟 마케팅 : 특정 제품을 어떤 사용자에게 마케팅하는 것이 좋은지 선정
사용자 분류 : 사용자를 군집 등의 방법으로 분류 -> 특정 그룹에 속함
 예측 모델링
추천, 개인화, 타겟팅을 포함한 다양한 예측 모델링이 필요함
수익률, 클릭률, 판매율, 신규고객수 등
-> 새로운 활동에 대한 결과를 예측할 수 있으면 보다 효율적인 실행과 예산 집행이 가능함
6. 머신러닝 아키텍처
 머신 러닝의 유형
 지도 학습(Supervised Learning)
레이블(Label)이 있는 데이터셋을 사용
-> 추천 모델, 회귀 모델, 분류 모델
 자율 학습(UnSupervised Learning : 비지도 학습)
레이블(Label)이 없는 데이터셋을 사용
-> 군집 모델, 차원 축소, 텍스트 처리
6. 머신러닝 아키텍처
 머신러닝 프로세스와 컴포넌트
 프로세스
데이터
획득
데이터
전처리
모델
학습
모델
평가
모델적용
(정합성)
6. 머신러닝 아키텍처
 새로운 머신러닝 아키텍처
6. 머신러닝 아키텍처
 새로운 머신러닝 아키텍처에서의 주요 작업 목록
사용자, 행동, 콘텐츠 등 데이터 수집
데이터를 속성과 레이블로 변환
다양한 모델의 선택을 통한 모델 학습
학습된 모델을 온라인(서비스)과 오프라인(캠페인)에 모두 적용
모델 결과에 대한 피드백 제공(모니터링)
수익 예측 모델 제공
여러 부서가 사용할 수 있는 분석 도구 제공
Spark 머신러닝 개요
7. Spark 머신러닝 개요
 Spark MLlib 알고리즘 목록
 logistic regression and linear support vector machine (SVM)
 classification and regression tree
 random forest and gradient-boosted trees
 recommendation via alternating least squares (ALS)
 clustering via k-means, bisecting k-means, Gaussian mixtures (GMM), and power iteration clustering
 topic modeling via latent Dirichlet allocation (LDA)
 survival analysis via accelerated failure time model
 singular value decomposition (SVD) and QR decomposition
 principal component analysis (PCA)
 linear regression with L1, L2, and elastic-net regularization
 isotonic regression
 multinomial/binomial naive Bayes
 frequent itemset mining via FP-growth and association rules
 sequential pattern mining via PrefixSpan
 summary statistics and hypothesis testing
 feature transformations
 model evaluation and hyper-parameter tuning
7. Spark 머신러닝 개요
 Spark MLlib 알고리즘 분류
• 분류 및 회귀
linear models (SVMs, logistic regression, linear regression)
decision trees
naive Bayes
ensembles of trees (Random Forests and Gradient-Boosted Trees)
isotonic regression
• 추천(Collaborative filtering)
alternating least squares (ALS)
• 군집
k-means, bisecting k-means, streaming k-means
Gaussian mixture
power iteration clustering (PIC)
latent Dirichlet allocation (LDA)
• 차원 축소
singular value decomposition (SVD)
principal component analysis (PCA)
• 빈발 패턴 마이닝(Frequent pattern mining)
FP-growth
association rules
PrefixSpan
7. Spark 머신러닝 개요
 분류 및 회귀 모델
구분 모델
Binary Classification
linear SVMs,
logistic regression,
decision trees,
random forests,
gradient-boosted trees,
naive Bayes
Multiclass Classification
logistic regression,
decision trees,
random forests,
naive Bayes
Regression
linear least squares,
Lasso,
ridge regression,
decision trees,
random forests,
gradient-boosted trees,
isotonic regression
Binary Classification
with SVMs, Logistic Regression
8. Binary Classification
 Binary Classification 개요
• 적용 알고리즘
linear models
- SVMs
- Logistic Regression
• 특징
지도 학습
# SVM은 Binary Classification만 가능
# Logistic Regression은 Multiclass Classification으로 확장 가능
• 주의 사항
분류 모델의 결과값은 1 또는 0이 아니다.
임계값(Threshold, 보통 0.5가 기준)을 사용하거나 점수를 통해 결정된다.
8. Binary Classification
1) Spark 클래스 임포트
• 스크립트
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.classification.{LogisticRegressionWithLBFGS, SVMWithSGD}
import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics
import org.apache.spark.mllib.optimization.{SquaredL2Updater, L1Updater}
• 간단한 설명
LabeledPoint : 레이블 + 속성 Vectors
BinaryClassificationMetrics : 평가 메소드
• 평가
정확도(Accuracy) : 정확히 분류한 예시의 개수 / 전체 예시의 개수
오차(Error) : 잘못 분류한 예시의 개수 / 전체 예시의 개수
성능 곡선 : 임계치에 따라 좌우됨
- ${metrics.areaUnderPR()} : PR 곡선 : 정밀도(Precision)-재현율(Recall) 곡선
- ${metrics.areaUnderROC()} : ROC 곡선 : 정탐율(True Positive Rate)-오탐율(False Positive Rate) 곡선
8. Binary Classification
실제 정답
True False
예측
결과
Positive True Positive
False Positive
(Type I Error)
Negative
False Negative
(Type II Error)
True Negative
• Precision : 정밀도 =
𝐓𝐏
𝐓𝐏+𝐅𝐏
• Recall : 재현율 =
𝐓𝐏
𝐓𝐏+𝐅𝐍
• Accuracy : 정확도 =
𝐓𝐏+𝐓𝐍
𝐓𝐏+𝐓𝐍+𝐅𝐏+𝐅𝐍
• Error : 오차 =
𝐅𝐏+𝐅𝐍
𝐓𝐏+𝐓𝐍+𝐅𝐏+𝐅𝐍
• True Positive Rate =
𝐓𝐏
𝐓𝐏+𝐅𝐍
• False Negative Rate =
𝐅𝐏
𝐅𝐏+𝐓𝐍
8. Binary Classification
2) 예제 데이터 로딩 및 학습/평가 데이터셋 분리
• 스크립트
val examples = MLUtils.loadLibSVMFile(sc,
"file:///data/spark-1.6.0/data/mllib/sample_binary_classification_data.txt")
val splits = examples.randomSplit(Array(0.5, 0.5))
val training = splits(0).cache()
val test = splits(1).cache()
val numTraining = training.count().toDouble
val numTest = test.count().toDouble
• 간단한 설명
레코드 : 100건
학습 데이터셋 : 50%, 평가 데이터셋 50%
8. Binary Classification
3) SVM 모델 학습
• 스크립트
val numIterations = 5
# Default : L2 regularization with the regularization parameter set to 1.0
val modelSVM2 = SVMWithSGD.train(training, numIterations)
modelSVM2.clearThreshold()
val scoreAndLabels = test.map { point =>
val score = modelSVM2.predict(point.features)
(score, point.label)
}
println(scoreAndLabels.collect().mkString("n"))
• 간단한 설명
modelSVM2.clearThreshold( ) : 임계치를 제거함 -> Score를 알 수 있음
8. Binary Classification
3) SVM 모델 학습(계속)
• 스크립트
# L1 regularization with the regularization parameter set to 0.1
val svms = new SVMWithSGD()
svms.optimizer.setNumIterations(numIterations).setRegParam(0.1).setUpdater(new L1Updater)
val modelSVM = svms.run(training)
val predictionAndLabels = test.map { case LabeledPoint(label, features) =>
val prediction = modelSVM.predict(features)
(prediction, label)
}
println(predictionAndLabels.collect().mkString("n"))
• 간단한 설명
regularization(규칙화) : SquaredL2Updater(default), L1Updater
8. Binary Classification
4) SVM 모델 평가
• 스크립트
predictionAndLabels.filter(x => x._1 != x._2).count()
numTest
val accuracy = predictionAndLabels.filter(x => x._1 == x._2).count().toDouble / numTest
val metrics = new BinaryClassificationMetrics(predictionAndLabels)
println(s"Test areaUnderPR = ${metrics.areaUnderPR()}.")
println(s"Test areaUnderROC = ${metrics.areaUnderROC()}.")
• 간단한 설명
prediction accuracy : 예측 정확도 & Prediction error : 예측 오차
areaUnderPR : 정밀도(Precision)-재현율(Recall) 곡선의 하위 영역
areaUnderROC : 정탐율-오탐율 곡선의 하위 영역(AUC)
8. Binary Classification
5) Logistic Regression 모델 학습
• 스크립트
val lrs = new LogisticRegressionWithLBFGS()
lrs.optimizer.setNumIterations(numIterations)
val modelLR = lrs.run(training)
val predictionAndLabels = test.map { case LabeledPoint(label, features) =>
val prediction = modelLR.predict(features)
(prediction, label)
}
println(predictionAndLabels.collect().mkString("n"))
• 간단한 설명
LogisticRegressionWithLBFGS : LogisticRegressionWithSGD(Binary Classification)을 확장하여
MultiClass Classification을 지원하는 새로운 클래스
8. Binary Classification
6) Logistic Regression 모델 평가
• 스크립트
predictionAndLabels.filter(x => x._1 != x._2).count()
numTest
val accuracy = predictionAndLabels.filter(x => x._1 == x._2).count().toDouble / numTest
val metrics = new BinaryClassificationMetrics(predictionAndLabels)
println(s"Test areaUnderPR = ${metrics.areaUnderPR()}.")
println(s"Test areaUnderROC = ${metrics.areaUnderROC()}.")
• 간단한 설명
regularization(규칙화) : SimpleUpdater(default)
감사합니다.

More Related Content

What's hot

Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기Taejun Kim
 
Spark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With SparkSpark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With SparkSangHoon Lee
 
왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 Un Gi Jung
 
Spark machine learning & deep learning
Spark machine learning & deep learningSpark machine learning & deep learning
Spark machine learning & deep learninghoondong kim
 
Zeppelin notebook 만들기
Zeppelin notebook 만들기Zeppelin notebook 만들기
Zeppelin notebook 만들기Soo-Kyung Choi
 
Spark은 왜 이렇게 유명해지고 있을까?
Spark은 왜 이렇게  유명해지고 있을까?Spark은 왜 이렇게  유명해지고 있을까?
Spark은 왜 이렇게 유명해지고 있을까?KSLUG
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for HadoopSeungYong Baek
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache TajoGruter
 
발표자료 11장
발표자료 11장발표자료 11장
발표자료 11장Juhui Park
 
Chapter3 - learning spark
Chapter3 - learning sparkChapter3 - learning spark
Chapter3 - learning sparkMungyu Choi
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Hadoop cluster os_tuning_v1.0_20170106_mobile
Hadoop cluster os_tuning_v1.0_20170106_mobileHadoop cluster os_tuning_v1.0_20170106_mobile
Hadoop cluster os_tuning_v1.0_20170106_mobile상연 최
 
분산저장시스템 개발에 대한 12가지 이야기
분산저장시스템 개발에 대한 12가지 이야기분산저장시스템 개발에 대한 12가지 이야기
분산저장시스템 개발에 대한 12가지 이야기NAVER D2
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축Juhong Park
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기AWSKRUG - AWS한국사용자모임
 
Apache Spark 입문에서 머신러닝까지
Apache Spark 입문에서 머신러닝까지Apache Spark 입문에서 머신러닝까지
Apache Spark 입문에서 머신러닝까지Donam Kim
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Jeong-gyu Kim
 

What's hot (20)

Learning spark ch1-2
Learning spark ch1-2Learning spark ch1-2
Learning spark ch1-2
 
Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기
 
Spark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With SparkSpark Day 2017 Machine Learning & Deep Learning With Spark
Spark Day 2017 Machine Learning & Deep Learning With Spark
 
왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지
 
Spark machine learning & deep learning
Spark machine learning & deep learningSpark machine learning & deep learning
Spark machine learning & deep learning
 
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
 
Zeppelin notebook 만들기
Zeppelin notebook 만들기Zeppelin notebook 만들기
Zeppelin notebook 만들기
 
Spark은 왜 이렇게 유명해지고 있을까?
Spark은 왜 이렇게  유명해지고 있을까?Spark은 왜 이렇게  유명해지고 있을까?
Spark은 왜 이렇게 유명해지고 있을까?
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
 
발표자료 11장
발표자료 11장발표자료 11장
발표자료 11장
 
Chapter3 - learning spark
Chapter3 - learning sparkChapter3 - learning spark
Chapter3 - learning spark
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Hadoop cluster os_tuning_v1.0_20170106_mobile
Hadoop cluster os_tuning_v1.0_20170106_mobileHadoop cluster os_tuning_v1.0_20170106_mobile
Hadoop cluster os_tuning_v1.0_20170106_mobile
 
Spark sql
Spark sqlSpark sql
Spark sql
 
분산저장시스템 개발에 대한 12가지 이야기
분산저장시스템 개발에 대한 12가지 이야기분산저장시스템 개발에 대한 12가지 이야기
분산저장시스템 개발에 대한 12가지 이야기
 
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
 
Apache Spark 입문에서 머신러닝까지
Apache Spark 입문에서 머신러닝까지Apache Spark 입문에서 머신러닝까지
Apache Spark 입문에서 머신러닝까지
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리
 

Similar to [D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제

DataWorks Summit 2017
DataWorks Summit 2017DataWorks Summit 2017
DataWorks Summit 2017Daesung Park
 
Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Steve Min
 
Real-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured DataReal-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured DataTed Won
 
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK TelecomGruter
 
Python & Spark
Python & SparkPython & Spark
Python & Sparkitproman35
 
[경북] I'mcloud information
[경북] I'mcloud information[경북] I'mcloud information
[경북] I'mcloud informationstartupkorea
 
빅데이터윈윈 컨퍼런스_대용량 데이터 분석 시스템 구축사례
빅데이터윈윈 컨퍼런스_대용량 데이터 분석 시스템 구축사례 빅데이터윈윈 컨퍼런스_대용량 데이터 분석 시스템 구축사례
빅데이터윈윈 컨퍼런스_대용량 데이터 분석 시스템 구축사례 ABRC_DATA
 
sparklyr을 활용한 R 분산 처리
sparklyr을 활용한 R 분산 처리sparklyr을 활용한 R 분산 처리
sparklyr을 활용한 R 분산 처리Sang-bae Lim
 
Spark streaming tutorial
Spark streaming tutorialSpark streaming tutorial
Spark streaming tutorialMinho Kim
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuninghaiteam
 
Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Hyoungjun Kim
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)Channy Yun
 
데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)SeungYong Baek
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoGruter
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoMatthew (정재화)
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처Sunggon Song
 
3 빅데이터기반비정형데이터의실시간처리방법 원종석
3 빅데이터기반비정형데이터의실시간처리방법 원종석3 빅데이터기반비정형데이터의실시간처리방법 원종석
3 빅데이터기반비정형데이터의실시간처리방법 원종석Saltlux Inc.
 
[중소기업형 인공지능/빅데이터 기술 심포지엄] 대용량 거래데이터 분석을 위한 서버인프라 활용 사례
[중소기업형 인공지능/빅데이터 기술 심포지엄] 대용량 거래데이터 분석을 위한 서버인프라 활용 사례[중소기업형 인공지능/빅데이터 기술 심포지엄] 대용량 거래데이터 분석을 위한 서버인프라 활용 사례
[중소기업형 인공지능/빅데이터 기술 심포지엄] 대용량 거래데이터 분석을 위한 서버인프라 활용 사례ABRC_DATA
 
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기ksdc2019
 

Similar to [D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제 (20)

DataWorks Summit 2017
DataWorks Summit 2017DataWorks Summit 2017
DataWorks Summit 2017
 
Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Apache Htrace overview (20160520)
Apache Htrace overview (20160520)
 
Real-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured DataReal-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured Data
 
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
 
Python & Spark
Python & SparkPython & Spark
Python & Spark
 
[경북] I'mcloud information
[경북] I'mcloud information[경북] I'mcloud information
[경북] I'mcloud information
 
빅데이터윈윈 컨퍼런스_대용량 데이터 분석 시스템 구축사례
빅데이터윈윈 컨퍼런스_대용량 데이터 분석 시스템 구축사례 빅데이터윈윈 컨퍼런스_대용량 데이터 분석 시스템 구축사례
빅데이터윈윈 컨퍼런스_대용량 데이터 분석 시스템 구축사례
 
Apache Spark
Apache SparkApache Spark
Apache Spark
 
sparklyr을 활용한 R 분산 처리
sparklyr을 활용한 R 분산 처리sparklyr을 활용한 R 분산 처리
sparklyr을 활용한 R 분산 처리
 
Spark streaming tutorial
Spark streaming tutorialSpark streaming tutorial
Spark streaming tutorial
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuning
 
Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)
 
데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 
3 빅데이터기반비정형데이터의실시간처리방법 원종석
3 빅데이터기반비정형데이터의실시간처리방법 원종석3 빅데이터기반비정형데이터의실시간처리방법 원종석
3 빅데이터기반비정형데이터의실시간처리방법 원종석
 
[중소기업형 인공지능/빅데이터 기술 심포지엄] 대용량 거래데이터 분석을 위한 서버인프라 활용 사례
[중소기업형 인공지능/빅데이터 기술 심포지엄] 대용량 거래데이터 분석을 위한 서버인프라 활용 사례[중소기업형 인공지능/빅데이터 기술 심포지엄] 대용량 거래데이터 분석을 위한 서버인프라 활용 사례
[중소기업형 인공지능/빅데이터 기술 심포지엄] 대용량 거래데이터 분석을 위한 서버인프라 활용 사례
 
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
 

More from NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

More from NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제

  • 1. [기계학습 연구회] 스팍 & 머신러닝 개요 5주차 : 2016년 2월 11일 • 장형석 • chjang1204@nate.com
  • 3. 1. 하둡 2.0  Hadoop App Store Layer
  • 8.  Process : Batch & Interactive & Real-Time 1. 하둡 2.0
  • 9. 1. 하둡 2.0  Hortonworks Data Platform : 하둡 1.0에서 2.0으로 발전
  • 10.  하둡 1.0과 2.0 분산 OS [분산병렬처리 : 자원관리,스케줄링] MapReduce 2.0 [New DataFlow : DAG] 1. 하둡 2.0
  • 11. 1. 하둡 2.0  YARN as Cluster Operating System
  • 12.  자원관리 MapReduce 1.0 자원 할당 기준 1) Map Slot 2) Reduce Slot 1. 하둡 2.0
  • 13. 1. 하둡 2.0  빅데이터 분석은 Hadooooooo … ooooooooooop 으로
  • 14.  Stinger Loadmap YARN Tez ORC File Hive Service Buffer Caching 1. 하둡 2.0
  • 16.  ORC File Format 1. 하둡 2.0
  • 18.  SQL 기반의 데이터 분석 문제점과 대안 출처 : Hyounggi Min / hg.min@samsung.com / slideshare.net : [SSA] 04.sql on hadoop(2014.02.05) 2. SQL on Hadoop
  • 19.  SQL 기반의 데이터 분석 문제점과 대안 2. SQL on Hadoop
  • 20.  SQL 기반의 데이터 분석 문제점과 대안 2. SQL on Hadoop
  • 21.  SQL 기반의 데이터 분석 문제점과 대안 2. SQL on Hadoop
  • 22. 2. SQL on Hadoop  S/W
  • 23.  분류  A type : SQL to MapReduce - 전통적인 방식 - Hive QL → MapReduce 변환 → Hadoop Cluster에서 실행 1. Hive : 대용량 배치 처리에 적합 2. Stinger : tez, 보다 빠른 응답속도에 더 초점을 맞춤  B type : 자체 SQL 실행엔진 on Hadoop - Hadoop, Hive 기반 • MapReduce는 사용하지 않음 • HDFS 100% 호환 • Hive의 MetaStore를 활용, 그 외 일부 기능을 활용하는 경우도 있음 - 자체 SQL 실행엔진 - 인메모리 방식의 분산 Query 엔진 3. Impala : 클라우데라, 인메모리, 상용수준이나 CDH에 의존성이 있음 4. Tajo : 국산, 하둡의 이상에 충실, Hive에서 기본적으로 지원하는 기능을 일부만 구현 5. Presto : 페이스북, Pipelining & Streaming, 가장 빠름(매우 빠르게) 6. Drill : Apache, 구글의 Dremel 2. SQL on Hadoop
  • 24.  분류  C type : 혼합 방식 - 인메모리, MapReduce DAG 7. Shark(SparkSQL) : Spark 기반으로 SQL을 지원 2. SQL on Hadoop
  • 25. Spark
  • 26. 3. Spark  개요  분산, 초고속, 인메모리 MapReduce like Computing Framework - Interactive 쿼리를 위한 인메모리 데이터 스토리지 - Graph 등 쿼리에 최적화된 실행 엔진 - Iterative Algorithms(Machine Learning) - Interactive Data Mining - 하둡보다 엄청 빠름 - Stinger와 유사한 아키텍처  Hadoop Storage 및 DataBase Support - 하둡 기반 시스템과 호환 - HDFS, Hbase, SequenceFiles ….. - Mysql, Oralce, Casandra ... : JDBC Driver
  • 27. 3. Spark  특징  HDFS & Hive 통합 - Port of Hive to run on Spark - Existing Hive 데이터 - Existing Hive Metastore - Existing Query(HiveQL, UDFs, … )  Programming is Scala - Scala Shell - Python Support : PySpark - Java Support  History - Spark started in 2009, UC Berkeley AMP Lab - Shark started in 2011
  • 28.  Spark vs Hadoop : Word Count 3. Spark
  • 30.  Process & Scheduling 3. Spark
  • 32. 3. Spark  Data Process Model Spark
  • 33. 3. Spark  Spark runs on Hadoop Cluster
  • 34. 3. Spark  Example : Log Mining
  • 35. 3. Spark  성능 : Logistic Regression
  • 36.  Spark 기반 다양한 분석 3. Spark
  • 38. 4. Spark 실습환경 및 소개  Spark의 주요기능 구분 모듈 기능 분야 핵심 Spark Core 맵리듀스와 같은 병렬처리 및 반복 연산 분산병렬처리 주요 패키지 Spark SQL 하이브와 같은 SQL 분석 데이터웨어하우스 MLlib 마훗과 같은 머신러닝라이브러리 데이터 마이닝 GraphX 네트워크 분석 네트워크 분석 Spark Streaming 스톰과 같은 스트리밍 분석 스트리밍/패턴인식 확장 프로젝트 BlinkDB 빠른 응답속도를 가진 SQL 쿼리 분석 Ad-Hoc 분석 SparkR 통계 패키지인 R과의 통합 통계 분석
  • 39. 4. Spark 실습환경 및 소개  클러스터 매니저  독립 모드 - 스팍에 내장된 클러스터 매니저를 사용한다. - 가장 빠르고 쉽게 스팍 클러스터를 구축할 수 있는 방법이다.  Mesos 모드 - 하둡, 하둡 에코시스템, 기타 애플리케이션을 모두 관리할 수 있는 클러스터 매니저이다. - 클러스터에 속한 모든 머신의 컴퓨팅 자원을 통합 관리할 수 있다.  YARN 모드 - 하둡 2.0의 YARN의 리소스 매니저를 이용하는 방법이다. - 하둡이 설치된 환경에서 사용하며, 다른 클러스터 매니저를 추가할 필요가 없다.
  • 40. 4. Spark 실습환경 및 소개  Spark Shell  기본 Shell - ./bin/spark-shell - ./bin/pyspark # Scala 언어 scala> sc res: spark.SparkContext = spark.SparkContext@470d1f30 # Python 언어 >>> sc <pyspark.context.SparkContext object at 0x7f7570783350>  IPython Notebook - IPYTHON_OPTS="notebook --pylab inline" ./bin/pyspark # 한국에서 개발을 주도하는 제플린!!! 도 있습니다.
  • 41. 4. Spark 실습환경 및 소개  로컬 모드와 분산 모드  로컬 모드 $ bin/pyspark --master local - Shell을 실행하는 로컬 머신에서, 단일 프로세서로 Spark이 실행됨 - Spark/PySpark Shell 모두 가능  로컬 [N] 모드 $ bin/pyspark --master local[N] - Shell을 실행하는 로컬 머신에서, [N]개의 프로세서로 Spark이 병렬로 실행됨 - Spark/PySpark Shell 모두 가능  분산 모드 $ bin/spark-shell --master spark://master.host:7077 - Spark Master/Worker 데몬이 구동되고 있는 클러스터 환경에서, 분산+병렬로 실행됨 - Spark Shell 만 가능 -> 클러스터 매니저를 Mesos를 사용할 경우 $ bin/spark-shell --master mesos://mesos.host:Port
  • 42. 4. Spark 실습환경 및 소개  주요 개념  RDD - Resilient Distributed Datasets - 병렬처리가 가능한 Spark의 데이터셋 - Spark Context로 유지됨 - Fault-Tolerant collection of elements  RDD Operation 1. Transformation 2. Action  RDD Operation의 특징 1. Transformation Operations are Lazy 2. RDD Operation is run where a Action Operation is Called. 3. Spark can persist a RDD.
  • 44. 5. Spark 맛보기  준비하기 # 나는 누구인가? whoami # 나는 지금 어디에 있는가? hostname pwd # 네트워크는? ip a ping 8.8.8.8 ping 192.168.40.101 ping 192.168.40.102
  • 45. 5. Spark 맛보기  주의사항 # putty가 뭔가요? -> 복사 후 마우스 오른쪽 버튼을 눌러보세요. # 101번 머신과 102번 머신 어디로 접속해야 하나요? -> 아무곳이나 가능합니다. 하지만 101번으로 접속해 주세요. # Spark Shell에서 코드를 입력했는데 안되요? -> 앞에 빈칸을 입력하면 곤란해요. -> 두 줄 이상 입력할 때 주의하세요.
  • 46. 5. Spark 맛보기  Pyspark Shell 테스트하기  로컬 모드로 Pyspark Shell( 언어 : Python )을 실습 $ cd $SPARK_HOME $ bin/pyspark --master local >>> lines = sc.textFile("README.md") >>> lines.count() 98 >>> lines.first() u'# Apache Spark >>> pythonLines = lines.filter(lambda line: "Python" in line) >>> pythonLines.count() 3
  • 47. 5. Spark 맛보기  Spark Shell 테스트하기  로컬 모드로 Spark Shell( 언어 Scala )을 실습 $ bin/spark-shell val x= sc.parallelize(Array("b", "a", "c")) val y= x.map(z => (z,1)) println(x.collect().mkString(", ")) println(y.collect().mkString(", ")) val x1= sc.parallelize(Array("b", "a", "c"),2) println(x1.collect().mkString(", "))
  • 48. 5. Spark 맛보기  Spark 서비스 구동하고 확인하기  일단 하둡과 Spark 서비스가 동작하고 있는지 확인 $ jps 3827 SecondaryNameNode 3598 NameNode 3989 ResourceManager 5315 Master 5379 Worker 4077 NodeManager 13469 Jps 3684 DataNode  Spark 데몬이 없으면 다음을 실행하고 다시 jps 명령어로 확인 $ sbin/start-all.sh 웹브라우저에서 http://192.168.40.101:8080/ 확인하면 Spark Master 포트도 알 수 있음.
  • 49. 5. Spark 맛보기  MLlib Process  Process 1단계 : 데이터 로딩 2단계 : 학습 데이터/ 평가 데이터로 분리 3단계 : 학습(Training) 4단계 : 평가 5단계 : 모델 저장 6단계 : 서비스 활용
  • 50. 5. Spark 맛보기  MLlib 맛보기  NaiveBayes 분류기 (1) scala> import org.apache.spark.mllib.classification.{NaiveBayes, NaiveBayesModel} scala> import org.apache.spark.mllib.linalg.Vectors scala> import org.apache.spark.mllib.regression.LabeledPoint scala> val data = sc.textFile("file:///data/spark-1.6.0/data/mllib/sample_naive_bayes_data.txt") scala> println(data.collect().mkString("n")) scala> val parsedData = data.map { line => | val parts = line.split(',') | LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble))) | } scala> val splits = parsedData.randomSplit(Array(0.6, 0.4), seed = 11L) scala> val training = splits(0) scala> val test = splits(1) scala> training.count()
  • 51. 5. Spark 맛보기  MLlib 맛보기  NaiveBayes 분류기(2) scala> val model = NaiveBayes.train(training, lambda = 1.0, modelType = "multinomial") scala> val predictionAndLabel = test.map(p => (model.predict(p.features), p.label)) scala> val accuracy = 1.0 * predictionAndLabel.filter(x => x._1 == x._2).count() scala> test.count() scala> println(predictionAndLabel.collect().mkString("n")) scala> val trainPrediction = training.map(p => (model.predict(p.features), p.label)) scala> val trainAccuracy = 1.0 * trainPrediction.filter(x => x._1 == x._2).count() scala> training.count() scala> println(training.collect().mkString("n")) scala> println(trainPrediction.collect().mkString("n")) scala> model.save(sc, "myModel_NaiveBayes") scala> val NBModel = NaiveBayesModel.load(sc, "myModel_NaiveBayes")
  • 52. 5. Spark 맛보기  MLlib 맛보기  DecisionTree 분류기 (1) scala> import org.apache.spark.mllib.tree.DecisionTree scala> import org.apache.spark.mllib.tree.model.DecisionTreeModel scala> import org.apache.spark.mllib.util.MLUtils scala> val data = MLUtils.loadLibSVMFile(sc, "file:///data/spark-1.6.0/data/mllib/sample_libsvm_data.txt") scala> println(data.collect().mkString("n")) scala> val numClasses = 2 scala> val categoricalFeaturesInfo = Map[Int, Int]() scala> val impurity = "gini" scala> val maxDepth = 5 scala> val maxBins = 32
  • 53. 5. Spark 맛보기  MLlib 맛보기  DecisionTree 분류기 (2) scala> val splits = data.randomSplit(Array(0.7, 0.3)) scala> val (trainingData, testData) = (splits(0), splits(1)) scala> val model = DecisionTree.trainClassifier(trainingData, numClasses, categoricalFeaturesInfo, impurity, maxDepth, maxBins) scala> val labelAndPreds = testData.map { point => | val prediction = model.predict(point.features) | (point.label, prediction) | } scala> val testErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble scala> testData.count() scala> model.save(sc, "myModel_DTree") scala> val DTModel = DecisionTreeModel.load(sc, "myModel_DTree")
  • 55. 6. 머신러닝 아키텍처  요구사항  통합환경 빅데이터 환경은 시스템의 다양한 컴포넌트와 통합되어야 한다. 데이터셋과 스토리지, 분석과 레포팅, 프론트 애플리케이션 등  확장성 빅데이터 환경은 확장성이 높아야 하며, 개별 시스템은 독립적이어야 한다. Scale Out(규모의 확장)과 Scale Up(성능의 확장)이 모두 가능해야 함.  다양성 빅데이터 환경은 다양한 형태의 작업을 모두 수용할 수 있어야 한다. 머신러닝, 실시간 처리, 분석 애플리케이션, 등  다중성 빅데이터 환경은 배치 작업 뿐만 아니라 실시간 작업도 모두 처리할 수 있어야 한다. Spark은 이러한 요구사항을 모두 만족함
  • 56. 6. 머신러닝 아키텍처  비즈니스 유스케이스 : 온라인 영화 서비스  데이터의 급증으로 머신 러닝 시스템이 필요 모델 기반의 프로세스 VS 사람 기반의 프로세스  개인화 사용자의 경험과 사용자의 행동 데이터를 활용 추천 -> 특정 사용자가 관심있을만한 아이템 목록을 제공 매체 : 웹페이지, 이메일, 직접적인 마케팅 채널, 모바일 앱 등  타겟 마케팅, 사용자 분류(Segment) 타겟 마케팅 : 특정 제품을 어떤 사용자에게 마케팅하는 것이 좋은지 선정 사용자 분류 : 사용자를 군집 등의 방법으로 분류 -> 특정 그룹에 속함  예측 모델링 추천, 개인화, 타겟팅을 포함한 다양한 예측 모델링이 필요함 수익률, 클릭률, 판매율, 신규고객수 등 -> 새로운 활동에 대한 결과를 예측할 수 있으면 보다 효율적인 실행과 예산 집행이 가능함
  • 57. 6. 머신러닝 아키텍처  머신 러닝의 유형  지도 학습(Supervised Learning) 레이블(Label)이 있는 데이터셋을 사용 -> 추천 모델, 회귀 모델, 분류 모델  자율 학습(UnSupervised Learning : 비지도 학습) 레이블(Label)이 없는 데이터셋을 사용 -> 군집 모델, 차원 축소, 텍스트 처리
  • 58. 6. 머신러닝 아키텍처  머신러닝 프로세스와 컴포넌트  프로세스 데이터 획득 데이터 전처리 모델 학습 모델 평가 모델적용 (정합성)
  • 59. 6. 머신러닝 아키텍처  새로운 머신러닝 아키텍처
  • 60. 6. 머신러닝 아키텍처  새로운 머신러닝 아키텍처에서의 주요 작업 목록 사용자, 행동, 콘텐츠 등 데이터 수집 데이터를 속성과 레이블로 변환 다양한 모델의 선택을 통한 모델 학습 학습된 모델을 온라인(서비스)과 오프라인(캠페인)에 모두 적용 모델 결과에 대한 피드백 제공(모니터링) 수익 예측 모델 제공 여러 부서가 사용할 수 있는 분석 도구 제공
  • 62. 7. Spark 머신러닝 개요  Spark MLlib 알고리즘 목록  logistic regression and linear support vector machine (SVM)  classification and regression tree  random forest and gradient-boosted trees  recommendation via alternating least squares (ALS)  clustering via k-means, bisecting k-means, Gaussian mixtures (GMM), and power iteration clustering  topic modeling via latent Dirichlet allocation (LDA)  survival analysis via accelerated failure time model  singular value decomposition (SVD) and QR decomposition  principal component analysis (PCA)  linear regression with L1, L2, and elastic-net regularization  isotonic regression  multinomial/binomial naive Bayes  frequent itemset mining via FP-growth and association rules  sequential pattern mining via PrefixSpan  summary statistics and hypothesis testing  feature transformations  model evaluation and hyper-parameter tuning
  • 63. 7. Spark 머신러닝 개요  Spark MLlib 알고리즘 분류 • 분류 및 회귀 linear models (SVMs, logistic regression, linear regression) decision trees naive Bayes ensembles of trees (Random Forests and Gradient-Boosted Trees) isotonic regression • 추천(Collaborative filtering) alternating least squares (ALS) • 군집 k-means, bisecting k-means, streaming k-means Gaussian mixture power iteration clustering (PIC) latent Dirichlet allocation (LDA) • 차원 축소 singular value decomposition (SVD) principal component analysis (PCA) • 빈발 패턴 마이닝(Frequent pattern mining) FP-growth association rules PrefixSpan
  • 64. 7. Spark 머신러닝 개요  분류 및 회귀 모델 구분 모델 Binary Classification linear SVMs, logistic regression, decision trees, random forests, gradient-boosted trees, naive Bayes Multiclass Classification logistic regression, decision trees, random forests, naive Bayes Regression linear least squares, Lasso, ridge regression, decision trees, random forests, gradient-boosted trees, isotonic regression
  • 65. Binary Classification with SVMs, Logistic Regression
  • 66. 8. Binary Classification  Binary Classification 개요 • 적용 알고리즘 linear models - SVMs - Logistic Regression • 특징 지도 학습 # SVM은 Binary Classification만 가능 # Logistic Regression은 Multiclass Classification으로 확장 가능 • 주의 사항 분류 모델의 결과값은 1 또는 0이 아니다. 임계값(Threshold, 보통 0.5가 기준)을 사용하거나 점수를 통해 결정된다.
  • 67. 8. Binary Classification 1) Spark 클래스 임포트 • 스크립트 import org.apache.spark.mllib.util.MLUtils import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.mllib.classification.{LogisticRegressionWithLBFGS, SVMWithSGD} import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics import org.apache.spark.mllib.optimization.{SquaredL2Updater, L1Updater} • 간단한 설명 LabeledPoint : 레이블 + 속성 Vectors BinaryClassificationMetrics : 평가 메소드 • 평가 정확도(Accuracy) : 정확히 분류한 예시의 개수 / 전체 예시의 개수 오차(Error) : 잘못 분류한 예시의 개수 / 전체 예시의 개수 성능 곡선 : 임계치에 따라 좌우됨 - ${metrics.areaUnderPR()} : PR 곡선 : 정밀도(Precision)-재현율(Recall) 곡선 - ${metrics.areaUnderROC()} : ROC 곡선 : 정탐율(True Positive Rate)-오탐율(False Positive Rate) 곡선
  • 68. 8. Binary Classification 실제 정답 True False 예측 결과 Positive True Positive False Positive (Type I Error) Negative False Negative (Type II Error) True Negative • Precision : 정밀도 = 𝐓𝐏 𝐓𝐏+𝐅𝐏 • Recall : 재현율 = 𝐓𝐏 𝐓𝐏+𝐅𝐍 • Accuracy : 정확도 = 𝐓𝐏+𝐓𝐍 𝐓𝐏+𝐓𝐍+𝐅𝐏+𝐅𝐍 • Error : 오차 = 𝐅𝐏+𝐅𝐍 𝐓𝐏+𝐓𝐍+𝐅𝐏+𝐅𝐍 • True Positive Rate = 𝐓𝐏 𝐓𝐏+𝐅𝐍 • False Negative Rate = 𝐅𝐏 𝐅𝐏+𝐓𝐍
  • 69. 8. Binary Classification 2) 예제 데이터 로딩 및 학습/평가 데이터셋 분리 • 스크립트 val examples = MLUtils.loadLibSVMFile(sc, "file:///data/spark-1.6.0/data/mllib/sample_binary_classification_data.txt") val splits = examples.randomSplit(Array(0.5, 0.5)) val training = splits(0).cache() val test = splits(1).cache() val numTraining = training.count().toDouble val numTest = test.count().toDouble • 간단한 설명 레코드 : 100건 학습 데이터셋 : 50%, 평가 데이터셋 50%
  • 70. 8. Binary Classification 3) SVM 모델 학습 • 스크립트 val numIterations = 5 # Default : L2 regularization with the regularization parameter set to 1.0 val modelSVM2 = SVMWithSGD.train(training, numIterations) modelSVM2.clearThreshold() val scoreAndLabels = test.map { point => val score = modelSVM2.predict(point.features) (score, point.label) } println(scoreAndLabels.collect().mkString("n")) • 간단한 설명 modelSVM2.clearThreshold( ) : 임계치를 제거함 -> Score를 알 수 있음
  • 71. 8. Binary Classification 3) SVM 모델 학습(계속) • 스크립트 # L1 regularization with the regularization parameter set to 0.1 val svms = new SVMWithSGD() svms.optimizer.setNumIterations(numIterations).setRegParam(0.1).setUpdater(new L1Updater) val modelSVM = svms.run(training) val predictionAndLabels = test.map { case LabeledPoint(label, features) => val prediction = modelSVM.predict(features) (prediction, label) } println(predictionAndLabels.collect().mkString("n")) • 간단한 설명 regularization(규칙화) : SquaredL2Updater(default), L1Updater
  • 72. 8. Binary Classification 4) SVM 모델 평가 • 스크립트 predictionAndLabels.filter(x => x._1 != x._2).count() numTest val accuracy = predictionAndLabels.filter(x => x._1 == x._2).count().toDouble / numTest val metrics = new BinaryClassificationMetrics(predictionAndLabels) println(s"Test areaUnderPR = ${metrics.areaUnderPR()}.") println(s"Test areaUnderROC = ${metrics.areaUnderROC()}.") • 간단한 설명 prediction accuracy : 예측 정확도 & Prediction error : 예측 오차 areaUnderPR : 정밀도(Precision)-재현율(Recall) 곡선의 하위 영역 areaUnderROC : 정탐율-오탐율 곡선의 하위 영역(AUC)
  • 73. 8. Binary Classification 5) Logistic Regression 모델 학습 • 스크립트 val lrs = new LogisticRegressionWithLBFGS() lrs.optimizer.setNumIterations(numIterations) val modelLR = lrs.run(training) val predictionAndLabels = test.map { case LabeledPoint(label, features) => val prediction = modelLR.predict(features) (prediction, label) } println(predictionAndLabels.collect().mkString("n")) • 간단한 설명 LogisticRegressionWithLBFGS : LogisticRegressionWithSGD(Binary Classification)을 확장하여 MultiClass Classification을 지원하는 새로운 클래스
  • 74. 8. Binary Classification 6) Logistic Regression 모델 평가 • 스크립트 predictionAndLabels.filter(x => x._1 != x._2).count() numTest val accuracy = predictionAndLabels.filter(x => x._1 == x._2).count().toDouble / numTest val metrics = new BinaryClassificationMetrics(predictionAndLabels) println(s"Test areaUnderPR = ${metrics.areaUnderPR()}.") println(s"Test areaUnderROC = ${metrics.areaUnderROC()}.") • 간단한 설명 regularization(규칙화) : SimpleUpdater(default)

Editor's Notes

  1. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  2. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  3. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  4. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  5. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  6. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  7. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  8. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  9. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  10. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  11. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  12. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  13. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  14. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  15. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  16. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  17. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  18. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  19. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  20. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  21. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  22. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  23. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  24. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  25. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  26. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  27. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  28. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  29. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  30. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  31. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  32. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  33. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  34. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  35. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  36. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  37. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  38. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  39. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  40. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  41. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  42. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  43. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  44. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  45. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  46. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  47. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  48. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  49. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  50. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  51. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  52. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  53. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  54. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  55. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  56. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  57. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  58. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  59. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  60. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  61. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  62. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  63. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  64. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.
  65. MapReduce의 설계 개념 및 특성입니다. 먼저 분산컴퓨팅 환경에서 운영되어야 하기 때문에 함수형 프로그램의 특성을 가지고 있습니다. MapReduce는 물론 실시간 처리도 가능은 하지만 앞서 언급했다시피 분산컴퓨팅 환경에서 운영되기 때문에 배치형식의 데이터 처리 시스템으로 설계가 되었습니다. 사용자의 NEED를 파악하지 못하고 개발한 프로그램은 사실 쓸모가 없을 것입니다. MapReduce는 여러 어플리케이션 로직의 주요관심사들을 파악했고 이러한 요소들을 최대한 반영하였습니다.