EXEC sp_rename
@objname = 'MY_TABLE.COULMN_NAME',
@newname = 'COLUMN_NAME',
@objtype = 'COLUMN'
@objname = 'MY_TABLE.COULMN_NAME',
@newname = 'COLUMN_NAME',
@objtype = 'COLUMN'
Get fun!
Are you developer? Are you going to succeed in your career? Get ready, setup your goals, and follow this blog, which talks on different tech stuff (mostly .NET) and stuff that you may need to know to become successful.
AGE | COMPETITION | TYPE | PROFIT ========================================= old | yes | swr | down (False in my impl) --------+-------------+---------+-------- old | no | swr | down --------+-------------+---------+-------- old | no | hwr | down --------+-------------+---------+-------- mid | yes | swr | down --------+-------------+---------+-------- mid | yes | hwr | down --------+-------------+---------+-------- mid | no | hwr | up (True in my impl) --------+-------------+---------+-------- mid | no | swr | up --------+-------------+---------+-------- new | yes | swr | up --------+-------------+---------+-------- new | no | hwr | up --------+-------------+---------+-------- new | no | swr | up --------+-------------+---------+--------
Age
/ | \
/ | \
new/ |mid \old
/ | \
True Competition False
/ \
/ \
no/ \yes
/ \
True False
Age
/ | \
/ | \
new/ |mid \old
/ | \
True Competition False
/ \
/ \
no/ \yes
/ \
True False
| Reactions: |
============+======================= небо | сонячно, хмарно, дощ ------------+----------------------- температура | значення ------------+----------------------- вологість | значення ------------+----------------------- вітряно | так, ні ============+=======================
НЕБО | ТЕМПЕРАТУРА | ВОЛОГІСТЬ | ВІТРЯНО | ГРАТИ? ===================================================== сонячно| 30 | 85 | ні | Не грати сонячно| 27 | 90 | так | Не грати хмарно | 28 | 78 | ні | Грати дощ | 21 | 96 | ні | Грати дощ | 20 | 80 | ні | Грати дощ | 18 | 70 | так | Не грати хмарно | 18 | 65 | так | Грати сонячно| 22 | 95 | ні | Не грати сонячно| 21 | 70 | ні | Грати дощ | 24 | 80 | ні | Грати сонячно| 24 | 70 | так | Грати хмарно | 22 | 90 | так | Грати хмарно | 27 | 75 | ні | Грати дощ | 22 | 80 | так | Не гратиЗауважмо, що дві властивості мають недетерміновані значення - температура і вологість. ID3 алгоритм не може напряму мати справу із такими випадками, але є модифікації, які дозволють йому працювати із такими значеннями. Дерева прийняття рішень важливі не тільки тому, що вони дозволяють узагальнити те, що ми знаємо, або відомий набір даних для навчання, але тому, що ми можемо сподіватися на те, що алгоритм правильно скласифікує нові, невідомі випадки. Таким чином коли ми будуємо класифікаційну модель (дерево), ми повиння мати дані для навчання і дані для перевірки правильності побудованої моделі.
ВЛАСТИВІСТЬ | МОЖЛИВІ ЗНАЧЕННЯ ============+======================= вік | старий, середній, новий ------------+----------------------- конкуренція | ні, так ------------+----------------------- тип | ПЗ, "залізо" ------------+----------------------- і дані для навчання такі: ВІК | КОНКУРЕНЦІЯ | ТИП | ВИРУЧКА ========================================= старий | так | ПЗ | низька --------+-------------+---------+-------- старий | ні | ПЗ | низька --------+-------------+---------+-------- старий | ні | залізо | низька --------+-------------+---------+-------- сер. | так | ПЗ | низька --------+-------------+---------+-------- сер. | так | залізо | низька --------+-------------+---------+-------- сер. | ні | залізо | висока --------+-------------+---------+-------- сер. | ні | ПЗ | висока --------+-------------+---------+-------- новий | так | ПЗ | висока --------+-------------+---------+-------- новий | ні | залізо | висока --------+-------------+---------+-------- новий | ні | ПЗ | висока --------+-------------+---------+--------Основні концепції алгоритму ID3 такі:
I(P) = -(p1*log(p1) + p2*log(p2) + .. + pn*log(pn))Для прикладу, якщо P є (0.5, 0.5) тоді I(P) рівне 1, якщо P є (0.67, 0.33) тоді I(P) рівне 0.92, а якщо P є (1, 0) тоді I(P) дорівнює 0. [Зауважте, що чим більш подібні ймовірності в розподілі, тим більша є інформативність]Якщо множина T записів є розбита на виокремлі класи C1, C2, .., Ck базуючись на значенні категоризаційної властивості, тоді інформація, необхідна для ідентифікації класу елемента із множини Т є Info(T) = I(P), де P є ймовірнісний розподіл розбиття (C1, C2, .., Ck):
P = (|C1|/|T|, |C2|/|T|, ..., |Ck|/|T|)В нашому прикладі гри в гольф, ми отримуємо Info(T) = I(9/14, 5/14) = 0.94,
|Ti|
Info(X,T) = СУМА по i від 1 до n ---- * Info(Ti)
|T|
У випадку гри в гольф, для властивості Небо, ми маємо:
Info(Outlook,T) = 5/14*I(2/5,3/5) + 4/14*I(4/4,0) + 5/14*I(3/5,2/5) = 0.694Дамо означення приросту інформації Gain(X,T) як
Gain(X,T) = Info(T) - Info(X,T)Це представляє різницю між інформацією необхідною для визначення елемента із Т і інформації необхідної для визначення елемента із Т, після того, якщо значення властивості Х було визначено, іншими словами приріст інформації завдяки відомості властивості Х.
Gain(Outlook,T) = Info(T) - Info(Outlook,T) = 0.94 - 0.694 = 0.246.Якщо взяти властивість Вітряно, ми отримаємо такі значення Info(Windy,T) = 0.892 та Gain(Windy,T) = 0.048. Таким чином Небо надає більше інформаційного приросту аніж Вітряно.
function ID3 (R: множина некатегоризаційних властивостей,
C: категоризаційна властивість,
S: множина для навчання) returns дерево прийняття рішень;
begin
Якщо S пуста, повернути один вузол із значенням невдача;
Якщо S складаєтсья із рядків, для яких значення категоризаційної
властивості одне й те ж,
повернути єдиний вузол із тим значенням;
Якщо R пуста, тоді повернути єдиний вузол із значенням, яке є
найбільш частішим серед значень катеригоційної властивості,
що було знайдено серед рядків S;
Нехай D є властивістю із найбільшим приростом Gain(D,S)
серед властивостей в множині R;
Нехай {dj| j=1,2, .., m} - значення властивості D;
Нехай {Sj| j=1,2, .., m} - підмножини S, що включають
відповідні рядки із значенням dj для властивості D;
Повернути дерево із коренем поміченим D і дуги позначені
d1, d2, .., dm що продовжуються наступними деревами
ID3(R-{D}, C, S1), ID3(R-{D}, C, S2), .., ID3(R-{D}, C, Sm);
end ID3;
Небо
/ | \
/ | \
хмарно / |сонячно \дощ
/ | \
Грати Вологість Вітряно
/ | | \
/ | | \
<=75 / >75| так| \ні
/ | | \
Грати Не грати Не грати Грати
В прикладі із магазинним складом дерево буде:
Вік
/ | \
/ | \
нов/ |сер \старе
/ | \
Вис Competition Низька
/ \
/ \
ні/ \так
/ \
Вис Низька
Gain(D,T)
GainRatio(D,T) = ----------
SplitInfo(D,T)
де SplitInfo(D,T) є інформація у відповідності до розбиття T на основі
значень категоризаційної властивості D. Таким чином SplitInfo(D,T) є
I(|T1|/|T|, |T2|/|T|, .., |Tm|/|T|)
де {T1, T2, .. Tm} є розбиття множини T продуковане значенням D.
У випадку нашої гри в гольф SplitInfo(Outlook,T) рівне
-5/14*log(5/14) - 4/14*log(4/14) - 5/14*log(5/14) = 1.577
таким чином GainRatio для Небо буде 0.246/1.577 = 0.156. І
SplitInfo(Windy,T) буде
-6/14*log(6/14) - 8/14*log(8/14) = 6/14*0.1.222 + 8/14*0.807 = 0.985
отже, GainRatio для Вітряно є 0.048/0.985 = 0.049
Ми рухаємося від кореня Небо до вузла Вологість проходячи дугу іменовану 'сонячно'. В цій позиції, оскільки ми не знаємо значення Вологості ми спостерігаємо, що якщо вологість є менша за 75 є тільки два рядки коли слід грати, і якщо вологість є більша ніж 75 тоді є три рядки коли не слід грати. Таким чином ми можемо дати відповідь для рядка із ймовірностями (0.4, 0.6) грати або ж не грати.Ми можемо мати справу із недетермінованими властивостями наступним чином. Припустимо що атрибут Ci є недетермінованим (число як для вологості). Ми визначаємо значення для цього атрибуту в множині для навчання. Скажімо ми маємо посортовані значення, A1, A2, .., Am. Тоді для кожного значення Aj, j=1,2,..m, ми розбиваємо рядки на такі, які менці за Aj, і такі які більші за Aj. Для кожного із розбиттів ви рахуємо приріст, або зважений приріст, і вибираємо таке розбиття, яке максимізує приріст.
Колір
/ \
червоний/ \синій
/ \
Успіх Невдача
було визначено за допомогою одного успішного червоного рядка і двох невдалих синіх рядків, нагадаємо що ці рядки були із навчальних даних, а потім у тестових даних ми виявили три червоні невдачі і один синій успіх, ми можемо застосувати зміну цілого піддерева одним листком невдачі. Таким чином після заміни ми будемо мати лише тві помилки замість п"яти.| Reactions: |
| Reactions: |
| Reactions: |
![]() |
I'm very pragmatic and self-improving person. My goal is to become successful community developer. Mail: andriybuday (gmail)
|
| Follow @andriybuday |