분류 전체보기 96

2024년 상반기 회고록 - '새로운 시도'

작년 하반기 회고록에서는 '나'라는 대상을 객관적으로 보고어떤 사람인지 어떻게 살아갈 것인지 회고를 했었다.그 과정에서 반성, 결심도 했고 여러 계획을 세웠었다. 계획 중 성과를 낸 부분도 있고 전혀 달성하지 못했던 부분도 있다. 그래도 회고는 중요하다.실패, 성공의 여부가 아닌 그 이후의회고를 통해 성장함을 이제는 느끼고 있다.(실패/성공했으면 왜 실패/성공을 했는지 고민해 보는단계는 사람 자체가 아닌 어떤 분야든 필요한 자세다.심지어 '결혼', '연애' 조차도 해당된다.) 올해 하반기에는 개인적인 가족일이(좋은 일) 생길 예정이고,회사에도 퇴사하기로 결심해 회사 측에 전달한 상황이다.(나는 좋다)광고 도메인 데이터 분석가로 있으면서소비자 관점이라기 보단 광고주 관점에서 데이터를 바라보는 분석을 주로 ..

기타/회고록 2024.05.21

Pyspark로 k-means clustering 구현하기.

pyspark로 k-means 클러스터링을 하는 code를 정리한다. 우선, pyspark에서 머신러닝 module을 사용하기 위해서는 알고리즘에 사용되는 features의 vectorize 과정이 필요하다. (vector 형태의 column이 ML 알고리즘의 Input으로 들어가게됨) 여기서 pyspark의 vector에 대해 정리해뒀는데 참고! https://sikmulation.tistory.com/45 [PySpark] dense 벡터와 sparse 벡터, UDF로 sparse vector 만들기 1.vector 개념 희소 벡터를 생성하려면 벡터 길이(엄격하게 증가해야 하는 0이 아닌 값과 0이 아닌 값의 인덱스)를 제공해야 합니다. pyspark.mllib.linag.Vecotors 라이브러리는..

2023년 하반기 회고록 - '나'

2023년 하반기 회고록은 "기술적인 부분, 역량을 어떻게 향상시켰다, 커리어적인 역량을 갖출 수 있었다" 라는 정량적인 측면에서 나의 과거를 돌아보기 보단 내가 책임져야할 나의 가족과 그리고 좀 더 나은 '나'를 위해서 본질적인 이야기를 해보려고 한다. *메타인지(metacognition) - 자신의 인지활동을 '한 차원 높은 시각' 에서 관찰하는 정신 작용 내가 안다(know)고 착각하는것은 굉장히 큰 문제다. 스스로를 잘 안다고 생각하고 자기객관화가 잘되는 메타인지가 높은 사람이라고 생각했지만, 안다고 착각하고 살았던거 같다. 23년엔 리스크를 감수할 일이 많았는데 정말로 내가 스스로를 잘 알고 감정을 빼고 문제를 객관적으로 봤다면 쉽게 해결될 것들이 많았다. 나는 차분하고 감정의 동요가 없다는 소..

기타/회고록 2024.01.05

VIF(Variance Infalation Factor)로 다중공선성(Multicollinearity) 탐지하기(ft.Pyspark)

from pyspark.sql import SparkSession from pyspark.ml.feature import VectorAssembler from pyspark.ml.stat import Correlation # Create a Spark session spark = SparkSession.builder.appName("VIFExample").getOrCreate() # Assume you have a DataFrame named 'data' with features and label columns # For example, 'features' column should be a vector of features # Assemble features into a single vector colu..

AIC, BIC 로 모형 적합도 탐색하기(pyspark 코드)

data = [(1.0, 0.1, 0.2), (0.0, 0.4, 0.5), (1.0, 0.2, 0.3), (0.0, 0.3, 0.4)] columns = ["label", "feature1", "feature2"] df = spark.createDataFrame(data, columns) # 특징 벡터 생성 assembler = VectorAssembler(inputCols=["feature1", "feature2"], outputCol="features") df = assembler.transform(df) # 로지스틱 회귀 모델 생성 lr = LogisticRegression(featuresCol="features", labelCol="label") # 파이프라인 생성 pipeline = Pipeli..

주니어 분석가가 바라보는 모델링(modeling)이란?

