Претрага мреже помоћу МЛфлов-а

Pretraga Mreze Pomocu Mlflov A



Хиперпараметри у моделима машинског учења су оптимизовани коришћењем приступа мрежи претраге. Корисник може брзо да упореди више поставки хиперпараметара и пронађе које од њих имају најбоље резултате јер МЛфлов прати резултате експеримената претраге мреже. У МЛфлов-у, експеримент претраживања мреже може се брзо делити са другим члановима тима. Користећи МЛфлов, може се применити најефикаснији модел из експеримента претраге мреже.

Предности Мрежне претраге

  • Аутоматско подешавање хиперпараметара: Претрага мреже аутоматизује подешавање хиперпараметара што омогућава систематско истраживање без ручних покушаја и грешака.
  • Репродуцибилност: Мрежна претрага осигурава валидност теста тако што се поновљиво добијају поновљиви резултати што побољшава комуникацију и поузданост.
  • Исцрпна претрага: ГС ефикасно проналази оптималне хиперпараметре за модел исцрпним претраживањем комбинација.
  • Робусност: Мрежно претраживање је робусна техника која је отпорна на буку података која смањује прекомерно прилагођавање.
  • Једноставан за употребу: Претрага мреже је једноставна за коришћење и разумевање што је чини одрживом методом за подешавање хиперпараметара.
  • Поређења модела: Претрага по мрежи поједностављује поређење модела и избор метрика за процену.

Недостаци Мрежне претраге

  • Рачунски трошкови: Претрага мреже је рачунски скупа за подешавање великог броја хиперпараметара.
  • Дуготрајан: За сложена подешавања хиперпараметара је потребно много времена.
  • Није увек потребно: Сада је увек потребно; насумична претрага је најбоља алтернатива томе.

Пример: Проналажење најбољих подешавања модела за систем пријема на универзитет

Хајде да погледамо пример претраге мреже за подешавање хиперпараметара унутар оквира онлајн система за упис на универзитет. У овом примеру користимо сцикит-леарн и директан класификатор за повећање градијента (ГБЦ) да бисмо предвидели вероватноћу да ће студент бити примљен на универзитет на основу фактора као што су ГПА бодови, САТ резултати, АЦТ резултати и ваннаставне активности. Више опција је доступно за претрагу мреже уместо ГБЦ, укључујући логистичку регресију (ЛР), СВМ (Машина за векторску подршку) итд.

Генеришите насумичне податке за онлајн систем за пријем користећи МЛфлов за претрагу мреже

Питхон-ове Панде и насумични пакети могу се користити за креирање фиктивног скупа података за систем за пријем. Са насумичним вредностима за колоне АПП_НО, ГПА, САТ Сцоре, АЦТ Сцоре, Ваннаставне активности и Статус пријема, овај код генерише синтетички скуп података за пријем. Променљива нум_студентс контролише колико редова има у скупу података.







Статус пријема је насумично постављен на основу стопе прихватања од 70%, а насумични модул се користи за производњу насумичних вредности за неколико колона. У сврху демонстрације, следећи део кода креира лажни скуп података о пријему са насумичним вредностима и чува се у датотеци стд_адмиссион_датасет.цсв:



Исјечак кода:



# Увезите Панда и Рандом библиотеке
увоз панде као панда_обј
импорт рандом као рандом_обј

# Подесите број записа за генерисање скупа података ученика
студент_рецордс = 1000

# Креирајте листе за чување података
стд_апплицатион_нумберс = [ 'АПЛИКАЦИЈА-' + стр(рандом_обј.рандинт( 1000 , 9999 )) за _ у опсегу(ученички_записи)]
стд_гпа = [роунд(рандом_обј.униформ( 2.5 , 4.0 ), 2 ) за _ у опсегу (записи_ученика)]
стд_сат_сцорес = [рандом_обј.рандинт( 900 , 1600 ) за _ у опсегу (записи_ученика)]
стд_ацт_сцорес = [рандом_обј.рандинт( двадесет , 36 ) за _ у опсегу (записи_ученика)]
стд_ектра_цуррицуларс = [рандом_обј.цхоице([ 'Да' , 'Не' ]) за _ у опсегу(ученички_записи)]

# Израчунајте статус пријема на основу насумичне стопе прихватања
стд_адмиссион_статус = [ 1 ако рандом_обј.рандом() < 0.7 друго 0 за _ у опсегу (записи_ученика)]

# Направите речник за чување података ученика
стд_дата = {

'АППЛИЦАТИОН_НО' : стд_апплицатион_нумберс,

'ПРОСЕК ОЦЕНА' : стд_гпа,

'САТ_Сцоре' : стд_сат_сцорес,

'АЦТ_Сцоре' : стд_ацт_сцорес,

'Ваннаставне активности' : стд_ектра_цуррицуларс,

'Пријемни статус' : стд_адмиссион_статус

}

