- Python кітапханаларын Jupyter жазу кітапшасында пайдаланып машиналық оқыту моделін оқыту
- Машиналық оқытудың оқытылған моделін Streamlit веб-бағдарламасына қосу
Бұл сабаққа арналған іс-шаралар:
МАШИНАЛЫҚ ОҚЫТУ МОДЕЛЬДЕРІМЕН ЖҰМЫС ІСТЕУ
Jupyter Notebooks, Python, және Streamlit-тің тағы бір негізгі ерекшелігі машиналық оқыту модельдерін үйрету және болжамдар жасау мүмкіндігі болып табылады.
Егер сіз жасанды интеллектпен жаңадан таныс болсаңыз, мұнда қамтылған жетілдірілген кодтауға өтпес бұрын негіздерді үйрену үшін осы оқу жоспарындағы AI сабақтарын көргіңіз келуі мүмкін. Үлгіні жасау және оны әлі де Python веб-бағдарламасына қосу үшін Teachable Machine сияқты пайдаланушыға ыңғайлы машиналық оқыту үлгісі платформасын пайдалануға болады.
Егер сізде Jupyter Notebooks көмегімен жасанды интеллект және деректер жиынтығымен жұмыс істеу тәжірибесі бар болса, бұл сіз үшін жақсы келесі қадам.
Бұл сабақта Python машиналық оқыту кітапханаларының кейбірі және Python көмегімен жасауға болатын машиналық оқытудың кейбір модельдері туралы білесіз.
Шолу үшін машиналық оқыту моделін жасау үшін 3 негізгі бөлім бар.
ДЕРЕКТЕР ЖИЫНЫ
ОҚУ АЛГОРИТМІ БАР ҮЛГІЛЕРДІ ТАБАДЫ
БОЛЖАУ!
Деректер жинағы үлгіге арналған кірісіңіз болып табылады. Ол мәтінді, кескіндерді, дыбыстарды немесе позаларды қамтуы мүмкін. Біз Jupyter Notebooks көмегімен 2-бөлімде мәтіндік және сандық деректермен жұмыс жасадық. Біз бұл сабақта мәтіндік деректермен жұмысты кесте түрінде жалғастырамыз.
Үлгілерді табу шын мәнінде деректер жиынтығын пайдалана отырып, машиналық оқыту моделін құру болып табылады. Python деректерден AI моделін құратын көптеген кітапханаларды қамтиды. Бұл оқу бағдарламасында scikit-learn пакетінен көптеген функцияларды қолданатын боламыз. Ол ұсынатын кітапханалардан басқа, веб-сайтта машиналық оқыту және модельдерді құру процесі туралы көптеген тамаша мәліметтер бар. Көп нәрсені үйрену – үлкен ресурс!
Үлгіңізді жасағаннан кейін үлгіні жаңа ақпарат негізінде нәтижені болжау үшін пайдалануға болады. Тағы да Python бұған мүмкіндік беретін кітапханаларды ұсынады.
АЛДЫН АЛА ӨҢДЕУ ДЕРЕКТЕРІ
Деректер жиыны үлгіні құру алгоритміне жіберілмес бұрын, оны алдын ала өңдеу немесе үлгі жасау алгоритмі онымен жұмыс істеп, ең дәл үлгіні мүмкін ету үшін «тазарту» қажет. Iс жүзiнде машиналық оқыту моделiн жасау жөнiндегi жұмыстың негiзгi бөлiгi алдын ала өңдеуде. Ненің маңызды екенін, нені қалдыруға болатынын және неден тазарту керектігін шешу үшін деректерге мұқият қарау қажет болады.
Алдын ала өңдеу немен байланысты? Мәтінге негізделген деректер жиынтығымен мына жерде шешуге арналған кейбір нәрселер берілген.
Нөл мәндері
Кейде деректер жиынында бос немесе бос мәндер болады, әсіресе деректер сауалнама деректері болса. Кейде нөлдік деректері бар жолдарды жоясыз.
Алайда үлгілер саны аз болса, оларды жойғыңыз келмеуі мүмкін. Тағы бір параметр - нөлдік мәнді қандай да бір басқа мәнмен ауыстыру. Ол нөлге тең болуы мүмкін, немесе сол өріс үшін барлық басқа мәндердің орташа мәні болуы мүмкін.
Аутлерлер
Кейде деректерде қалған деректерден өте өзгеше бір-екі үлгі болады. Бұл үлгіні қисайтуы мүмкін. Аутсорстың үлгінің қалай жасалғанына әсер етуін қаламайсыз, сондықтан деректер жиынынан жиі аутсорсниттер жойылады.
Мысалы, сізде деректер жиынтығы болуы мүмкін, онда үлгілердің 95%-ын 10-30 жастағы адамдар құрайды, бірақ сізде адамдар 50 жастан асқан бірнеше кездейсоқ үлгілер бар. Үлгілердің басым көпшілігі 10-30 жас тобына кіретіндіктен, үлгілерді үлкен жас тобынан алып тастау мәселесін қарастыруға болады.
Стандарттау
Көбіне үлкен деректер жиынындағы сандар қандай мүмкіндіктер ұсынылғанына байланысты өзгеріп отырады. Мысалы, сізде жасы 0-ден 70-ке дейін өзгеріп отыруы мүмкін, бірақ кейін жалақыңыз болуы мүмкін, ол 0-ден 500 мыңға дейін болады! Таразылар өте өзгеше, сондықтан үлгіде бір мүмкіндік көбірек санауы мүмкін.
Түзету үшін деректерді бір масштабта болатындай стандарттауға болады. scikit-learn StandardScaler ұсынады, ол әрбір мүмкіндікті жаңартып отырады, осылайша орташа мәні 0 және стандартты ауытқу 1.
Тағы бір мәселе – әрбір сынып немесе заттаңба үшін үлгілердің теңдестірілген саны. Деректер жиынында әр сыныптың саны бірдей екеніне көз жеткізгіңіз келеді.
Кодтау
ИСК сандарды ұнатады, міндетті түрде сөздер емес. Сондықтан барлық деректердің сандарға түрлендіріліп тұруына көмектеседі. scikit-learn кодтаушы функцияларын қамтамасыз етеді, сондықтан мүмкін болатын мәтін мәндерінің ауқымын сандар ауқымына оңай түрлендіруге болады.
Үлгі мәндері отырықшы, жеңіл, орташа, жоғары белсенділік деңгейі мысал бола алады. Бұл жауаптарды 0, 1, 2 және 3 мәндері деп кодтауға болар еді, бұл үлгі құрылыс алгоритмінің өңдеуі әлдеқайда жеңіл.
ДЕРЕКТЕРДІ БӨЛУ
Деректерді алдын ала дайындағаннан кейін оны оқу жиынына және тестілеу жиынтығына бөлу қажет. Оқу жиыны модельді дайындау және жасау үшін пайдаланылатын болады. Содан кейін оның қалай орындалатынын көру үшін тест жиынын пайдаланып үлгіні тексересіз.
Оны бөлудің стандартты жолдары бар (әдетте оқыту үшін 75%, тестілеу үшін 25%) бірақ оны қалағаныңызша бөлуге болады. Тағы да функциялар ұсынылады, осының бәрі сіздер үшін автоматтандырылған.
ҮЛГІНІ ЖАСАУ
Келесі қадам – үлгіні жасау. Бұл үлкен шешім, қандай алгоритмді қолданамын? Таңдау үшін көптеген түрлі жетекшілік ететін оқыту алгоритмдері бар, қайсысын пайдалану керектігін білу қиын. Жақсы процесс - бірнеше түрлі алгоритмдерді байқап, содан кейін қайсысы сізге ең жақсы дәлдік беретінін көру.
Бірінші қадам - сізге жіктеу алгоритмі немесе регрессия алгоритмі қажет пе екенін шешу. Бұл сіз болжауға тырысатын нәрсеге байланысты.
Жіктеу алгоритмдері дискретті мақсаттарды немесе сыныптарды болжау үшін қолданылады. Мысалы, электрондық поштаны спам немесе спам ретінде жіктеу жіктеу мәселесі болады
Регрессия алгоритмдері үздіксіз диапазон бойында жатқан нәрсені болжау үшін қолданылады. Мысалдардың бірі адамның қанша жалақы төлейтінін болжау болар еді. Болжам сандар ауқымы болып табылады және шығыс сол ауқым бойындағы кез келген мән болуы мүмкін.
Мұнда модель жасау алгоритмдерінің бірнеше танымал түрлері ғана берілген.
Классификация
- Шешім ағашы
- Кездейсоқ орман
- K-Ең жақын көршілер
- Аңғал Бейс
- Логистикалық регрессия
- Векторлық машинаны қолдау
Регрессия
- Сызықтық регрессия
- Жота регрессиясы
- Лассо-Регрессия
- Полиномиялық регрессия
- Байестік сызықтық регрессия
- Қолдау Векторының регрессиясы
Кейбір алгоритмдердің екі түрдің астына түсетінін ескеріңіз. Мысалы, Шешім ағашының жіктеуіші, сондай-ақ Шешім ағашының регрессоры бар. Ал Тірек векторлық машина жіктеу үшін жұмыс істейді, ал Регрессияға арналған тірек Векторлық регрессия жұмыс істейді.
Сонымен, қайсысын пайдалану керектігін қалай шешесіз? Үлгі үшін не болуы мүмкін екенін көру үшін басқа деректер ғалымдарының әр түрлі жағдайлар үшін не пайдаланатынын көру үшін зерттеу қажет. Сондай-ақ, деректеріңізбен әр түрлі алгоритмдерді байқап, қайсысы ең жақсы дәлдікті қамтамасыз ететінін табуыңыз қажет. Сондай-ақ, нақтырақ үлгіні қайтаратынын көру үшін белгілі бір алгоритм параметрлерін әлсіретуге болады.
scikit-learn осы алгоритмдердің барлығына функцияларды қамтамасыз етеді, сондықтан үлгіні жасау оңай.
ҮЛГІНІ БАҒАЛАУ
Модельдің ең жақсы болуын қалайсыз, сондықтан оның өнімділігін бағалау керек. Модельді бағалаудағы екі жалпы айнымалы мән – қиғаштық және дисперсия.
Біржақтылық -модельдің болжамды мәні мен дұрыс мәнінің арасындағы айырмашылық.
Дисперсия — әр түрлі деректерді пайдаланғанда болжамдардың қаншалықты өзгеретіні.
Сіз қиғаштық пен дисперсия арасындағы жақсы тепе-теңдікке қол жеткізгіңіз келеді.
Жоғары бейімділік -> сәйкес келмеуі.
Жаттығу деректеріндегі шуды есепке алу үшін модель тым қарапайым болған кезде, жеткіліксіз орнату орын алады. Бұл деректер жеткіліксіз немесе мүмкіндіктер (бағандар) жеткіліксіз болса немесе деректерде тым көп шу болса орын алуы мүмкін. Модель оқу деректерінде де, сынақ деректерінде де жақсы жұмыс істемесе, ол сәйкессіздікті көрсетеді.
Жоғары дисперсия -> қайта даярлау
Модельді деректердің бір жинағында жаттықтырсаңыз және ол өте жақсы жұмыс істесе, шамадан тыс орнату орын алады, бірақ оны жаңа деректермен ұсынсаңыз, ол мүлде жақсы жұмыс істемейді. Бұл модель тым күрделі болса және ол жаттығу деректеріне тым жақын орналасуға тырысса орын алуы мүмкін. Модель жаттығу деректерінде өте жақсы болжауы мүмкін, бірақ содан кейін тестілеу деректерінде нашар жұмыс істейді.
Модельдің жұмыс қабілеттілігін тексерудің бір техникасы айқаспалы валидация болып табылады.
Айқаспалы валидация дегеніміз әр уақытта оқыту/тестілеу деректерінің әр түрлі бөлінулерін пайдалана отырып, модельді бірнеше рет оқытуды білдіреді. Деректер жиыны бірнеше қатпарларға немесе ішкі жиындарға бөлінген. Содан кейін валидация немесе сынақ жиыны ретінде бір бүктеме жүргізіледі, ал қалған қатпарлар оны оқыту үшін пайдаланылады. Бұл бірнеше рет орындалады, сондықтан жаттығулар мен тесттер жиынтығы өзгеріп тұрады.
scikit-learn сонымен қатар кітапхана көрсеткіштерін қамтамасыз етеді, осылайша үлгілеріңіз үшін өнімділік ұпайларын оңай алуға болады.
- дәлдік балы = дұрыс болжамдар/жалпы болжамдар
- дәлдік = нағыз позитивтер/(нағыз позитивтер + жалған позитивтер)
- еске түсіру = нағыз позитивтер/(шынайы позитивтер + жалған негативтер)
- F1 ұпай = (2 x дәлдік x еске түсіру)/(дәлдік + еске түсіру)
- ерекшелік = шынайы теріс/ (нағыз позитивтер + жалған негативтер)
- шатастыру матрицасы — шынайы жағымды, шынайы теріс, жалған оң және жалған теріс санды көрсетеді
Әр түрлі алгоритмдерден көрсеткіштерді тексере отырып, ең жақсы үлгіні таңдауға болады.
БОЛЖАУ!
Сізде көңіліңізден шығатын үлгі болған соң, оны қолданбаңызда пайдаланғыңыз келеді.
Jupyter Notebooks сияқты ортада Python арқылы үлгіні алдын ала өңдеу, жасау және бағалауды орындау әдеттегі тәжірибе. Сол жерден үлгіңізді файл ретінде экспорттай аласыз.
Содан кейін Streamlit бағдарламасының ішінде үлгіні жүктеп, оны болжамдар жасау үшін пайдалана аласыз.
Бұл сабақтың тапсырмаларында инсульт қаупі туралы деректер жиынтығын пайдалана отырып, осы процессті өтесіз. Деректерді алдын ала өңдеу, әртүрлі алгоритмдерді пайдаланып үлгілер жасау әдісін көресіз, содан кейін кейбір енгізу сипаттамаларын ескере отырып, инсульт қаупін болжау үшін қарапайым Streamlit бағдарламасында үлгіні пайдаланасыз.
1-ӘРЕКЕТ: JUPYTER ДӘПТЕРІНДЕ AI МОДЕЛІН ОҚЫТУ
AI моделін құру үшін инсульт қаупі туралы деректер жиынтығын зерттеу
- Kaggle-ден инсультті болжау деректер жиынтығын жүктеп алыңыз.
- Jupyter жазу кітапшасындағы деректермен жұмыс істеу:
- Деректерді қарап шығу
- Үлгіге дайындау үшін деректерді алдын ала өңдеу
- Бірнеше түрлі модельдер жасаңыз
- Қолданба үшін үлгіні бағалау және таңдау
- Үлгіні экспорттау
CHALLENGE
Jupyter жазу кітапшасындағы үлгіден басқа үлгіні байқап көріңіз.
- Scikit-learn веб-сайтын басқа жіктеу алгоритмдері үшін зерттеп, Kaggle бағдарламасындағы басқа үлгі жасау мысалдарын қарап шығыңыз.
- Үлгіні жасау үшін бір алгоритмді таңдап, кодты жазу кітапшасына қосыңыз.
- Дәлдігін тексеру үшін scikit-learn көрсеткіштерін пайдаланыңыз.
Сіздің үлгіңіз қалай жұмыс істейді? Бұл ноутбуктағы кез келген басқа алгоритмдерден жақсы ма?
2-ӘРЕКЕТ: БОЛЖАУ ҚОЛДАНБАСЫН ҚҰРУ
Үлгіні Streamlit қолданбасын пайдалану
CHALLENGE
Ирис деректер жиынтығы — ирис гүлдерін жапырақты және септік өлшемдер негізінде 3 түрге (сетоза, версиколор, вирджиника) жіктейтін классикалық деректер жиынтығы.
- Деректер жиынтығының мүмкіндіктері мен мақсаттарын білу үшін біраз зерттеулер жасаңыз.
- Деректер жиынтығын жүктеп алып, өз үлгісіңізді жасауға немесе K-жақын көршілерді пайдаланып жасалған осы үлгіні (pickle file файлын) пайдалануға болады. Бұл деректер жиыны үшін масштабтаудың қажеті жоқ екенін ескеріңіз. Pickle file файлы тек үлгіні қамтиды.
- Үлгіні импорттап, деректер жиынтығының төрт мүмкіндіктеріне негізделген iris түрлерін болжау үшін Streamlit қолданбасын жасаңыз.
ТЕХНОЛГИЯ ШАБЫТЫ
Мұнда машиналық оқыту модельдерін қамтитын веб-бағдарламаларды құру үшін Python және Streamlit-ті пайдаланған Technovation қатысушыларының кейбір тамаша мысалдары берілген.
T.E.D.D.Y – АҚШ-тың TEDDY командасы жасаған жастарға арналған мәтінге негізделген ерте күйзеліс детекторы мұғалімдер мен кеңесшілерге оқушылардың психикалық денсаулығына қатысты мәселелерді ерте анықтауға көмектеседі. TEDDY жағымсыз сезімді білдіретін немесе депрессияға ұшыраған адамдардан күтілетін тілдік үлгілерді көрсететін сөйлемдерді анықтау үшін AI пайдаланады. Содан кейін студенттерді қолдау үшін кеңесшіге жіберуге болады.
РЕФЛЕКСИЯ
Деректер жиынын алдын ала өңдеудің, бірнеше үлгілерді құрудың және қолданбада пайдалану үшін біреуін бағалаудың және таңдаудың бүкіл процесінен өттіңіз. Бұл бір сабақта көп нәрсені үйренеді!
НЕГІЗГІ ТЕРМИНДЕРГЕ ШОЛУ
- Алдын ала өңдеу – деректер жинағын алу және ондағы деректердің машиналық оқыту моделін үйретуге жарамды екеніне көз жеткізу
- Жіктеу алгоритмі – дискретті мәндерді жіктейтін немесе болжайтын машиналық оқыту моделін үйрету үшін қолданылатын алгоритм
- Регрессия алгоритмі – үздіксіз диапазондағы мәнді болжау үшін машиналық оқыту моделін үйрету үшін қолданылатын алгоритм
- Біржақтылық – модельдің болжамды мәні мен дұрыс мән арасындағы модельді жеңілдететін қате болжамдарға байланысты айырмашылық
- Дисперсия – жаңа деректермен бетпе-бет келгенде модель жалпылай алмаған кездегі модель болжамдарындағы өзгергіштік мөлшері.
- Шамадан тыс сәйкестендіру – модель оқу деректеріне тым жақсы сәйкес келсе, ол модельдегі жоғары дисперсиядан туындаған жаңа деректерде жақсы болжай алмайды.
- Жеткіліксіз сәйкестік – модель тым жеңілдетілген кезде және модельдегі жоғары бұрмаланулар немесе жорамалдардан туындаған оқу немесе тестілеу деректерінде жақсы нәтиже бермеген кезде.
ҚОСЫМША РЕСУРСТАР
Машиналық оқыту
- Geeks for Geeks Machine Learning Оқулығы - машиналық оқытудың кейбір процесі мен терминологиясына үлкен кіріспе мен шолу береді
- Simplilearn's Scikit-Learn оқулығы — Jupyter дәптеріндегі scikit-learn көмегімен тәжірибеден өту үшін шарап сапасы туралы деректер жиынтығынан өтеді
- Scikit-learn көмегімен Machine Learning – Data School ұсынған толық Youtube тізімі
Streamlit
- Патрик Лобермен бірге Machine Learning веб-бағдарламасын нөлден жасаңыз – модель құрудың және оны веб-бағдарламада басынан аяғына дейін пайдаланудың тағы бір мысалы.
- Streamlit мүмкіндігі бар кескін классификаторы, егер сіздің үлгіңіз кескіндерге үйретілген болса