Алгоритм FIND-S - простой вопрос

Алгоритм FIND-S, вероятно, является одним из самых простых алгоритмов машинного обучения. Тем не менее, я не могу найти много примеров. Просто стандартные "солнечные, дождливые, игровые" примеры, которые всегда использовались в машинах. Пожалуйста, может кто-нибудь помочь мне с этим приложением (его вопрос экзамена по экзамену в машинное обучение).

Гипотезы имеют вид a <= x <= b, c <= y <= d где x и y - точки в плоскости x,y, а c и d - любое целое число. В принципе, эти гипотезы определяют прямоугольники в пространстве x,y.

Это примеры обучения, где - - отрицательный пример, а + - положительный пример, а пара - это координаты x,y:

 + 4, 4
 + 5, 3 
 + 6, 5 
 - 1, 3 
 - 2, 6 
 - 5, 1 
 - 5, 8 
 - 9, 4

Все, что я хочу сделать, это применить FIND-S к этому примеру! Это должно быть просто! Либо некоторые подсказки, либо решение будут потрясающими.

Спасибо.

Ответы

Ответ 1

Find-S ищет самую ограничительную (т.е. самую "конкретную" ) гипотезу, которая подходит ко всем положительным примерам (отрицательные значения игнорируются).

В вашем случае есть очевидная графическая интерпретация: "найдите наименьший прямоугольник, содержащий все" + "координаты"...

hypothesis space

..., который будет равен a = 4, b = 6, c = 3, d = 5.

Алгоритм для этого будет примерно таким:

Define a hypothesis rectangle h[a,b,c,d], and initialise it to [-,-,-,-]
for each + example e {
    if e is not within h {
        enlarge h to be just big enough to hold e (and all previous e's)
    } else { do nothing: h already contains e }
}

Если мы пройдем через это с вашим набором тренировок, мы получим:

 0. h = [-,-,-,-] // initial value
 1. h = [4,4,4,4] // (4,4) is not in h: change h so it just contains (4,4)
 2. h = [4,5,3,4] // (5,3) is not in h, so enlarge h to fit (4,4) and (5,3)
 3. h = [4,6,3,5] // (6,5) is not in h, so enlarge again
 4. // no more positive examples left, so we're done.