# Креирајте ДатаФраме ДатаФраме_Студент из речника
ДатаФраме_Студент = панда_обј.ДатаФраме(стд_дата)

# Сачувајте ДатаФраме ДатаФраме_Студент у ЦСВ датотеку под називом стд_адмиссион_датасет.цсв
ДатаФраме_Студент.то_цсв( 'стд_адмиссион_датасет.цсв' , индек=Фалсе)
штампа ( „Подаци о ученицима успешно извезени у ЦСВ датотеку!“ )

Извршење кода:

Користите команду Питхон да преведете код, а затим користите команду пип да инсталирате одређени модул ако наиђете на грешку модула. Користите команду пип3 инсталл да бисте инсталирали дату библиотеку ако је Питхон верзија 3.Кс или новија.





Успешно извршење:



Снимак екрана примера података:

Корак 1: Увезите библиотеке

  • МЛфлов библиотека за праћење експеримената машинског учења
  • Пандас библиотека за руковање обрадом и анализом података, као и пакет млфлов.склеарн за интеграцију Сцикит-Леарн модела
  • Четврти ред увози библиотеку „упозорења“ да би се сузбиле грешке
  • Класа ПараметерГрид за претрагу мреже у модулу склеарн.модел_селецтион
  • ГридСеарцхЦВ и ГрадиентБоостингЦлассифиер из склеарн.модел_селецтион и енсембле, респективно, за претрагу мреже и моделе класификатора за повећање градијента
  • Функције аццураци_сцоре и цлассифицатион_репорт из модула склеарн.метрицс за израчунавање тачности модела и генерисање извештаја о класификацији
  • Код увози ОС модул и поставља променљиву окружења ГИТ_ПИТХОН_РЕФРЕСХ на тихо.

Исјечак кода:

# Корак-И Увезите потребне библиотеке
импорт млфлов
импорт млфлов.склеарн
увоз упозорења као упозорење
увоз панде као панда_обј
из склеарн.модел_селецтион импорт траин_тест_сплит као ттс, ПараметерГрид као пг, ГридСеарцхЦВ као гсцв
увози нас
из склеарн.енсембле импорт ГрадиентБоостингЦлассифиер као ГБЦ
из склеарн.метрицс импорт аццураци_сцоре као ацс, цлассифицатион_репорт као цр
ос.енвирон[ „ГИТ_ПИТХОН_РЕФРЕСХ“ ] = 'тихо'

Корак 2: Подесите УРИ за праћење

УРИ за праћење МЛфлов сервера је подешен помоћу функције млфлов.сет_трацкинг_ури(), чиме се обезбеђује локална машина на порту 5000 за експерименте и моделе.

млфлов.сет_трацкинг_ури( 'АБА596266490Д5ЦА22Д37ДБАБ459ФЦ4Е552Ц8АДД' )

Корак 3: Учитајте и припремите скуп података за пријем

Увезите Пандас библиотеку као панда_обј за манипулацију подацима и анализу. Функција реад_цсв() се примењује за учитавање скупа података о пријему. Путања до скупа података је једини аргумент који је потребан функцији реад_цсв(). Путања до скупа података у овој инстанци је стд_адмиссион_датасет.цсв. Коришћењем функције реад_цсв(), скуп података се учитава у Пандас ДатаФраме.

Колона Адмиссион_Статус из оквира података стд_адмиссионс_дата је прво уклоњена кодом. Пошто ова колона садржи циљну променљиву, претходна обрада није неопходна.

Затим, код креира две нове променљиве: „Ф“ и „т“. Карактеристике су садржане у променљивој „Ф“, док је циљна променљива садржана у променљивој „т“.

Подаци се затим дистрибуирају у скупове за тестирање и обуку. Ово се постиже помоћу функције ттс() из пакета склеарн.модел_селецтион. Карактеристике, циљна променљива, величина теста и насумично стање су четири аргумента која захтева функција ттс(). Параметар тест_сизе одређује део података који се користи у сврхе тестирања. Пошто је величина теста у овом случају постављена на 0,2, 20% података ће се користити за тест.

Опција рандом_стате специфицира семе генератора случајних бројева. Ово се ради како би се осигурало да су подаци насумично одвојени. Скупови за обуку и тестирање су сада ускладиштени у варијаблама Ф_траининг, Ф_тестинг, т_траининг и т_тестинг. Ови скупови се могу користити за евалуацију и обуку модела машинског учења.

Исјечак кода:

# Корак-3: Учитајте скуп података о пријему
стд_адмиссионс_дата = панда_обј.реад_цсв( 'стд_адмиссион_датасет.цсв' )

