Im Rahmen der Arbeit wird auf Basis des maschinellen Lernens eine automatisierte Methode entwickelt, welche es erlaubt, mithilfe von Bugtrackernachrichten, Sicherheitsschwachstellen in Open Source Projekten zu erkennen. Dies erlaubt es, ökonomische Untersuchungen auf Basis der gewonnenen Daten zu tätigen, um Erkenntnisse zum Thema IT-Sicherheit, Open Source Software und Softwareentwicklung zu gewinnen.
Die Einsatzmöglichkeiten der Erkenntnisse sind im weitem Sinne vielseitig nutzbar. Einerseits geben sie einen Überblick über den Zusammenhang zwischen IT-Sicherheit, Entwicklern und Nutzern von Open Source Software, da diese Bugtrackernachrichten auf ihren Meldungen basieren. Andererseits können diese Erkenntnisse zur Erkennung von Hinweisen auf Sicherheitsschwachstellen in jenen Meldungen genutzt werden, was es Entwicklern erlaubt, diese Meldungen zu priorisieren.
Die Arbeit unterteilt sich in fünf Abschnitte. Zuerst wird im zweiten Kapitel eine Einführung in die Grundlagen der IT-Sicherheit, Open Source Software und des maschinellen Lernens gegeben. Danach wird im dritten Kapitel die aktuelle Forschung zum Thema Sicherheitsschwachstellen in der Softwareentwicklung und ihre Erkennung betrachtet. Auf Basis einer Auswahl an Projekten der Open Source Software Plattform SourceForge wird im vierten Kapitel eine Vorselektion der Bugtrackernachrichten getätigt und diese manuell klassifiziert.
Dies erlaubt es, basierend auf diesen Ergebnissen im fünften Kapitel, das maschinelle Lernen durchzuführen und die Resultate zu validieren. Im sechsten Kapitel wird eine statistische Untersuchung als Beispiel der Anwendung der Ergebnisse der Arbeit getätigt, um Einflussfaktoren in Bezug auf Sicherheitsschwachstellen in der Software zu identifizieren. Zum Abschluss wird im siebten Kapitel ein Fazit verfasst und einen Ausblick auf Ansätze für zukünftige Arbeiten gegeben.
Inhaltsverzeichnis
Abbildungsverzeichnis
Tabellenverzeichnis
Abkürzungsverzeichnis
1. Einleitung
1.1. Motivation
1.2. Ziele und Nutzen
1.3. Struktur der Arbeit
2. Grundlagen
2.1. Grundlagen zur IT-Sicherheit
2.1.1. Definition der IT-Sicherheit
2.1.2. Schwachstellen in der IT-Sicherheit
2.1.3. Schwachstellendatenbanken
2.2. Grundlagen zu Open Source Software und SourceForge
2.2.1. Definition der Open Source Software
2.2.2. SourceForge als Open Source Plattform
2.2.3. Bugtracker
2.2.4. Artefakt
2.3. Grundlagen des maschinellen Lernens
2.3.1. Einführung
2.3.2. Die Datenpräparation als Vorstufe des maschinellen Lernens
2.3.3. Algorithmen zur Textklassifizierung
2.3.4. Ensembles und Stacking
2.3.5. Evaluierung der Ergebnisse
3. Aktuelle Forschung
3.1. Übersicht der Herangehensweisen der aktuellen Forschung
3.2. Analytische Methoden zur Erkennung von IT-Schwachstellen
3.2.1. Mathematische Modelle
3.2.2. Automatische Methoden
3.3. Empirische Untersuchung von Aufwänden in der IT-Sicherheit
3.4. Diskussion der analytischen und empirischen Untersuchungen zur IT-Sicherheit
4. Patternbasierende Selektion und manuelle Klassifizierung von Artefakten
4.1. Datensammlung und Verarbeitung
4.2. Patternbasierende Selektion von Artefakten
4.3. Manuelle Klassifizierung von Sicherheitsschwachstellen
4.4. Analyse und Ergebnisse der manuellen Klassifizierung
4.5. Erfahrungen der manuellen Klassifizierung
4.6. Diskussion der Ergebnisse
5. Maschinelles Lernen
5.1. Problemstellung und Lösungsansätze
5.2. Datenpräparation
5.2.1. Erkennen von Codeartefakten
5.2.2. Generierung von Tokens
5.2.3. Metadaten Tokens
5.3. Durchführung und Ergebnisse des maschinellen Lernens
5.3.1. Wahl des optimalen k für k -NN
5.3.2. Veränderung der Accuracy durch Metadaten im maschinellen Lernen
5.3.3. Evaluierung der Tokenqualität
5.3.4. Evaluierung der Qualität der Algorithmen
5.4. Ensembles und Stacking
5.5. Validierung der Ergebnisse
5.5.1. Validierung auf den restlichen Artefakten der Datenbank
5.5.2. Validierung auf neuen Artefakten
5.6. Diskussion der Ergebnisse
6. Exemplarische statistische Untersuchung von ökonomischen Zusammenhängen
6.1. Problemstellung der statistischen Untersuchung
6.2. Forschungshypothesen und Modellerstellung
6.3. Statistische Auswertung des Modells
6.4. Einflussfaktoren von Security Bugs, Security Feature Request und Security Discussions
6.5. Diskussion der statistischen Ergebnisse
7. Zusammenfassung, Fazit und Ausblick
A. Anhang
A.1. Regular Expressions des patternbased Refinement
A.2. Ergebnisse des maschinellen Lernens mit und ohne Metadaten
A.3. Regressionsergebnisse für Security Bugs, Feature Requests und Security Discussions
Literaturverzeichnis
Abstrakt
IT security can be a decisive reason for the use of software. In this thesis, we developed a way for an automated classification of security issues in an issue tracking system to measure the impact of it security in open source project development. Based on issue tracking messages from SourceForge, we use patternbased refinement as a way to get a selection of bug tracker messages for a manual classification of security issues. We identify inhomogeneity as a main issue for machine learning. Bug tracker messages have different language and content quality and are additionally impured with spam and error messages and code segments. Thus, we used filter methods to clean them up. Based on another machine learning, we were able to classify these code segments and error messages. We optimized the results of our machine learning to classify security issue by stacking machine learning results to get an accuracy of 99.99%. The validation identifies two main problems with our machine learning method, new type of bug tracking messages and messages with just a few sentences. An statistical study based on the recognized security issues examined the number of relative security issues in a previous development phase as main influence of the number of security issues in the subsequently development phase. The influence of the software type and success of the software phase couldn't be confirmed
Abbildungsverzeichnis
1. Beispiel einer Bugtracker-Nachricht in SourceForge
2. Techniken des maschinellen Lernens
3. Schritte zur Datenpräparation eines Dokuments
4. Beispiel eines Decision Tree und seinen Knotentypen
5. Grafische Darstellung der Funktionsweise des k -NN Algorithmus
6. Beispiel der Ergebnisse einer zweidimensionalen Support Vektor Maschine
7. Stacking und Ensemble Learning
8. Verhältnis von positiven und negativen Klassifizierungen zueinander
9. Beispiel eines ROC Graphen
10. Evaluierung der MBL Ergebnisse
11. Vorgehensweisen zur Messung von Aufwänden in der IT-Sicherheit
12. Überblick über das Framework zur Datensammlung
13. Funktionsweise der patternbasierenden Selektion
14. Microsoft Access Formular der manuellen Klassifikation
15. Tokenisierung der Codeartefakten
16. RoC Ergebnisse für k -NN
17. Ergebnisse des maschinellen Lernens mit und ohne Metadaten
18. RoC Ergebnisse der Tokens in Bezug auf die verwendeten Algorithmen
19. Metriken des MBL der Algorithmen
20. RoC Ergebnisse der Algorithmen
21. Mengendarstellung der MBL Ergebnisse
22. Ergebnisse des Ensemblelernens
23. Decision Tree des Ensembles
24. Modell zur Untersuchung von SI Einflüssen
25. Skizzenhafte Entwicklung der Anzahl an relativen SI in Bezug zum Softwarelebenszyklus
Tabellenverzeichnis
1. Historischer Überblick über Untersuchungsmethodiken der empirischen Softwareentwicklungsaufwandsforschung
2. Ergebnisse der patternbasierenden Selektion
3. Ergebnisse der manuellen Klassifikation
4. Vorkommnisse von Pattern
5. Top 10 der Pattern mit den meisten SI
6. Top 10 der Pattern mit der höhsten Wahrscheinlichkeit für ein SI
7. Streuung der Precision bei zufälligen Splits für Trainings- und Validierungsmenge
8. Precision, Recall und Accuracy für k -NN
9. MBL Ergebnisse der Token
10. Ergebnisse der Validierung der nicht patternbasierend selektierten Daten
11. Analyse der Anzahl an Wörtern in verschiedenen Artefaktmengen
12. Ergebnisse der Validierung neu untersuchter Daten
13. Statistische Ergebnisse zwischen Phase 1 und Phase 2 des gesamten Modells
14. Statistische Ergebnisse zwischen Phase 2 und Phase 3 des gesamten Modells
15. Statistische Ergebnisse zwischen Phase 1 und Phase 2 des reduzierten Modells
16. Statistische Ergebnisse zwischen Phase 2 und Phase 3 des reduzierten Modells
17. Ergebnisse der Hypothesen
18. Statistische Ergebnisse der Betrachtung von Security Bugs, Security Feature Re quest und Security Discussions
19. Übersicht der Ergebnisse des maschinellen Lernens
20. Übersicht der Statistische Ergebnisse der untersuchten Phasen und Schwachstellen arten
Abkürzungsverzeichnis
Abbildung in dieser Leseprobe nicht enthalten
1 Einleitung
In unserer Gesellschaft sind internetfähige Kommunikationsgeräte weit verbreitet. Viele Mitmenschen besitzen einen PC, ein Smartphone oder ein Tablet, die täglich griffbereit liegen und genutzt werden. Eine Folge daraus ist der veränderte Umgang mit den Geräten und daraus resultierend ist auch IT-Sicherheit ein immer wichtigeres Thema geworden, um die eigenen Daten, wie Bankdaten, private Informationen und Profile auf verschiedenen Plattformen (z.B: eBay, Amazon und Facebook) vor Fremdzugriffen zu schützen. Ein negativer Effekt daraus ist, dass Angreifer ein steigendes Interesse an diesen Daten besitzen um diese für sich zu nutzen. Somit ist der Schutz dieser Daten umso wichtiger geworden. Gleichzeitig steigt damit die Bedeutung der sicheren Softwareentwicklung. Dies sorgt dafür, dass IT-Sicherheit in der Softwareentwicklung ein wichtiges Thema sein sollte, da Schwachstellen eine Angriffsmöglichkeit bieten, um Zugriff auf die oben genannten Daten zu bekommen, was dem Nutzer der Software Schaden zufügen kann.
1.1 Motivation
Die Literatur berücksichtigt Untersuchungen zur Erkennung von Sicherheitsschwachstellen und ihre ökonomischen Einflüsse auf Basis von Schwachstellendatenbanken oder Bugtrackern großer Projekte. Die dort gewonnenen Erkenntnisse sind nicht vollständig auf alle Open Source Projekte übertragbar (Massacci & Nguyen 2010). Durch die steigende Nutzung von Open Source Software (Statistica 2016) wird das Thema IT-Sicherheit auch für kleinere Projekte wichtig.
In der Literatur gefundene vorhandene Methoden haben die Einschränkung, dass ihre Ergebnisse auf Schwachstellendatenbanken basieren. Dies bedeutet, dass ohne Einträge in einer Schwachstellendatenbank für ein Projekt keine Aussagen zum Thema IT-Sicherheit für das Projekt getroffen werden können. Bugtrackernachrichten unterscheiden sich von ihrem Aufbau und Inhalt zu sehr von einer Meldung in einer Schwachstellendatenbank.
Die Entwicklung eines eigenen Verfahrens zur Klassifizierung von Schwachstellen in der IT- Sicherheit erlaubt es auch kleinere Open Source Projekte und Projekte ohne Schwachstellendatenbankeinträge zu untersuchen.
1.2 Ziele und Nutzen
Um diese Forschungslücke zu schließen, wird im Rahmen der Arbeit auf Basis des maschinellen Lernens eine automatisierte Methode entwickelt, welche es erlaubt, mit Hilfe von Bugtrackernachrichten, Sicherheitsschwachstellen in Open Source Projekten zu erkennen. Dies erlaubt es, ökonomische Untersuchungen auf Basis der gewonnenen Daten zu tätigen, um Erkenntnisse zum Thema IT-Sicherheit, Open Source Software und Softwareentwicklung zu gewinnen.
Die Einsatzmöglichkeiten der Erkenntnisse sind im weitem Sinne vielseitig nutzbar. Einerseits geben sie einen Überblick über den Zusammenhang zwischen IT-Sicherheit, Entwicklern und Nutzern von Open Source Software, da diese Bugtrackernachrichten auf ihren Meldungen basieren. Andererseits können diese Erkenntnisse zur Erkennung von Hinweisen auf Sicherheitsschwachstellen in jenen Meldungen genutzt werden, was es Entwicklern erlaubt, diese Meldungen zu priorisieren.
1.3 Struktur der Arbeit
Die Arbeit unterteilt sich in 5 Abschnitte. Zuerst wird in Kapitel 2 eine Einführung in die Grundlagen der IT-Sicherheit, Open Source Software und des maschinellen Lernens gegeben. Danach wird in Kapitel 3 die aktuelle Forschung zum Thema Sicherheitsschwachstellen in der Softwareentwicklung und ihre Erkennung betrachtet. Auf Basis einer Auswahl an Projekten der Open Source Software Plattform SourceForge wird in Kapitel 4 eine Vorselektion der Bugtrackernachrichten getätigt und diese manuell klassifiziert. Dies erlaubt es, basierend auf diesen Ergebnissen in Kapitel 5, das maschinelle Lernen durchzuführen und die Resultate zu validieren.In Kapitel 6 wird eine statistische Untersuchung als Beispiel der Anwendung der Ergebnissen der Arbeit getätigt, um Einflussfaktoren in Bezug auf Sicherheitsschwachstellen in der Software zu identifizieren. Zum Abschluss wird in Kapitel 7 ein Fazit verfasst und einen Ausblick auf Ansätze für zukünftige Arbeiten gegeben.
2 Grundlagen
In diesem Kapitel werden die begrifflichen und inhaltlichen Grundlagen zum besseren Verständnis der Arbeit behandelt. Hierbei wird zuerst auf die „Grundlagen zur IT-Sicherheit und Schwachstellen der IT-Sicherheit” eingegangen. Danach folgt eine kurze „Einführung in die Open Source Software” und im Speziellen in die Open Source Plattform SourceForge, welche als Datengrundlage dieser Arbeit dient. Zuletzt wird das „maschinelle Lernen” betrachtet. Hierbei wird die Datenpräparation des maschinellen Lernens, wichtige Algorithmen und die Validierung der Ergebnisse betrachtet. Diese erfolgt unter dem Betrachtungspunkt der Textklassifizierung als Einsatzmöglichkeit des maschinellen Lernens.
2.1 Grundlagen zur IT-Sicherheit
Zuerst wird die Definition des Begriffs „IT-Sicherheit” erläutert. Basierend darauf lässt sich der Begriff „Schwachstelle” erklären, der einen Einfluss auf die IT-Sicherheit besitzt. Basierend auf dieser Definition erfolgt in den späteren Kapiteln die Klassifizierung der zu betrachtenden Bugtrackernachrichten. Darauf wird auf „Schwachstellendatenbanken” als zentraler Sammelort für Schwachstellen eingegangen, bevor auf die Grundlagen zu Open Source und SourceForge eingegangen wird.
2.1.1 Definition der IT-Sicherheit
Unter IT-Sicherheit ist der Schutz elektronisch gespeicherter und verarbeiteter Informationen vor den Zugriff Unbefugter, der Vermeidung von wirtschaftlichen Schäden und der Minimierung von Schadens- und Eintrittsrisiken zu verstehen, welche durch die folgenden Schutzziele sichergestellt werden soll (Eckert 2013):
Integrität
Daten dürfen nicht unbemerkt, und ohne Nachvollziehbarkeit der Änderung, geändert werden.
Verfügbarkeit
Für autorisierte Personen muss der Zugriff auf Daten innerhalb eines vorher definierten Zeitraums gewährleistet sein.
Vertraulichkeit
Daten dürfen während der Datenübertragung und beim Datenzugriff nur von autorisierten Benutzern gelesen und modifiziert werden.
Diese werden durch die zusätzlichen Schutzziele erweitert (ISO27000 2009):
Authentizität
Die Echtheit, Überprüfbarkeit und Vertrauenswürdigkeit der Daten ist gewährleistet
Verbindlichkeit / Nichtabstreitbarkeit
Das Abstreiten einer unzulässig durchgeführten Handlung ist nicht möglich.
Zurechenbarkeit
Eine durchgeführte Handlung kann einer Person eindeutig zugeordnet werden IT-Sicherheit unterscheidet sich von der IT-Zuverlässigkeit. Die IT-Sicherheit betrachtet den Schutz von Daten oder eines Systems durch äußere aktive Angriffe durch die Schutzziele. Diese Angriffe besitzen oft eine Schadensabsicht. Die IT-Zuverlässigkeit betrachtet hingegen das System und die Daten, indem durch Tests und Verifikation eine fehlerfreie Datenverarbeitung gewährleistet werden soll (Ester & Sander 2013).
2.1.2 Schwachstellen in der IT-Sicherheit
Unter einer Schwachstelle in der IT-Sicherheit (im folgendem SI für „Security Issue” genannt) ist ein Bug zu verstehen, ein Fehler in der Software, welcher die Verletzung eines der drei Schutzziele der IT-Sicherheit erlaubt. Diesen kann ein Angreifer nutzen, um durch unerlaubte Zugriffe Schaden an einen System zu verursachen, dessen schwere von der Art des Fehlers der Software abhängt. Von einem Zugriff auf unerlaubte unkritische Daten bis zur totalen Übernahme eines Systems durch einen Fehler existiert ein großes Spektrum an Angriffsmöglichkeiten.
Die Entwicklung sicherer Software, wie auch die Behebung von Sicherheitsschwachstellen erfordert Aufwände. Das steigende Bedürfnis von Entwicklern und Nutzern zum Thema IT-Sicherheit kann beispielsweise dadurch erkannt werden, das entsprechende Aspekte zur Diskussion gebracht werden, zum Beispiel durch die folgenden Bugtrackernachrichten aus SourceForge:
„Implement authentication and access control. Users and groups should be managed in preferences, so the preferences system wil l have to be written first. See the ACal 5.0 planning document for details.”
„When you choose to remember password the program wil l write your password with no encryption in the botton of the config file.”
„Anyone can export other account private key. ex: Create a new test account and any password, in the [options] - [profile] - [profile manager], I can export anyone the PGP private key, i don't known the other account password, Im compared it, was right PGP key.. this is a big BUG!!”
Selbst eine Diskussion erfordert Aufwände und können zu größeren Entwicklungsaufwänden führen, wenn sie zum Anlass genommen werden, entsprechende Funktionen einzuarbeiten. Beispiele aus SourceForge hierfür sind:
„Request for documentation on how to setup SFTP public/private key connections and how to specify a specific public key with a specific connection as opposed to loading a global public key.”
„Hello ! What happens to the original file when you right click it -> encrypt; Is it automatically shredded ? I could find nothing about this in the documentation / FAQ” „Can you explain me the format of the encrypted KeePass database including all cryptographic funtions? Many thanks!”
Daher werden unter IT-Sicherheitsaufwänden in dieser Arbeit, neben Schwachstellen, auch Diskussionen zum Thema IT-Sicherheit verstanden, da diese auch zu Aufwänden in der IT-Sicherheit führen.
Das Gegenteil zum SI ist der nSI (not a Security Issue), welches eine Bugtrackernachricht und darauf basierend einen Aufwand beschreibt, das kein SI ist.
2.1.3 Schwachstellendatenbanken
Eine Schwachstellendatenbank (VDB, aus dem Englischen „Vulnerability Database”) ist eine Plattform, dessen Aufgabe die Sammlung, Bewertung, Archivierung und Verbreitung von Informationen über Schwachstellen in Computersystemen ist. Die Datenbank enthält üblicherweise die Beschreibung einer Schwachstelle und eine Gefahrenbewertung. Diese enthalten eine Vielzahl von identifizierten Schwachstellen und können somit einen aktuellen und historischen Überblick über die Sicherheitsproblematiken bei der Nutzung bestimmter Anwendungsplattformen und Software wiedergeben. Hierzu verfügen sie über zahlreiche Metriken und Graphen (Schumacher et al. 2000; Holm, Ekstedt & Andersson 2012).
Die bekanntesten Schwachstellendatenbanken sind „Open Source Vulnerability Database1 ”, „National Vulnerability Database2 ” und „Common Vulnerabilities and Exposures3 ”.
2.2 Grundlagen zu Open Source Software und SourceForge
Diese Arbeit basiert auf der Untersuchung von „Open Source Software” und im speziellen auf der Untersuchung von Projekten auf der Open Source Plattform „SourceForge” auf Basis ihrer „Bugtrackernachrichten”, welche innerhalb der SourceForge Datenbankstruktur als „Artefakte” bezeichnet werden. Im Anschluss erfolgt eine Einführung in das maschinelle Lernen.
2.2.1 Definition der Open Source Software
Im allgemeinen Verständnis ist Open Source Software als die Software zu verstehen, dessen Quellcode frei verfügbar ist. Im engeren Sinne ist Open Source Software als die Software definiert, welche die Definition der Open Source Initiative (OSI) erfüllt. Dazu gehört, dass die Software eine OSI anerkannten Open-Source-Softwarelizenz benutzt und der Quellcode zur freien Verfügung bereit steht. Im weitem Sinne steht Open Source für frei verfügbares Wissen und Information und hat die Gründung neuer „Open”-Bewegungen beeinflusst, beispielsweise „Open Content”, „Open Source Hardware” und „Open Access”.
OSI definiert Open Source Software anhand von 10 Punkten. Die bekanntesten von ihnen sind (opensource.org 2016):
Vorhandensein des Quellcodes
Der Quelltext liegt in einer dem Menschen lesbaren und verständlichen Form vor, was meist in Form des programmierten Quellcodes geschieht.
Kostenfreie Nutzung und Kopierbarkeit
Die Software ist frei von Nutzungsbeschränkungen und darf somit beliebig vervielfältigt und genutzt werden.
Zurechenbarkeit
Die Software darf beliebig verändert und erweitert werden und eine Weitergabe dieser Änderungen ist erwünscht.
2.2.2 SourceForge als Open Source Plattform
SourceForge ist ein Dienstleister bei dem Entwickler ihr quelloffenes Softwareprojekt erstellen und verwalten können. Sie bietet Entwicklern eine Vielzahl an unterstützenden Werkzeugen wie Repositories, Projekthomepage, Downloadportale, Bugtracker, MySQL Datenbanken, Mailinglisten und Mitgliederverwaltung. Gleichzeitig ist sie eine Anlaufstelle für Nutzer von Open Source Software, welche zielgerichtet nach einer Software suchen können oder sich einfach nur im Softwareangebot umsehen wollen.
Die Bandbreite der Projekte, welche SourceForge als Plattform nutzt, ist breit gefächert. von kleinen Ein-Mann-Projekten bis hin zu großen und bekannten Projekten, wie Filezilla mit mehreren hundert Millionen Downloads und einer zweistelligen aktiven Entwicklergemeinde sind alle Projekttypen auf der Plattform vertreten.
Aufgrund der zur Verfügung stehenden Datenmengen und Informationen und der internationalen Nutzerschaft bietet SourceForge für Forscher einen Einblick in die Open Source Community und der Entwicklung von Open Source Software.
2.2.3 Bugtracker
Bugtracker dienen der Kommunikation zwischen Anwendern und Entwickler in Bezug auf die verwendete Software. Die Verwendung der Software kann mit Fragen, Anregungen, gefundene Fehler und Rückgabe von Programmcode verbunden sein. Die Verwendung eines Bugtrackers dient einer zentralen Anlaufstelle und Archivierung dieses geschehen.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 1.: Beispiel einer Bugtracker-Nachricht in SourceForge
Abbildung 1 zeigt eine Bugtrackernachricht in SourceForge. Unter der ID und der Überschrift im oberen zentralen Bereich befinden sich die Metainformationen, wie Ersteller und Erstellungszeitpunkt, Priorität, zugewiesene Person und Aktualisierungszeitpunkt. Die Beschreibung der Problemstellung befindet sich im zentralen Bereich der Nachricht. Unter ihr ist Platz für eine Diskussion, die auf Basis der Nachricht erfolgen kann und der Anhang für beigefügte Daten enthalten. Die linke Seite enthält eine Suchfunktion und eine Übersicht der derzeitigen Bugtra- chereinträge des Projektes.
Das Aussehen einer Bugtrackernachricht kann je nach dafür verwendeter Software variieren. Die oben genannten Grundinformationen sind jedoch in allen bekannten Bugtrackersoftware enthalten. „Bugzilla”, „Mantis” und „Redmine” gehören zu der bekanntesten Bugtrackersoftware.
Entgegen des Namen „Bugtracker”, sind Bugtracker nicht auf die Meldung von Softwarebugs beschränkt. Sie werden zur allgemeinen Kommunikation zwischen Entwicklern und Nutzern verwendet, was Fragen aus dem Bereich Funktionalität, Support und dem einreichen eigenes Softwarecodes einschließt.
Open Source Software und Bugtracker erlauben es für Beteiligte, Außenstehende und Forscher einen Einblick in die Softwareentwicklung zu gewinnen, da sie eine Vielzahl an Informationen bereit stellen, welche in diesem Umfang bei Closed Source Software üblicherweise nicht vorhanden ist.
2.2.4 Artefakt
Unter einem Artefakt ist der Eintrag in der SourceForge-Datenbank zu einer Bugtrackermeldung zu verstehen. Dieser enthält neben der Überschrift und der Beschreibung Metainformationen, wie Ersteller, Erstellungs- und Bearbeitungszeitpunkt und ein Rating, wobei zugunsten der Generalisierung der Datenbank sich diese Einträge auf mehrere Tabellen verteilen können. In dieser Arbeit wird der Begriff „Artefakt” für die Beschreibung innerhalb der Bugtrackermeldung und „Metadaten des Artefakts” zur Benennung der zugehörigen Metainformationen verwendet (Xu 2007).
2.3 Grundlagen des maschinellen Lernens
Der Abschluss des Kapitels dient dem Verständnis des maschinellen Lernens. Nach einer Einführung in die Vorgehensweisen des „maschinellen Lernens” werden die notwendigen Schritte der „Datenvorbereitung” erläutert, wichtige Algorithmen zur Klassifizierung von Texten vorgestellt und ;;Metriken zur Evaluierung der Ergebnisse” erläutert.
2.3.1 Einführung
Das maschinelle Lernen (im folgendem MBL für „Machine Based Learning” genannt) bezeichnet ein Teilgebiet der Informatik, welches sich mit der Entwicklung von Algorithmen und Techniken beschäftigt, die es einem Computer erlauben zu „lernen”. Hierbei ist unter dem Lernen die Generierung von Wissen aus auf Daten basierenden Erfahrungen zu verstehen, d.h. ein Computer betrachtet Beispiele und kann aus diesen allgemeine Regeln generieren. Computer bieten hierbei den Vorteil, dass sie Sachverhalte von einem technischem Standpunkt aus betrachten, was eine konstante Performanz des Lernens garantiert und eine Beeinflussung der Ergebnisse über die Einstellungen zum Algorithmus erlaubt (Dharmadhikari, Ingle & Kulkarni 2011).
Die Einsatzgebiete des maschinellen Lernens sind vielfältig. Von Metadaten über Verhaltensmuster bis hin zu Texten lassen sich die verschiedensten Datenarten über eine Vektorisierung der Daten mit einem entsprechenden MBL Algorithmus betrachten. Die hiesige Arbeit behandelt das „Data Mining” als eine der Einsatzmöglichkeiten des maschinellen Lernens mit der Spezialisierung des „Text Mining” (Ester & Sander 2013). Andere Spezialisierungen des „Data Mining” sind „Webmining” und „Zeitreihenanalysen”, auf die in dieser Arbeit nicht genauer eingegangen wird. Entsprechend wird das maschinelle Lernen und alle damit verbundenen Themen unter diesem Gesichtspunkt behandelt.
Es wird zwischen drei Techniken des maschinellen Lernens unterschieden, welche in Abbildung 2 dargestellt und im folgendem genauer erläutert werden:
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2.: Techniken des maschinellen Lernens überwachtes Lernen
Unter „überwachten Lernen” sind Algorithmen zu verstehen, welche Trainingsdaten verwenden, wobei jeder Datensatz null bis beliebig viele Merkmale besitzt. Zielsetzung des Algorithmus ist es, auf Basis der gegebenen Merkmale, den sogenannten Tokens, welche später ausführlicher erläutert werden, Gemeinsamkeiten zwischen gleich klassifizierten Texten zu suchen. Ein Text wird als positives Beispiel für dem ihn zugewiesener Klasse und als Negativbeispiel für die gegenteilige Klasse betrachtet. Meist sind diese Klassen eine ja/nein - Aussage zur Zugehörigkeit des Datensatzes zu einer vordefinierten und zu untersuchenden Gruppe, wie es in dieser Arbeit mit den SI der Fall ist. Die Algorithmen suchen gewichtete Vektoren für die jeweiligen Klassen, um damit neue Texte klassifizieren zu können. Dies wird über ein zweiphasiges vorgehen realisiert. In der ersten Phase werden anhand von Trainingsdaten die entsprechenden gewichteten Vektoren bestimmt und in der zweiten Phase über diese Vektoren neue Texte klassifiziert (Ozgür 2004).
Teilüberwachtes Lernen
Beim „teilüberwachten Lernen” werden Algorithmen verwendet, die klassifizierte, zusammen mit nicht klassifizierten Texten betrachten, d.h. ein Teil der betrachteten Daten ist nicht klassifiziert. Diese Algorithmen sind für Fälle ausgelegt, bei dem das Klassifizieren eines Textes kostenintensiv (Zeit und/oder Ressourcen) ist. Diese Algorithmen erlauben es, für solche Fälle gute Ergebnisse zu bekommen, welche erwartungsgemäß unter der Qualität des überwachtem Lernens liegen (Pise & Kulkarni 2008).
Unüberwachtes Lernen
Im „unüberwachten Lernen” wird eine Sammlung nicht klassifizierter Texte betrachtet. Die Zielsetzung von Algorithmen in diesem Bereich ist es, jene Texte auf Gemeinsamkeiten zu analysieren und anhand dieser Ergebnisse Cluster zu bilden, in denen Texte untereinander ähnlicher sind als Texte zwischen den einzelnen Cluster. Algorithmen in diesem Bereich werden in die zwei Hauptgruppen, „partitioniert” und „hierarchisch”, kategorisiert. Hierarchische Algorithmen erzeugen verschachtelte Partitionen von Texten durch Spaltung (Trenn-Ansatz) oder Zusammenführung (Agglomerativer Ansatz) und clustern auf der Grundlage der Ähnlichkeit zwischen ihnen. Partitionierende Algorithmen gruppieren die Daten in nicht verschachtelte und nicht überlappende Partitionen, um Clusterkriterien zu optimieren. Diese Methode eignet sich überwiegend zur Erkennung von ersten Klassenmustern in einer Menge an Texten, die zuvor höchstens in einem losen Zusammenhang standen(Dharmadhikari, Ingle & Kulkarni 2011).
2.3.2 Die Datenpräparation als Vorstufe des maschinellen Lernens
Bevor Texte durch einen MBL Algorithmus klassifiziert werden können, ist eine Verarbeitung der Daten in einer für den Algorithmus verständlichen und optimierten Form notwendig. Dies ist die Aufgabe der Datenpräparation. Durch sie werden Texte aufbereitet, wie es durch eine Rechtschreibkorrektur passieren kann, und über die Darstellung durch Tokens, welche im folgendem genauer erläutert werden, und ihrer Vorkommenshäufigkeit im Text, werden diese Texte auf zu untersuchende inhaltliche Charakteristiken des Textes reduziert. Dies bildet der Hauptunterschied zwischen MBL Verfahren mit Textklassifizierung und klassischen MBL Algorithmen auf binären oder numerischen Daten.
Dadurch, dass beim MBL die Qualität der eingegebenen Daten überwiegend über die Qualität der Ergebnisse bestimmt, und weniger der verwendete Algorithmus, ist die Datenpräparation sorgfältig durch zu führen (Leopold & Kindermann 2002; Baharudin, Lee & Khan 2010; Dasari et al. 2012).
In Anlehnung an Baharudin, Lee & Kahn und Dasari et al. besteht die Datenpräparation für eine Textklassifizierung aus den in Abbildung 3 dargestellten Schritten (Baharudin, Lee & Khan 2010; Dasari et al. 2012):
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 3.: Schritte zur Datenpräparation eines Dokuments
1 Einlesen der Dokumente
Die Datenpräparation beginnt mit dem Einlesen des Dokuments. Hauptaugenmerk ist die Codierung des Textes, damit dieser nicht durch nicht unterstützte Schriftzeichen verfälscht wird (ASCII, Unicode, UTF8, ...).
2 Tokenisierung des Textes
Die Tokenisierung zerlegt einen Satz in einzelne Tokens, welche von der Verständnis her mit Wörtern in einem Satz gleich zu setzen sind. Die klassische Trennung von Tokens untereinander erfolgt in den meisten Sprachen durch das Leerzeichen. Die Art der Tokenisierung erfolgt abhängig von der Problemstellung. Unterschiede zwischen den Tokenisierungsver- fahren sind die Beachtung von Satzzeichen, Auftrennung von Bindewörtern, Umgang mit literarisch fremden Wörtern wie Klassennamen oder Fehlermeldungen und der Umgang mit mehrwörtigen Namen wie „Frankfurt am Main” oder „maschinelles Lernen”. Neben den Wort-Tokens kann ein Text auch nach Charakteristiken, wie das vorkommen von Buchstabenfolgen, grammatikalischen Zeiten und Satzbausteinen tokenisiert werden.
3 Rechtschreibkorrektur
Je nach Qualität der eingegebenen Texte und Art der Tokens besteht die Notwendigkeit einer Rechtschreibkorrektur um gleichbedeutende Tokens zu gruppieren und verfälschten Ergebnissen auf Grund von Rechtschreibfehlern neu entstandener Tokens entgegen zu wirken.
4 Stemming
Beim Stemming wird ein Wort auf seinen Wortstamm reduziert. Dadurch wird die Anzahl der Tokens reduziert, da alle Wörter einer Wortfamilie durch diese Reduktion gemeinsam betrachtet werden. Eines der bekanntesten und meist verwendeten Methoden zum Stemmen ist der Porter-Stemmer - Algorithmus für die englische Sprache und Snowball als universelle Stemming-Sprache für eine Vielzahl von Sprachen (Porter 1980; Porter 2001).
5 Löschen von Stopwörter
Stopwörter sind Wörter, die in einem Satz häufig vorkommen, aber für seine inhaltliche Bedeutung keine nennenswerte Relevanz besitzen. Beispiele sind hierfür Artikel (z. B. „der”, „die”, „das”, „einer”, „eine”, „ein”) und Konjunktionen (z. B. „und”, „oder”, „doch”). Diese werden aufgrund ihrer Bedeutungslosigkeit und den damit entstehenden Performanz- und Ressourcenkosten entfernt.
6 Vektorisierung des Textes
Die Textvektorisierung ist ein algebraisches Modell zur Symbolisierung von Texten in Vektoren um diese mathematisch bearbeiten zu können. Hierbei werden Tokens durch die Zahl ihres Vorkommens gewichtet und dem Text zusätzliche Charakteristika, wie ursprüngliche Textlänge, Quelle und das Vorhandensein vorher festgelegter Faktoren, hinzugefügt.
7 Attributsselektion und Attributstransformation
Die Selektion der Attribute (Tokens und Charakteristika) ist der Schritt, in dem bestimmt wird, welche Vektoren und Vektorenform ein MBL-Algorithmus betrachten soll. Hierbei wird die Eingabe des Algorithmus definiert. Die Qualität dieses Inputs, worunter die Auswahl der richtigen Attribute und einer vorherigen gründlichen Datenbereinigung zu verstehen ist, welche die Qualität der Ergebnisse des MBL mitbestimmt (Forman 2003).
8 Maschinelles Lernen
Im letzten Schritt wird der MBL Algorithmus anhand der Problemstellung ausgewählt, das maschinelle Lernen durchgeführt und die Ergebnisse validiert.
2.3.3 Algorithmen zur Textklassifizierung
Für das „Text Mining” haben sich einige Algorithmen aufgrund der Qualität der Ergebnisse, der Geschwindigkeit und der Modifizierbarkeit der Algorithmen zur Anpassung an die benötigte Problemstellung, bewährt (Baharudin, Lee & Khan 2010; Dharmadhikari, Ingle & Kulkarni 2011). Hierbei werden die Algorithmen „Naive Bayes”, „Decision Tree”, ” k -Nearest Neighbour und „Support Vector Machines” betrachtet. Der Auswahlgrund dieser Algorithmen wird in Kapitel 5.3, Durchführung und Ergebnisse des maschinellen Lernens, genauer erläutert.
2.3.3.1 Naive Bayes
Bei Naive Bayes handelt es sich aufgrund seiner Einfachheit und Geschwindigkeit um einen der am meisten genutzten Algorithmen des maschinellen Lernens. Er wird aus dem Satz von Bayes hergeleitet, welcher die bedingte Wahrscheinlichkeit berechnet, dass Ereignis y unter den Bedingungen x 1 ,..., x n E x eintritt:
Abbildung in dieser Leseprobe nicht enthalten
Da es sich bei P ( x 1 , ..., x n ) um die Eingaben des Naive Bayes Algorithmus handelt und diese somit konstant sind, lässt sich die Formel vereinfachen:
Abbildung in dieser Leseprobe nicht enthalten
Somit berechnet der Naive Bayes Algorithmus die multiplizierten Wahrscheinlichkeiten der einzelne Eintrittsfälle und damit die kumulierte Wahrscheinlichkeit, dass der eingegebene Text zu einer Klasse gehört (Zhang 2004).
Trotz seiner Einfachheit arbeitet der Algorithmus auch in komplexen Situationen und unter spezifisch angepassten Bedingungen mit guten Leistungen. Somit ist er, wenn es das Einsatzszenario hergibt, universell einsetzbar(McCallum et al. 1998; Rish 2001).
Die Eigenschaften des Algorithmus kurz zusammengefasst (Dharmadhikari, Ingle & Kulkarni 2011):
Vorteile: Der Naive Bayes Algorithmus benötigt eine relativ kleine Menge an Trainingsdaten für die Klassifizierung. Er zeigt des Weiteren eine hohe Genauigkeit und Geschwindigkeit auch bei großen Datenmengen.
Nachteile: Eine Voraussetzung für qualitativ hochwertige Ergebnisse ist eine möglichst hohe Unabhängigkeit der einzelnen Wahrscheinlichkeiten (siehe Herleitung) und ähnlich große Datenmengen an Beispielen für die betrachteten Klassen.
2.3.3.2 Decision Tree
Beim Decision Tree - Algorithmus handelt es sich um eine regelbasierte Klassifikation, dessen Ergebnis ein Entscheidungsbaum ist, welche über die Erstellung von wahr/falsch - Abfragen auf Basis der Trainingsdaten erzeugt wird. Die Pfade stellen die Entscheidungsregeln und die Blätter die Attribute der zu klassifizierten Daten dar. Eine oft verwendete Erweiterung des Decision Tree - Algorithmus ist der Random Forest - Algorithmus, welcher eine vorher festgelegte Anzahl möglichen Entscheidungsbäumen gleichzeitig darstellt. Die Anwendung eines Entscheidungsbaumes zur Klassifizierung neuer Datensätze hat eine hohe Geschwindigkeit. Hierbei werden die Attribute des neuen Datensatzes von der Wurzel über die Pfade zu den Blättern überprüft und anhand der Ergebnisse der Text klassifiziert (Apte, Damerau & Weiss 1994a; Apte, Damerau & Weiss 1994b).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4.: Beispiel eines Decision Tree und seinen Knotentypen
In Abbildung 4 sind die drei Arten von Pfaden in Entscheidungsbäumen zu erkennen, wobei die Pfade gewichtete Entscheidungsgründe mit einem Wertebereich und die Knoten und Blätter die betrachteten Datentypen der Pfade sind:
1. Multiple Zutreffbedienungen
Alle Bedingungen aus den Blättern müssen zutreffen, damit der Knoten zutrifft.
2. Wahr/Falsch Bedingung
Die Attribute der Blätter stehen in einem Wahr/Falsch - Verhältnis zum Knoten.
3. Vergleichsbedingung
Für die Zweige des Knotens herrschen Grenzen in ihrem Wertebereich.
Die Eigenschaften des Algorithmus kurz zusammengefasst (Dharmadhikari, Ingle & Kulkarni 2011):
Vorteile: Der Algorithmus funktioniert auf Daten eines beliebigen Datentyps und weist auch beim Vorhandensein einer großen Menge an Attributen eine hohe Performanz.
Nachteile: Das Hauptrisiko des Algorithmus ist, dass aufgrund einer suboptimalen Wahl von Trainingsdaten ein alternativer Entscheidungsbaum entsteht, welcher beim Einsatz auf neuen Daten ein verfälschtes Ergebnis wiedergibt.
2.3.3.3 k -Nearest Neighbour
Beim k -Nearest Neighbour Algorithmus handelt es sich um ein Mustererkennungsalgorithmus, welcher auf der Schätzung von Wahrscheinlichkeitsdichtefunktionen beruht. Er basiert auf der Idee, dass durch Tokens beschriebene Elemente innerhalb einer Klasse ähnlich sind. Ziel des Algorithmus ist es, k E [1 , max ( Daten )] seiner nächsten Nachbarn zu finden. Dies geschieht über die Berechnung der Distanz zwischen den Daten (euklidische Distanz, City-Block-Distanz, Gower- Koeffizient, ...). Ein Objekt wird der Klasse zugewiesen, welche die größte Anzahl der Objekte dieser k Nachbarn hat. Der Algorithmus benötigt eine ausgeglichene Menge an Daten aller Klassen oder gewichtete Klassen bei Mengendefiziten, da ansonsten die Gefahr besteht, dass Objekte mit zu großem Abstand in die Klassifizierung mit einbezogen werden (Tam, Santoso & Setiono 2002).
Abbildung 5 verbildlicht die Funktionsweise des k -NN - Algorithmus mit k = 5 in einem zweidimensionalen Raum. Punkt A und B verkörpern ein Element der jeweiligen Klasse, während U 1 und U 2 zwei neu zu klassifizierende Elemente sind. Durch den Algorithmus wurden alle Elemente in Vektoren umgerechnet, welche Ihre Position in der Grafik bestimmt. Beide neue Elemente suchen ihren nächsten Nachbarn und klassifizieren sich dementsprechend. U 1 wird als A klassifiziert, da 4 der 5 Nachbarn der Klasse A zugehören und für U 2 ist das Ergebnis mit B eindeutig.
4 Quelle: Baharudin, Lee & Khan 2010
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 5.: Grafische Darstellung der Funktionsweise des k -NN Algorithmus 4
Die Eigenschaften des Algorithmus kurz zusammengefasst (Dharmadhikari, Ingle & Kulkarni 2011):
Vorteile: Dieser Algorithmus ist formal gesehen einfach, leicht zu implementieren und Ressourceneffizient.
Nachteile: Der Ressourcenbedarf des Algorithmus skaliert überproportional, weswegen er mit größeren Testmengen umso langsamer wird. Ebenso werden die Ergebnisse durch irrelevante Daten und ungleiche Klassenmengen in der Testmenge verschlechtert.
2.3.3.4 Support Vector Machines
Support Vektor Maschinen sind auf statistische Berechnungsverfahren der strukturellen Risikominimierung basierenden Lernalgorithmen. Es Unterteilt die Objekte in Klassen, so dass um die Klassengrenzen ein möglichst breiter objektfreier Rand existiert. Dies geschieht durch das Umrechnen der Daten in höhere Dimensionen und die Bildung von Hyperebenen durch die Hilfe von Support Vektoren (Cortes & Vapnik 1995; Joachims 1998).
Abbildung 6 verbildlicht das Ergebnis einer Support Vektor Maschine in einem zweidimensionalen Raum, bei der zwei Klassen (als ◦ und x dargestellt) durch eine erzeugte Hyperebene mit möglichst breitem Abstand zum nächst stehenden Objekt, getrennt werden.
Die Eigenschaften des Algorithmus kurz zusammengefasst (Dharmadhikari, Ingle & Kulkarni 2011):
Vorteile: Support Vector Maschinen gehören zu den effektivsten Textklassifizierungsalgorithmen, da sie in der Lage sind, große Textmengen mit einem hohen Generalisierungsgrad zu verarbeiten, d.h. Elementare Aussagen für große Datenmengen treffen können (Wang, Sun & Zhang 2006).
5 Quelle: Cortes & Vapnik 1995
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 6.: Beispiel der Ergebnisse einer zweidimensionalen Support Vektor Maschine5
Nachteile: Aufgrund der Komplexität des Algorithmus ist die Trainingsphase zur Klassifizierung der Datenmenge Zeit-, Speicher- und Rechenleistungsintensiv.
2.3.4 Ensembles und Stacking
Zur Optimierung der Ergebnisse des maschinellen Lernens kann eine Technik namens „Stacking” verwendet werden, welche auf eine Menge an Ergebnissen verschiedener Lernvorgänge, dem „En- selble” ein weiteres unabhängiges maschinelles Lernen durchführt:
Ensemble
Unter dem Lernen von Ensembles versteht man eine Technik zur Nutzung verschiedener Algorithmen für eine Problemstellung zur Evaluierung passender Algorithmen und Optimierung der Ergebnisse. Je nach Problemstellung und Qualität der Daten können die verwendeten Algorithmen variieren und die Zuordnung der Datenmenge zu einem der verwendeten Algorithmen von einer Teilmenge bis zur Gesamtmenge variieren. (Opitz & Maclin 1999; Polikar 2006; Rokach 2010).
Stacking
Basierend auf dem Ensemble lässt sich ein weiteres maschinelles Lernen durchführen, welches nur die Ergebnisse der vorherigen Algorithmen verwendet. Über das Stacking können bessere Ergebnisse erreicht werden, als mit jedem der einzelnen Algorithmen. Prinzipiell sind alle MBL Algorithmen für das Stacking geeignet. Eine gesonderte Überprüfung ist notwendig um den besten Algorithmus für die eigene Problemstellung zu finden (Wolpert 1992; Breiman 1996; Ozay & Vural 2012).
Abbildung 7 zeigt ein Beispiel, bei dem auf Basis der Ergebnisse mehrerer MBL Vorgänge ein Ensemble generiert und über Stacking ein weiteres maschinelles Lernen durchgeführt wurde. Hierbei können für beide MBL Vorgänge die verwendeten Algorithmen, Aufteilung zwischen Trainings und Validierungsmenge und die verwendeten Tokenarten variieren.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 7.: Stacking und Ensemble Learning
2.3.5 Evaluierung der Ergebnisse
Der letzte Schritt des maschinellen Lernens ist das Evaluieren der Ergebnisse des Algorithmus. Dieser Prozess findet durch die Auswahl der zu benutzenden Evaluierungsmetrik und der darauf folgende Evaluierungsprozess, bei dem die gelernten Modelle auf einen Evaluierungsdatensatz angewendet werden, statt (Witten, Frank & Hall 2011).
2.3.5.1 Evaluierungsmetriken
Das Evaluieren der Ergebnisse findet nach dem Lernen eines Modells durch den MBL Algorithmus statt. Neu gefundene Regel werden auf den Evaluierungsdatensatz angewandt, um die Qualität der erlernten Regeln zu messen. Hierbei haben sich die „Precision”, „Recall” und „Accuracy” als messbare Metrik bewährt (Manning etal. 2008).
Die zu betrachtenden Variablen sind:
r = Der aktuelle Regelkandidat
P = Die Gesamtzahl positiver Klassifizierungen
N = Die Gesamtzahl negativer Klassifizierungen
tp = Die Anzahl der richtigen positiven Klassifizierungen für r
tn = Die Anzahl der richtigen negativen Klassifizierungen für r
fp = Die Anzahl der falschen positiven Klassifizierungen für r
fn = Die Anzahl der falschen negativen Klassifizierungen für r
Abbildung 8 zeigt das Verhältnis zwischen den betrachteten Variablen, wobei auf die englischen Fachausdrücke für die Klassifizierungsmöglichkeiten zurückgegriffen wird. Hierbei wird das Klassifizierungsergebnis des MBL mit dem tatsächlichen Klassifizierungsergebnis eines Objekts verglichen, welches es in den Trainingsdaten besitzt. Stimmt dieses Ergebnis überein, dann handelt es sich, je nach Ergebnis um ein tp oder tn. Sollte das Ergebnis unterschiedlich sein, dann wird es, je nach Ergebnis des MBL als fp oder fn bewertet.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 8.: Verhältnis von positiven und negativen Klassifizierungen zueinander
Eine der einfachen zu berechnenden Metriken ist die „Purity-Metrik”, auch als „Precision” bekannt:
Abbildung in dieser Leseprobe nicht enthalten
Die Idee hinter der Metrik ist die Verwendung der Genauigkeit (im Englischen: Precision) als Prozentsatz der richtig klassifizierten positiven Beispiele tp zu allen richtig klassifizierten Beispielen tp+tn. Die Precision besitzt den Nachteil, dass die Vergleichbarkeit der Regeln untereinander problematisch ist. So ist Beispielhaft eine Regel, welche nur ein positives Beispiel abdeckt, gleichwertig mit einer Regel, welche 1000 positive Beispiel abdeckt und besser, als eine dritte Regel, welche 500 positive, aber gleichzeitig 1 negatives Beispiel abdeckt. Intuitiv sind die beiden letzten genannten Regeln qualitativ besser.
Der Gegenwert hierzu ist der „Recall”:
Abbildung in dieser Leseprobe nicht enthalten
Dieser bemisst den Anteil an negativen Beispielen tn im Verhältnis zur Gesamtzahl aller Beispiele tp+tn. Auch der Recall hat das Problem, dass er Regeln mit geringer positiver Abdeckung aber ohne negativer Abdeckung besser bemisst, als Regeln mit hoher positiver Abdeckung, welche ebenfalls einige wenige negative Beispiele Abdecken.
Die „Accuracy” versucht dem entgegen zu wirken, indem sie die Regelabdeckung im Verhältnis zur Gesamtzahl aller positiven und negativen Ergebnisse des maschinellen Lernens setzt:
Abbildung in dieser Leseprobe nicht enthalten
Hierbei sind N und P für alle Regeln konstant. Somit betrachtet diese Metrik auch die quantitative Abdeckung der gelernten Regeln (Fürnkranz 1999; Muggleton 1995).
Eine grafische Darstellungsform der Qualität eines MBL Ergebnis ist der ROC (Receiver Operating Characteristic), welches dem Gini-Koeffizienten nachempfunden ist.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 9.: Beispiel eines ROC Graphen
Der ROC Graph ist eine visuelle Darstellung der Qualität der erlernten Regeln. Sie betrachtet die Menge aller erlernten Regel und ihre Kosten. Hierbei sind Kosten als der Wert zu verstehen, welcher betrachtet, wie viele fp klassifizierte Artefakte zum Ergebnis des MBL hinzu kommen, wenn eine Regel hinzugefügt wird, die eine Menge an tp klassifizierte Artefakte erkennt. Als Beispiel dient eine nicht genauer spezifizierte Regel, welche 100 tp, aber gleichzeitig 10 fp klassifiziert. Somit sind die Kosten der Regel, dass für jedes tp, 0,1 fp klassifiziert werden. Der ROC berechnet diese Kosten für jede erlernte Regel und stellt dieser der Qualität nach absteigend dar. Hierbei wird mit dem relativen Anteil an klassifizierten tp und fp für jede Regel gerechnet, um ROC Graphen untereinander vergleichen zu können, was sich in den Skalen wieder spiegelt. Diese betrachten die relative Anzahl aller erkannten tp E [0 , 1] und fp E [0 , 1]. Somit ist an der Steigung der Graphen die Qualität der erkannten Regel ablesbar. Je größer die Fläche unter dem Graphen im Verhältnis zur betrachteten Fläche ist, desto besser sind die Ergebnisse des maschinellen Lernens, da die erkannten Regeln viele tp und wenig fp klassifizieren. Grafiken können, wie in Abbildung 9 dargestellt, die Ergebnisse mehrerer Algorithmen beinhalten, um diese direkt miteinander vergleichen zu können. Als ROC Wert wird das Verhältnis zwischen der betrachteten Fläche tp E [0 , 1] und fp E [0 , 1] und der Fläche unter dem Graphen verstanden (Hand & Till 2001; Davis & Goadrich 2006).
Die ROC Graphen dieser Arbeit basieren auf einer Berechnung, bei der die Menge der Artefakte in zehn gleich große Mengen unterteilt und der ROC für jede dieser Mengen berechnet wird. Das Ergebnis des ROC wird durch die Ermittlung der Mittelwerte aller Ergebnisse der 10 Mengen ermittelt, wobei eine in der Farbe der Funktion schraffierte Fläche wie in den ROC Graphe in in Kapitel 5.3.3 „Evaluierung der Tokenqualität” zu erkennen ist, eine Streuung der Ergebnisse andeutet.
2.3.5.2 Evaluierungsprozess
Abschließend wird, wie in Abbildung 10 dargestellt, die Validierungsmenge durch die Trainingsmenge validiert, indem das über das MBL gefundene Klassifizierungsmodell auf die Testmenge angewandt wird und über die Evaluierungsmetrik die Qualität der Regeln des Modells bewertet werden. Hierbei wird eine Aufteilung der Daten von 2 / 3 für die Trainingsmenge und 1 / 3 für die Validierungsmenge empfohlen. Diese Aufteilung hängt von der betrachteten Problemstellungen und den verfügbaren Daten ab und kann dementsprechend variieren (Witten, Frank & Hall 2011).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 10.: Evaluierung der MBL Ergebnisse
Die bestehenden Regeln des Modells sind das Ergebnis des maschinellen Lernens und diese können nun auf neue Datensätze angewandt werden.
3 Aktuelle Forschung
Dieses Kapitel dient der Übersicht zur aktuellen Forschung. Hierbei werden zwei unterschiedliche Herangehensweisen zur Erkennung und Messung von IT-Sicherheitsschwachstellen, „Analytische Methoden und Modelle” und die „Empirische Untersuchung” betrachtet und die aktuelle Forschung in diesen Untersuchungsbereichen, in Hinblick auf die Fragestellung dieser Arbeit, vorgestellt. Zum Abschluss erfolgt eine Diskussion der aktuellen Forschung im Bezug auf die Problemstellung der Arbeit.
3.1 Übersicht der Herangehensweisen der aktuellen Forschung
In der Wissenschaft wurden die Problemstellungen der automatisierten Erkennung von SI und das Messen von Aufwänden in IT-Sicherheit mehrfach behandelt. Dieses Kapitel gibt einen Überblick über Untersuchungsmethoden und -ergebnisse der aktuellen Forschung wieder. Die Recherche hat ergeben, dass die verschiedenen Ansätze, wie in Abbildung 11 dargestellt, in zwei verschiedene Herangehensweisen, die analytische und die empirische Untersuchungsmethodik, aufgegliedert werden können, wobei Untersuchungen die Möglichkeit haben, beide Methoden miteinander zu kombinieren.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 11.: Vorgehensweisen zur Messung von Aufwänden in der IT-Sicherheit
Die analytische Herangehensweise beruht auf der Entwicklung von Methoden und Modellen zur Erkennung von Verletzungen in der IT-Sicherheit durch Bugs in der Software, basierend auf der systematischen Untersuchung von gesammelten Daten aus Softwarerepositories, Bugtracker und Schwachstellendatenbanken (im folgendem VDB für „Vulnerability Database” genannt) und lässt sich in die Bereiche „Mathematische Modelle“ und „Automatische Methoden“ weiter unterteilen. Die zweiten Herangehensweise beinhaltet die empirische Untersuchungen, welche basierend auf Beobachtungen und Erfahrungen, Erkenntnisse zur IT-Sicherheit in der Softwareentwicklung und im Softwarelebenszyklus liefert. Beide Herangehensweisen werden im nächsten Abschnitt genauer vorgestellt.
3.2 Analytische Methoden zur Erkennung von IT-Schwachstellen
Die analytischen Methoden zur Erkennung von Verletzungen in der IT-Sicherheit können in zwei Bereiche unterteilt werden: mathematische Modelle und automatisierte Methoden. Bei den mathematischen Modellen wird versucht, über ein Modell durch das Betrachten von historischen und aktuellen Daten eine Aussage über ein zukünftiges Verhalten, wie Beispielweise die Wahrscheinlichkeit für Schwachstellen zu treffen. Automatische Methoden führen eine systematische Analyse basierend auf vorhandenen Daten mit Hilfe eines Algorithmus durch, um Erkenntnisse zur untersuchten Fragestellung der IT-Sicherheit zu gewinnen und diese anwenden zu können. Als Beispiel dient die statische Codeanalyse, welche den Code eines Projekts untersucht, um Schwachstellen und Fehler direkt aus dem Code ableiten zu können.
Im folgendem wird auf diese Methoden eingegangen und den Stand der aktuellen Forschung beschrieben.
3.2.1 Mathematische Modelle
Mathematische Modelle versuchen mittels mathematischer Notation ein beobachtetes Verhalten zu beschreiben, in diesem Fall die Entdeckung von Schwachstellen in der untersuchten Software. Ozment untersucht die Zuverlässigkeit von sieben Wachstumsmodellen (Solow-Modelle) zur Voraussage von zukünftigen Schwachstellen in der Software anhand des Betriebssystems OpenBSD, indem er die Schwachstellen über einen Zeitraum von 54 Monaten sammelte und die Voraussagequalität dieser Modelle anhand der gesammelten Daten überprüft. Beim Solow-Modell handelt es sich um ein ursprünglich aus der Volkswirtschaftslehre stammendes Modell, welches das Wachstum als eine Funktion beschreibt, dessen Steigung mit höherem Funktionswert exponentiell abnimmt, da ein Gleichgewicht zwischen Aufwand und Bedarf entsteht. Sie ist bildlich als Logarithmusfunk- tion vorstellbar. Nur drei der sieben Modelle haben für den Autor eine akzeptable Erkennungsrate im Bereich von 55-60% (Ozment 2006).
[...]
1 Abrufbar unter: www.osvdb.org
2 Abrufbar unter: nvd.nist.gov
3 Abrufbar unter: www.cvedetails.com
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.