Итак, я иметь эту таблицу:
Trans_ID Name Fuzzy_Value Total_Item
100 I1 0.33333333 3
100 I2 0.33333333 3
100 I5 0.33333333 3
200 I2 0.5 2
200 I5 0.5 2
300 I2 0.5 2
300 I3 0.5 2
400 I1 0.33333333 3
400 I2 0.33333333 3
400 I4 0.33333333 3
500 I1 0.5 2
500 I3 0.5 2
600 I2 0.5 2
600 I3 0.5 2
700 I1 0.5 2
700 I3 0.5 2
800 I1 0.25 4
800 I2 0.25 4
800 I3 0.25 4
800 I5 0.25 4
900 I1 0.33333333 3
900 I2 0.33333333 3
900 I3 0.33333333 3
1000 I1 0.2 5
1000 I2 0.2 5
1000 I4 0.2 5
1000 I6 0.2 5
1000 I8 0.2 5
и 2 пустые таблицы:
Table ITEMSET
"ITEM_SET" "Support"
Table Confidence
"ANTECEDENT" "CONSEQUENT"
Мне нужно найти значение FUZZY для каждого элемента, который встречается в каждой транзакции:
I1 = Sum of (Fuzzy_Value from item I1 in trans 100 until 1000 which is trans: 100,400,500,700,800,900,1000)/Total Trans
-> (.33333333+0.33333333+0.5+0.5+0.25+0.33333333+0.2)/10 = 0.244999999
I2 = Sum of (Fuzzy_Value from item I2 in trans 100 - 1000 which is trans:100,200,300,400,600,800,900,1000)/Total Trans
-> (0.33333333+0.5+0.5+0.33333333+0.5+0.25+0.33333333)/10 = 0.274999999
I3 -> 0.258333333
I4 -> 0.103333333
I5 -> 0.058333333
I6 -> 0.02
I8 -> 0.02
Для EX: я использую минимальную поддержку 10% -> 0,1
Мне нужно удалить I5, I6, I8, так как его значение <0,1 => шаг сокращения
, затем сохранить
I1=0.244999999, I2=0.274999999, I3=0.258333333,I4=0.103333333 on new table 'ITEMSET'
2 КОМБИНАЦИЯ
ПРИМЕЧАНИЕ: это основной 1-й шаг после этого, скорее всего, потребуется использовать повтор или рекурсивно, так как процесс будет продолжаться до тех пор, пока не станет невозможной другая комбинация элементов
, тогда из того, что осталось, мне нужно найти набор элементов K + 1 (который представляет собой набор элементов 2 комбинаций) => шаг соединения
{I1,I2} =Sum of (Fuzzy_Value from item I1 + I2 in trans 100 - 1000 which is trans:100,400,800,900,1000)/Total Trans
->(0.666666667+0.666666667+0.5+0.666666667+0.4)/9 = 0.29
*do the same for the rest*
{I1,I3} =(1+1+0.5+0.666666667)/9 = 0.316666667
{I1,I4} =(0.666666667+0.4)/9 = 0.106666667
{I2,I3} =(1+1+0.5+0.666666667)/9 = 0.316666667
{I2,I4} =(1+0.666666667+0.4)/9 =0.206666667
{I3,I4} =0
Затем Выполните еще один шаг сокращения , удалив значение менее 0,1, которое является {I3, I4}
Store {I1,I2} = 0.29, {I1,I3} = 0.316666667, {I1,I4} =0.106666667, {I2,I3} = 0.316666667, {I2,I4} = 0.206666667 AT "ITEMSET" TABLE
3 КОМБИНАЦИЯ
После этого выполните еще один ШАГ СОЕДИНЕНИЯ , объединяющий набор элементов, прошедший сокращение
{I1,I2,I3} = Sum of (Fuzzy_Value from item I1 + I2 +I3 in trans 100 - 1000 which is trans:800,900)/Total Trans
-> 0.75+1 = 0.175
**Same for the rest**
{I1,I2,I4} = 1+0.6 = 0.16
{I2,I3,I4} = 0
Выполните еще один шаг сокращения , удалив значение менее 0,1, которое является {I1, I3,I4}
Store {I1,I2,I3} = 0.176 AND {I1,I2,I4} = 0,16 AT "ITEMSET" TABLE
4 КОМБИНАЦИЯ
Объединить набор элементов, прошедших отсечение K + 4 (комбинация 4)
{I1,I2,I3,I4} = 0
**, поскольку после остановки процесса не осталось транзакций, содержащих этот элемент
, поскольку на этом этапе не осталось возможных комбинаций
точка в базе данных ITEMSET:
ITEM_SET Support
{I1} 0.244999999
{I2} 0.274999999
{I3} 0.258333333
{I4} 0.103333333
{I1,I2} 0.29
{I1,I3} 0.316666667
{I1,I4} 0.106666667
{I2,I3} 0.316666667
{I2,I4} 0.206666667
{I1,I2,I3} 0.176
{I1,I2,I4} 0,16
как мне закодировать это в sql? большое спасибо
* примечание: при необходимости вы можете добавить еще одну таблицу