# Предобрадите податке и поделите их на карактеристике (Ф) и циљ (т)
Ф = стд_адмиссионс_дата.дроп([ 'Пријемни статус' ], ос = 1 )
т = стд_адмиссионс_дата[ 'Пријемни статус' ]

# Претворите категоричке променљиве у нумеричке користећи једнократно кодирање
Ф = панда_обј.гет_думмиес(Ф)
Ф_тренинг, Ф_тестирање, т_тренинг, т_тестирање = ттс(Ф, т, тест_сизе= 0.2 , рандом_стате= 42 )

Корак 4: Подесите назив експеримента МЛфлов

адм_екперимент_наме = „Универзитет_Пријем_Експеримент“
млфлов.сет_екперимент(адм_екперимент_наме)

Корак 5: Дефинишите класификатор за повећање градијента

Модел класификатора за повећање градијента је сада ускладиштен у променљивој гбц_обј. Скуп података о пријему може се користити за тестирање и обуку овог модела. Вредност аргумента рандом_стате је 42. Ово гарантује да је модел обучен коришћењем потпуно истог семена генератора случајних бројева што чини резултате поновљивим.

гбц_обј = ГБЦ(рандом_стате= 42 )

Корак 6: Дефинишите мрежу хиперпараметара

Код у почетку креира речник парам_грид. Хиперпараметри који се подешавају помоћу претраге мреже налазе се у овом речнику. Три кључа чине речник парам_грид: н_естиматорс, леарнинг_рате и мак_дептх. Ово су хиперпараметри модела класификатора који повећава градијент. Број стабала у моделу је одређен хиперпараметром н_естиматорс. Брзина учења модела је специфицирана преко хиперпараметра Леарнинг_рате. Хиперпараметар мак_дептх дефинише највећу могућу дубину стабала модела.

Исјечак кода:

парам_грид = {

'н_естиматорс' :[ 100 , 150 , 200 ],

'леарнинг_рате' :[ 0.01 , 0.1 , 0.2 ],

'мак_дептх' :[ 4 , 5 , 6 ]

}

7. корак: Извршите претрагу мреже помоћу МЛфлов Трацкинг-а

Код се затим понавља преко парам_грид речника. За сваки скуп хиперпараметара у речнику, код ради следеће:

  • Започиње ново покретање МЛфлов-а
  • Конвертује хиперпараметре у листу ако већ нису листа
  • Записује хиперпараметре у МЛфлов
  • Обучава модел претраживања мреже са наведеним хиперпараметрима
  • Добија најбољи модел из претраге мреже
  • Прави предвиђања о подацима тестирања који раде као најбољи модел
  • Израчунава тачност модела
  • Штампа извештај о хиперпараметрима, тачности и класификацији
  • Записује тачност и модел у МЛфлов

Исјечак кода:

са варн.цатцх_варнингс():
варн.филтерварнингс( 'игнорисати' , категорија=Упозорење корисника, модул= '.*дистутил.*' )
за параметре у пг(парам_грид):
са млфлов.старт_рун(рун_наме= „Пријемни_Статус Рун“ ):
# Претворите појединачне вредности у листе
парамс = {кључ: [вредност] ако није исинстанца(вредност, листа) елсе вредност за кључ, вредност у парамс.итемс()}
млфлов.лог_парамс(парамс)
грид_сеарцх = гсцв(гбц_обј, парам_грид=парамс, цв= 5 )
грид_сеарцх.фит(Ф_траининг, т_траининг)
стд_бест_модел = грид_сеарцх.бест_естиматор_
модел_предицтионс = стд_бест_модел.предицт(Ф_тестинг)
модел_аццураци_сцоре = ацс(т_тестинг, модел_предицтионс)
штампа ( 'Хиперпараметри:' , парамс)
штампа ( „Тачност:“ , модел_аццураци_сцоре)
# Експлицитно игноришите УндефинедМетрицВарнинг
са варн.цатцх_варнингс():
варн.филтерварнингс( 'игнорисати' , категорија=Упозорење)
штампа ( „Извештај о класификацији:“ )
принт(цр(т_тестинг, модел_предицтионс, зеро_дивисион= 1 ))
млфлов.лог_метриц( 'тачност' , модел_аццураци_сцоре)
млфлов.склеарн.лог_модел(стд_бест_модел, 'гб_цлассифиер_модел' )

Корак 8: Извршите програм користећи Питхон

Ево излаза на МЛфлов серверу:

Закључак

МЛфлов-ов алат за претрагу мреже аутоматизује подешавање, праћење резултата и модификовање хиперпараметара у моделима машинског учења. Помаже у одређивању идеалних хиперпараметара и осигурава поуздане резултате, али може бити рачунски скупо за опсежне експерименте хиперпараметара.