Naiivin koneoppimisen välttäminen koulutusdatan esikäsittelyllä : Eturauhassyövän hoitotuloksen ennustaminen koneoppimismenetelmillä
Styrman, Kasper (2022)
Styrman, Kasper
2022
Bioteknologian ja biolääketieteen tekniikan kandidaattiohjelma - Bachelor's Programme in Biotechnology and Biomedical Engineering
Lääketieteen ja terveysteknologian tiedekunta - Faculty of Medicine and Health Technology
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2022-06-08
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202205265279
https://urn.fi/URN:NBN:fi:tuni-202205265279
Tiivistelmä
Tässä työssä tutkittiin, miten koneoppimisella saatuja ennustustuloksia pystytään parantamaan esikäsittelemällä dataa. Työssä koulutettiin Support Vector Machine -koneoppimisalgoritmi (SVM) ennustamaan kastraatioresistenttien eturauhassyöpäpotilaiden hoidon vastetta. Koulutuksessa haluttiin saada kone ennustamaan potilaalle oikea vaste potilaan AR-, TP53- sekä RB1-geenien kopiolukumuutosten pohjalta. Vaste luokiteltiin joko hyvään tai huonoon vasteeseen sen pohjalta, kuinka pitkään potilas eli hoidon aloittamisen jälkeen. Käytetty potilasdata oli epätasapainoista. Tässä tapauksessa hyvän vasteen pisteitä oli huomattavasti enemmän huonon vasteen pisteisiin verrattaessa. Tästä johtuen jakauman epätasapainoa kompensoitiin yli- ja alinäytteistämällä datasettiä. Työn pääpaino olikin vertailla erityyppisten datan esikäsittelyjen vaikutusta saatavaan mallin hyvyyteen.
Työssä ohjelmoitiin Pythonin sklearn.svm -kirjaston SVM-työkaluilla. Datan esikäsittelyä varten toteutettiin myös omat funktiot. Potilasdatasta haettiin potilaiden kopiolukumuutokset sekä elinkuukaudet. Datasta otettiin erilleen pienempi setti pisteitä mallin testaamista varten. Tämän jälkeen data ajettiin esikäsittelyn läpi, jonka jälkeen sillä koulutettiin SVM-algoritmi. Lopuksi mallin ennustamia tuloksia vertailtiin tunnettuihin vastearvoihin laskemalla erinäisiä avainlukuja, joiden pohjalta eri datan saaneiden mallien hyvyyttä vertailtiin keskenään. Datan muokkaaminen ennen käyttöä paransi ennustustuloksia, kun kyseisiä malleja vertailtiin esikäsittelemättömällä datalla koulutettuihin malleihin. Tulokset paranivat esikäsittelyllä ja yleisesti parhaimmat tulokset saatiin, kun eri luokkien jakauma oli 50/50 ja testidataksi oli otettu sivuun 20% pisteistä. Tulokset tukevat yleisesti tunnettua ongelmaa koneoppimisessa liittyen datajakauman tasapainoon ja mallin testaamiseen. The main focus of this bachelor’s thesis was to study how data preprocessing could be used to improve results gotten from machine learning algorithm predictions. A Support Vector Machine learning algorithm (SVM) was trained to predict the treatment outcome of patients with castration resistant prostate cancer. The aim was to get the machine to predict to correct treatment outcome based on a patient’s copy number alteration value in the AR, TP53 and RB1 genes. The treatment outcome was classified as being either good or bad based on how long the patient lived after the treatment was started. The patient data used was imbalanced. In this case there were considerably more data points with a ’good’ outcome value compared to the amount of ’bad’ outcomes. Therefore, the data distribution imbalance was compensated by over- and undersampling the dataset. Emphasis in the thesis was put on comparing the effect different data preprocessing procedures had on the gotten predictive model’s goodness. The created program used tools from the Python sklear.svm library. Data preprocessing was also implemented as separate Python functions. The patients’ copy number alteration values as well as overall survival month amounts were fetched from the patient data files. A small portion of data points was taken aside for performing model testing later on. Afterwards, the data was preprocessed after which it was used to train an SVM algorithm. Finally, the treatment outcome values predicted by the model were compared with already known outcome values by calculating different index values. The Indices were used for comparing the results gotten from the different models; each trained with a differently preprocessed dataset. Data preprocessing did improve the prediction results when compared to those of models trained with non-preprocessed data. Generally, the best results were gotten when the class distribution was 50/50 and the amount of test datapoints was 20% of the original. These results support the common notion of data imbalance as a problem in the field of machine learning, as well as the difficulty of model testing.
Työssä ohjelmoitiin Pythonin sklearn.svm -kirjaston SVM-työkaluilla. Datan esikäsittelyä varten toteutettiin myös omat funktiot. Potilasdatasta haettiin potilaiden kopiolukumuutokset sekä elinkuukaudet. Datasta otettiin erilleen pienempi setti pisteitä mallin testaamista varten. Tämän jälkeen data ajettiin esikäsittelyn läpi, jonka jälkeen sillä koulutettiin SVM-algoritmi. Lopuksi mallin ennustamia tuloksia vertailtiin tunnettuihin vastearvoihin laskemalla erinäisiä avainlukuja, joiden pohjalta eri datan saaneiden mallien hyvyyttä vertailtiin keskenään. Datan muokkaaminen ennen käyttöä paransi ennustustuloksia, kun kyseisiä malleja vertailtiin esikäsittelemättömällä datalla koulutettuihin malleihin. Tulokset paranivat esikäsittelyllä ja yleisesti parhaimmat tulokset saatiin, kun eri luokkien jakauma oli 50/50 ja testidataksi oli otettu sivuun 20% pisteistä. Tulokset tukevat yleisesti tunnettua ongelmaa koneoppimisessa liittyen datajakauman tasapainoon ja mallin testaamiseen.
Kokoelmat
- Kandidaatintutkielmat [8235]