• sparkR 이제 좀 써보자..

    2017. 8. 28. 21:34

    by. 위지원


    예제를 실행해보기전에!


    sparkR 설치


    -docker 이미지로설치하기

    -도커로 spark 설치 삽질기


    -sparkR 설치하는방법 (우분투기준)  <-오늘예제 실행은 이페이지의 5번을 참고함 

    -버전만 달리해서 설치했다.  spark버전 scala버전

    -localhost:4041 하니까 웹페이지가 뜬다

    -spark 설치 삽질기


    sparkR 공부


    -spark 개요


    -R에 대해서...

    -1부

    -2부


    -sparkR에 대해서..

    -1부

    -2부  




    sparkR은 ./bin/sparkR로 실행할 수 있다.


    예제를 따라서 해보니 잘된다. ( 사실상 복붙으로 잘 돌아가는지 확인한거지만.. )




    [웹에서 작업내용을 확인할 수 있음]


    sparkR을 사용하는 방법은 2가지인데 그냥 콘솔을 이용하거나 .(/bin/sparkR로) 또는 Rstudio에서 사용할 수 있다.

    나는 콘솔을 이용할것이다.







    1.sparkSession


    sparkR의 진입 점은 sparkSessionR 프로그램을 spark 클러스터에 연결하는것이다.

    session을 사용해서 spark 패키지등의 옵션을 session으로 전달하여 사용할 수 있다. 


    이제 연결이 되었으니 여러가지를 해볼 수 있다. 



    쿼리도 날릴 수 있다





    sparkR에서는 여러가지 알고리즘을 지원한다.


    분류


    spark.logit: Logistic Regression (로지스틱 회귀)

    선형회귀와 비슷하지만 결과값이 범주형이라는것이 차이점


    spark.mlp: Multilayer Perceptron (MLP) (다층 퍼셉트론) 

    로지스틱 회귀를 수행하는 기계로 볼수있다... 자세한것은 이곳에서


    spark.naiveBayes: Naive Bayes (나이브 베이즈)

    베이즈정리 기반 확률분류 알고리즘이다.


    spark.svmLinear: Linear Support Vector Machine

    새로운 데이터가 주어졌을때 어느 카테고리에 속할지를 판단할수있으며 선형,비선형 분류 모두 가능



    회귀 분석 : 관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한 뒤 적합도를 측정해내는 분석 방법


    spark.survreg: Accelerated Failure Time (AFT) Survival Model (생존분석..?)

    양의값을 갖는 확률변수를 분석하는 통계적 방법

    같은 상태를 유지하고 있는 시간의 길이를 분석하고 이시간의 길이에 영향을 미치는 원인을 분석하는 통계적 방법


    spark.glm또는 glm:Generalized Linear Model (GLM) (일반화 선형모형)

    종속변수가 정규분포하지 않는 경우(범주형)를 포함하는 선형모형의 확장이다. (로지스틱회귀,포아송회귀가있다)


    spark.isoreg: Isotonic Regression (등장회귀,단순회귀..?)

    자유로운 라인을 가지는 회귀분석모델인것같다.. 제약점은 하강하지않는다..? 선형적인 모델에서 벗어난 모델인가보다..


    사진출처: 위키




    트리


    spark.gbt: Gradient Boosted Trees for Regression and Classification

    기계학습에서 부스팅이라고 하면 약한 학습기를 강력한 학습기로 만드는 방식을 의미한다고 한다.

    보안에 보안을 거듭하는 모델..원래   Gradient descent 에서 cost를 최소화하는 파라미터를 찾지 않는가?

    이때 이 파라미터대신 현재까지 학습된 모델을 이용하는것이다 이게 gradient boosting이다.

    tree는..의사결정트리할때 그 트리..


    spark.randomForest: Random Forest for Regression and Classification

    random frest란건 bagging approach방식을 사용하는 기계학습 알고리즘이다.


    bagging은 bias-variance trade off를 극복하기 위해 사용되는 방법인데. 

    이게 무엇인고 하니 bias와 variance는 학습오류를 구성하는 두 구성요소이다. bias가 높으면 오류율이 큰거고 bariance가 높으면 예측결과가 어떤 트레이닝 데이터 셋에서는 잘맞다가 갑자기 어떤 트레이닝셋에는 안맞으면서 안정성이 떨어진다는 이야기이다.


    trade off란건 bias를 줄이면 variance가 높아져버리고;; 이런 경향을 말한다. 그래서 이걸 극복하기위해 bagging을 사용하는것


    bagging은 bootstrap aggregation의 약자로 주어진 데이터에서 랜덤하게 subset을 n번 sampling해서 n개의 예측모형을 만들어 개별예측모형이 voting하는 방식으로 예측결과를 결정하여 low bias유지 high bariance 감소하는 방법


    random forest는 대표적인 bagging계열 알고리즘이다.


    ㅋㅋㅋ근데 재밋는게 결과가 나온과정을 사람이 이해할수가없다고한다.. 결과를 설명못한다고... 결과에대해 묻지도 따지지도못..


    출처url : http://blog.heartcount.io/random-forest-ver-10



    클러스터링 : 군집화라고도 하며 비지도 학습(예측을 하는데 사용하기보단 데이터에서 의미를 파악하고 기준을 만드는데에 비지도학습을 사용함) 에 가장 대표적인 친구로 아무런 정보가 없는상태에서 데이터를 분류하는 방법!


    spark.bisectingKmeans: Bisecting k-means (이등분 k-mean)

    k-means알고리즘은 저번에 알아본것같다. k개의 투표자로 새로운 데이터를 어디에 넣을것인가?!를 결정하는 방식..

    이때 bisecting은 클러스터를 생성하는 방법에 의해 붙은건데 

    군집화가 잘되었는지를 평가하는걸 sum of squared errors(sse)라고 하는데

    하나의 클러스터에서 시작해서 sse가 큰 클러스터들을 대상으로 이등분한다고 한다.

    spark.gaussianMixture: Gaussian Mixture Model (GMM)

    확률모델로서 하나의 클래스나 관찰된 전체 데이터 집합이 평균을 중심으로 하여 뭉쳐있는 분포형태를 표현하는데에 적합한 모델

    spark.kmeans: K-Means

    이건 오전에 공부했다. 블로그글참조

    spark.lda: Latent Dirichlet Allocation (LDA) (잠재 디리클레 할당)

    주어진 문서에 대하여 각 문서에 어떤 주제들이 존재하는지에 대한 확률 모델 자연어처리할때 쓴다고한다.




    협업 필터링 : 많은 사용자들로부터 얻은 기호정보에 따라 사용자들의 관심사를 자동으로 예측하게 해주는 방법


    spark.als: Alternating Least Squares (ALS)

    유사도를 평가하는데에 평균제곱근오차라는 방법을 사용한다.




    빈번한 패턴 마이닝 : 말그대로 데이터 집합에서 빈번하게 발생하는 패턴들


    spark.fpGrowth : FP-growth

    트리와 노드 링크라는 자료구조를 사용하여 자주일어나는 반복적인 패턴의 길이를 늘린다.라는 뜻풀이..

    계속해서 서브트리를 만들어내는것이라고한다. 서브트리를 구축할 수 없을때까지..



    통계


    spark.kstest: Kolmogorov-Smirnov Test (일표본 검증)

    이건 통계학적인거라 링크로 대신..




    '2017년 > Spark' 카테고리의 다른 글

    스칼라를 빠르게 공부해보자  (0) 2017.09.20
    spakrR과 R의 메모리  (0) 2017.09.12
    sparkR을 또 공부해보자  (0) 2017.08.18
    R과 알고리즘  (0) 2017.08.18
    sparkR을 공부해보자 [Scaling R Programs with Spark]  (0) 2017.08.12

    대화의 장 💬