<jupyter_start><jupyter_text>모형 결합의 기초model combining / ensemble methods복수의 예측 모형을 결합하여 더 나은 성능의 예측을 하려는 시도**효과**- 성능 분산이 감소 ( 과최적화 방지 )- 성능이 안좋은 개별 모형들의 경우, 결합 모형의 성능이 더 향상 (하지만 최소 0.5 이상이어야함) 취합 방법론사용할 모형의 집합이 결정된 상태로 시작. 모든 모형이 하나의(같은) 문제를 품- 다수결 (Majority Voting)- 배깅 (Bagging)- 랜덤 포레스트 (Random Forests) 부스팅 방법론사용할 모형을 점진적으로 늘려간다. 앞순서 모형이 못하는 부분을 다음 순서 모형이 풀게 한다.- 에이다부스트(Ada Boost)- 그레디언트 부스트(Gradient Boost)  다수결 방법가장 단순한 모형결합. 전혀 다른 모형도 결합 가능- hard voting : 단순 투표. 개별 모형의 결과 기준- soft voting : 가중치 투표. 개별 모형의 조건부 확률의 합 기준scikit`sklearn.ensemble.VotingClassifier(estimators, voting='hard', weights=None)`입력 인수:- `estimators` :개별 모형 목록, 리스트나 named parameter 형식으로 입력- `voting` : 문자열 {‘hard’, ‘soft’} (디폴트 ’hard’)hard voting 과 soft voting 선택- `weights` : 리스트사용자 가중치 ```ensemble = VotingClassifier(estimators=[('lr', model1), ('qda', model2), ('gnb', model3)],                             voting='soft', weights=[1, 1, 2])                            ```  결합을 통한 성능 향상 실험<jupyter_code>%matplotlib inline
def total_error(p, N):
    te = 0.0
    for k in range(int(np.ceil(N/2)), N + 1):
        te += sp.misc.comb(N, k) * p**k * (1-p)**(N-k)
    return te

x = np.linspace(0, 1, 100)
plt.plot(x, x, 'g:', lw=3, label="individual model")
plt.plot(x, total_error(x, 10), 'b-', label="voting model (N=10)")
plt.plot(x, total_error(x, 100), 'r-', label="voting model (N=100)")
plt.xlabel("performance of individual model")
plt.ylabel("performance of voting model")
plt.legend(loc=0)
plt.show()<jupyter_output>/home/mk/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:5: DeprecationWarning: `comb` is deprecated!
Importing `comb` from scipy.misc is deprecated in scipy 1.0.0. Use `scipy.special.comb` instead.
  """
{'fraction_non_alphanumeric': 0.15348837209302327, 'fraction_numerical': 0.021511627906976746, 'mean_word_length': 3.728021978021978, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '95186', 'license': 'MIT', 'n_tokens_mistral': 963, 'n_tokens_neox': 1178, 'n_words': 212, 'path': 'Past/DSS/Classification/10.model_combining.ipynb', 'repo_name': 'Moons08/TIL', 'size': '1720'}