active-learning-system
28
总安装量
28
周安装量
#13088
全站排名
安装命令
npx skills add https://github.com/dengineproblem/agents-monorepo --skill active-learning-system
Agent 安装分布
opencode
27
claude-code
27
github-copilot
27
codex
27
gemini-cli
25
replit
25
Skill 文档
Active Learning System Expert
ÐкÑпеÑÑ Ð¿Ð¾ ÑиÑÑемам акÑивного обÑÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¼Ð°Ñинного обÑÑениÑ.
ÐÑновнÑе ÑÑÑаÑегии
- Uncertainty Sampling: ÐÑÐ±Ð¾Ñ Ð¿ÑимеÑов Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÑÑей ÑвеÑенноÑÑÑÑ Ð¼Ð¾Ð´ÐµÐ»Ð¸
- Query by Committee: ÐÑполÑзование ÑазноглаÑий анÑамблÑ
- Expected Model Change: ÐÑÐ±Ð¾Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ инÑоÑмаÑивнÑÑ Ð¾Ð±ÑазÑов
- Diversity-based Selection: ÐокÑÑÑие пÑоÑÑÑанÑÑва пÑизнаков
ÐÑновной Ñикл акÑивного обÑÑениÑ
from modAL import ActiveLearner
from modAL.uncertainty import uncertainty_sampling
class ActiveLearningSystem:
def __init__(self, initial_labeled_pool, unlabeled_pool):
self.labeled_X, self.labeled_y = initial_labeled_pool
self.unlabeled_X = unlabeled_pool
self.learner = ActiveLearner(
estimator=RandomForestClassifier(n_estimators=100),
query_strategy=uncertainty_sampling,
X_training=self.labeled_X,
y_training=self.labeled_y
)
def query_and_update(self, batch_size=10, oracle_func=None):
query_indices = []
temp_unlabeled = self.unlabeled_X.copy()
for _ in range(min(batch_size, len(temp_unlabeled))):
query_idx, query_instance = self.learner.query(temp_unlabeled)
query_indices.append(query_idx)
temp_unlabeled = np.delete(temp_unlabeled, query_idx, axis=0)
queried_X = self.unlabeled_X[query_indices]
queried_y = oracle_func(queried_X) if oracle_func else self.simulate_oracle(queried_X)
self.learner.teach(queried_X, queried_y)
self.unlabeled_X = np.delete(self.unlabeled_X, query_indices, axis=0)
return query_indices, queried_X, queried_y
Query by Committee
class CommitteeActiveLearner:
def __init__(self, X_initial, y_initial):
self.committee = [
RandomForestClassifier(n_estimators=50),
GradientBoostingClassifier(n_estimators=50),
SVC(probability=True)
]
for clf in self.committee:
clf.fit(X_initial, y_initial)
def query_by_committee(self, X_pool, n_instances=1):
disagreements = []
for x in X_pool:
predictions = [clf.predict_proba([x])[0] for clf in self.committee]
avg_pred = np.mean(predictions, axis=0)
disagreement = -np.sum(avg_pred * np.log(avg_pred + 1e-10))
disagreements.append(disagreement)
selected_indices = np.argsort(disagreements)[-n_instances:]
return selected_indices, X_pool[selected_indices]
ÐониÑоÑинг пÑоизводиÑелÑноÑÑи
class ActiveLearningMonitor:
def track_performance(self, model, X_test, y_test, n_annotations):
accuracy = accuracy_score(y_test, model.predict(X_test))
self.performance_history.append(accuracy)
self.annotation_costs.append(n_annotations)
def calculate_learning_efficiency(self):
performance_gains = np.diff(self.performance_history)
annotation_increments = np.diff(self.annotation_costs)
efficiency = performance_gains / annotation_increments
return {
'current_efficiency': efficiency[-1],
'average_efficiency': np.mean(efficiency),
'efficiency_trend': np.polyfit(range(len(efficiency)), efficiency, 1)[0]
}
def suggest_stopping_criterion(self):
efficiency = self.calculate_learning_efficiency()
if efficiency['current_efficiency'] < 0.001:
return "Consider stopping - low marginal gains"
return "Continue learning"
ÐÑÑÑие пÑакÑики
СÑÑаÑÐµÐ³Ð¸Ñ Ñ Ð¾Ð»Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑÑаÑÑа
- ÐÑполÑзÑйÑе ÑÑÑаÑиÑиÑиÑованнÑÑ Ð²ÑбоÑÐºÑ Ð´Ð»Ñ Ð½Ð°ÑалÑного набоÑа
- ÐбеÑпеÑÑÑе пÑедÑÑавленноÑÑÑ Ð²ÑÐµÑ ÐºÐ»Ð°ÑÑов
- ÐаÑинайÑе минимÑм Ñ 5-10 пÑимеÑов на клаÑÑ
ÐпÑимизаÑÐ¸Ñ ÑазмеÑа баÑÑа
- ÐаленÑкие баÑÑи (5-20) Ð´Ð»Ñ Ð²ÑÑокой неопÑеделенноÑÑи
- ÐолÑÑие баÑÑи (50-100) Ð´Ð»Ñ Ð´Ð¾Ñогой анноÑаÑии
- УÑиÑÑвайÑе ÑÑÑалоÑÑÑ Ð°Ð½Ð½Ð¾ÑаÑоÑа
РаÑпÑоÑÑÑаненнÑе ловÑÑки
- ÐгноÑиÑование диÑбаланÑа клаÑÑов
- ЧÑезмеÑÐ½Ð°Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ Ð¾Ñ ÑвеÑенноÑÑи без калибÑовки
- ÐÑенебÑежение ÑоглаÑованноÑÑÑÑ Ð°Ð½Ð½Ð¾ÑаÑоÑов
- ÐеÑÑÐµÑ ÑÑма анноÑаÑии