회사에서 모델링 관련 업무를 하다 보면 방향을 잃을 때가 있다. 결과를 내는데 급급하기보다는 모델링의 목적과 달성하고자 하는 요구사항이 뭔지? 그리고 어떻게 모델링 방향을 설정할지? 에 대한 고민이 선행돼야 한다. 학교에서 단순히 논문을 쓰고, 공부를 할 때와는 많이 달라 이 부분을 인지하는데까지 꽤 시간이 걸렸다. 여전히 훈련이 덜 된 상태라 잊지 않기 위해 해당 부분을 정리한다. 1. 연구용 모델링? 대학원에서 논문을 썼을 때 이야기다. 논문을 쓰고 졸업하려면 '모델을 구현하고 성능을 개선시킴'을 보여줘야지 라는 포인트에 맞춰 왜 모델링을 해야 하는지에 대한 고찰 없이 결과 내는데 집중을 했다. 변명하자면 잘 모르기도 했고, 산업에서 모델을 어떻게 활용하는지에 대한 경험부족?이라고 생각한다. 학교에서..

기타/심수상응 2023.12.26

성인이 되는 것은.

내가 어른인가? 머리만 크다고 어른이 된게 아닌거 같은데 언제 어엿한 어른으로의 역할을 다할까?라는 스스로에 대한 의구심이 들어 국어사전에 찾아봤다. 성인은 민법상 만 19세 이상의 모든 사람들을 성인으로 일컫는다. 다 자라서 어른이 된사람을 성인이라 부르는데. 어른은 1.자기일에 책임을 질 수 있는 사람, 2.나이나 지위가 높은 윗사람, 3.결혼을 한 사람.으로 나뉜다. 나는 앞으로 어떤 어른이 되고싶은지에 대해 생각을 해본적이 없던거 같다. 살아가는데 책임을 가볍게 여기고 아무 생각없이 물흐르듯이 시간을 보내왔다. 될대로 되란 식으로. 물론, 그 과정에서 운좋게 잘 풀려 잘 책임지고 있는 일들도 있는 반면에 굉장히 미성숙한 부분도 공존하고 있음을 지금에서야 깨닫는다. 책임 지는데 어려움을 느끼는 미성..

기타/심수상응 2023.12.11

0, 1 로 이루어진 배열, 텐서 만들기(pytorch,numpy - ones_like, zeros_like)

0, 1로 채워진 텐서를 만드는 방법, 기존 텐서의 크기와 데이터 타입을 그대로 유지하면서 생성 1.ones_like # 예제 배열 생성 original_array = np.array([[1, 2], [3, 4]]) # np.ones_like를 사용하여 1로 채워진 배열 생성 ones_array = np.ones_like(original_array) print("Original array:") print(original_array) print("\nArray of ones:") print(ones_array) # 예제 텐서 생성 original_tensor = torch.tensor([[1, 2], [3, 4]]) # torch.ones_like를 사용하여 1로 채워진 텐서 생성 ones_tensor =..

텐서, 배열 연결하기(numpy, pytorch - concat(concatenate, stack)

1.concat(=concatenate) 주어진 차원을 따라 텐서들을 연결하는데 사용 딥 러닝에서는 주로 모델의 입력 또는 중간 연산에서 두 개의 텐서를 연결하는 경우가 많음. 두 텐서를 연결해서 입력으로 사용하는 것은 두 가지의 정보를 모두 사용한다는 의미. dim = 0: 첫번째 차원을 늘림 dim = 1: 두전째 차원을 늘림 # 예제 배열 생성 array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([[5, 6]]) np.concatenate을 사용하여 두 배열을 첫 번째 차원(행)을 따라 이어붙이기 result_concatenate = np.concatenate((array1, array2), axis=0) print("\nConcatenated array..

텐서 타입 변경하기(numpy - astype(float), pytorch - float())

# NumPy 배열 생성 numpy_array = np.array([1, 2, 3]) # NumPy 배열을 다른 데이터 타입으로 변환 float_array = numpy_array.astype(float) int_array = numpy_array.astype(int) print("Original NumPy array:", numpy_array) print("Float array:", float_array) print("Integer array:", int_array) # PyTorch 텐서 생성 torch_tensor = torch.tensor([1, 2, 3]) # PyTorch 텐서를 다른 데이터 타입으로 변환 float_tensor = torch_tensor.float() int_tensor = ..