[kotlin] 코틀린을 이용한 비지도 학습 기법

비지도 학습은 레이블이 지정되지 않은 데이터에서 패턴이나 트렌드를 발견할 수 있는 기술적 접근법 중 하나입니다. 즉, 데이터셋에서 미리 정의된 출력 레이블이나 명시적인 피드백 없이 알고리즘 모델링을 수행하는 방식을 말합니다.

클러스터링

클러스터링은 비지도 학습의 대표적인 예시로, 데이터를 서로 유사한 그룹으로 분류합니다. 각 그룹은 클러스터라고 하며, 데이터 간의 유사성을 기반으로 클러스터를 형성합니다. k-평균 알고리즘은 클러스터링을 수행하기 위한 인기 있는 알고리즘 중 하나입니다.

import org.apache.spark.ml.clustering.KMeans
import org.apache.spark.ml.evaluation.ClusteringEvaluator
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.feature.StandardScaler
import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder().appName("KMeansExample").getOrCreate()
val dataset = spark.read.format("libsvm").load("data/mllib/sample_kmeans_data.txt")

val assembler = new VectorAssembler()
  .setInputCols(Array("f1", "f2", "f3", "f4"))
  .setOutputCol("features")

val features = assembler.transform(dataset)

val scaler = new StandardScaler()
  .setInputCol("features")
  .setOutputCol("scaledFeatures")
  .setWithStd(true)
  .setWithMean(false)

val scaledData = scaler.fit(features).transform(features)

val kmeans = new KMeans().setK(2).setSeed(1L)
val model = kmeans.fit(scaledData)

val predictions = model.transform(scaledData)

val evaluator = new ClusteringEvaluator()

val silhouette = evaluator.evaluate(predictions)
println(s"Silhouette with squared euclidean distance = $silhouette")

주성분 분석

주성분 분석(PCA)은 데이터의 주요 특징이나 패턴을 파악하기 위해 고차원 데이터를 저차원 공간으로 변환하는 기술입니다. 이를 통해 데이터의 차원을 축소하고 주요 특징을 추출할 수 있습니다.

import org.apache.spark.ml.feature.PCA
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder().appName("PCAExample").getOrCreate()
val data = spark.read.format("libsvm").load("data/mllib/sample_lda_libsvm_data.txt")

val assembler = new VectorAssembler()
  .setInputCols(Array("features"))
  .setOutputCol("assembled")

val output = assembler.transform(data)

val pca = new PCA()
  .setInputCol("assembled")
  .setOutputCol("pcaFeatures")
  .setK(3)
  .fit(output)

val result = pca.transform(output).select("pcaFeatures")

비지도 학습을 활용하여 데이터의 패턴 및 특성을 탐색하는 과정은 데이터 과학 분야에서 중요한 부분을 차지합니다. 클러스터링이나 주성분 분석을 비롯한 다양한 비지도 학습 알고리즘을 활용하여 데이터를 탐색하고 관계를 파악함으로써 데이터를 더 잘 이해할 수 있습니다.


참고문헌: