IT

ML 분석시 최적의 조합 찾기 위한 방법

치타뱅뱅 2024. 2. 14. 22:30
728x90

안녕하세요. 현재 개발하고 있는 솔루션은 ML로 수행하여 최적의 cluster 파라미터를 찾고있습니다.

 

pixabay 무료이미지(ml검색어)

 

그러다가 max_feqtures, cluster개수를 수작업으로 수행하다가, 그냥 for문으로 시작과 끝점만 알려주고 Score가 가장 큰값을 찾게 하는게 나은거같아 아래와같이 코드를 추가하여 최대값을 찾고있습니다.

 

대부분은 ari score가 아닌 label을 정의하고 해당 label로 유사도 측정을 하는데요, 저는 사전 정의된 label이 없어서 ari score로 아래 코드로 반복수행하여 최대값을 찾는 과정중에 있습니다.

 

저와 같은 고민이 있으셨던 분들은 아래코드 활용하세요.

 cf) Kmeans 외에 다른 방법까지 추가하는 반복문을 하면 best일거같으나, 그럴경우 시간이 상당히 걸리긴 하네요.

 

<ML 반복문 코드>


best_ari_score = -1  # 최대 ARI Score 값을 저장할 변수 초기화
best_config = {}  # 최대 ARI Score일 때의 설정값을 저장할 딕셔너리 초기화

# 최적의 조합을 찾기 위한 반복문
for max_features in range(10, 101, 10):  # TF-IDF 벡터화의 max_features 값을 10부터 100까지 10단위로 조정
    for num_clusters in range(2, 21):  # K-Means 클러스터의 n_clusters 값을 2부터 20까지 조정
        # TF-IDF 벡터화 수행
        tfidf_vectorizer = TfidfVectorizer(max_features=max_features)
        tfidf_matrix = tfidf_vectorizer.fit_transform(question_data['question'])

        # K-Means 클러스터링 수행
        kmeans = KMeans(n_clusters=num_clusters, random_state=42)
        question_data['cluster'] = kmeans.fit_predict(tfidf_matrix)

        # ARI Score 계산
        ari_score = adjusted_rand_score(question_data['question'], question_data['cluster'])

        # 최대 ARI Score일 때의 설정값 업데이트
        if ari_score > best_ari_score:
            best_ari_score = ari_score
            best_config['max_features'] = max_features
            best_config['n_clusters'] = num_clusters

# 최적의 설정값과 최대 ARI Score 출력
print("Best Configuration:")
print(best_config)
print("Best ARI Score:", best_ari_score)

 

감사합니다.