候補排除アルゴリズムは、与えられたトレーニング データから概念を学習するために使用される帰納的推論に基づく機械学習アルゴリズムです。その目的は、トレーニング データ内のすべてのインスタンスを最も一般的な概念の説明、つまり「概念学習」のプロセスに要約することです。
候補除去アルゴリズムの基本的な考え方は、最も具体的な概念の説明と最も一般的な概念の説明を初期化し、最も一般的な概念が最終的に得られるまでそれらを徐々に変更することです。 . 説明、求められるコンセプト。
具体的には、アルゴリズムのステップは次のとおりです:
1. 最も特殊な概念の説明と最も一般的な概念の説明を初期化します。
最も特殊な概念の説明 S0: すべての属性値を「?」に初期化し、不確実性を示します。
#最も一般的な概念概念の説明 G0: すべての属性の初期化 値はすべて「∅」に初期化されます。これは、属性値が含まれていないことを意味します。
2. 学習インスタンスごとに、以下の処理を実行します:
①インスタンスが肯定的な例である場合 (目的の概念に属する) 、最も特殊な概念の説明 S と最も一般的な概念の説明 G を更新します:
S の各属性について、インスタンスの属性値が S の対応する属性値と異なる場合, then S G の属性値を "?" に変更します;
G の各属性について、インスタンスの属性値が G の対応する属性値と異なる場合、 G の属性値が変更されます 属性値がインスタンスの属性値に変更されます。
② インスタンスが反例 (必要な概念に属さない) の場合、最も一般的な概念の説明 G:
のみを更新します。 G の各属性について、インスタンスの属性値が G の対応する属性値と同じである場合、G の属性値を「?」に変更します。
最終的に得られる最も一般的な概念の説明が、目的の概念です。
以下では、簡単な例を使用して、候補除外アルゴリズムの適用プロセスを説明します。次の 5 つのトレーニング例から概念を学習したいとします。
アルゴリズムのステップに従って、最初に最も具体的な概念の説明と最も一般的な概念の説明を初期化します。
S0:
G0:
その後各トレーニングについて、たとえば次のように進めます。
例 1: 必須の概念に属しているため、S と G を更新します。
# #S1:
G1:
例 2: これは必須の概念に属します。 S と G を更新します:
#S2: G2: 例 3: 必須の概念に属していないため、G のみが更新されます: S3: G3:#例 4: 必須の概念に属さないため、G のみが更新されます:
##S4: G4: 例 5:これは必須の概念に属しているため、S と G を更新します。 :##S5:
G5:
#最終的に得られた最も一般的な概念の説明は次のとおりです:
## つまり「水生」です。 次は、候補排除アルゴリズムを実装する Python コードです:import numpy as np def candidate_elimination(examples): # 初始化最特殊概念描述和最一般概念描述 S = np.array(['?' for _ in range(len(examples[0]) - 1)]) G = np.array(['∅' for _ in range(len(examples[0]) - 1)]) # 对于每个训练实例,进行如下处理 for i, example in enumerate(examples): x, y = example[:-1], example[-1] if y == '是': # 正例 # 更新最特殊概念描述S和最一般概念描述G for j in range(len(x)): if S[j] != '?' and S[j] != x[j]: S[j] = '?' G[j] = x[j] if S[j] == '?' else S[j] else: # 反例 # 只更新最一般概念描述G for j in range(len(x)): if S[j] != '?' and S[j] != x[j]: G[j] = S[j] # 打印每次迭代的结果 print(f'第{i+1}次迭代:S={S}, G={G}') # 最终得到的最具一般性的概念描述即为所求概念 concept = G if G[0] != '∅' else S return concept
以上がPythonで実装された候補除外アルゴリズムの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。