Projekt: Distanz für Stringattribute?

Moderator: Data Mining und Maschinelles Lernen

Benutzeravatar
mmi1991
Computerversteher
Computerversteher
Beiträge: 349
Registriert: 20. Okt 2011 18:46
Wohnort: Hattersheim

Projekt: Distanz für Stringattribute?

Beitrag von mmi1991 »

Welches Distanzmaß soll für Strings verwendet werden? Levenshtein? 0?
Irgendwie finde ich in der Beschreibung keine Informationen dazu.
Ophasentutor SoSe 2014, WiSe 2015/16
Alle Angaben wie immer ohne Gewähr

eneldo
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 220
Registriert: 19. Mai 2006 13:06
Kontaktdaten:

Re: Projekt: Distanz für Stringattribute?

Beitrag von eneldo »

Hallo,

String-Attribute können als nominale Attribute aufgefasst werden. In welchem Datensatz kommen solche denn vor?

Gruß

Benutzeravatar
mmi1991
Computerversteher
Computerversteher
Beiträge: 349
Registriert: 20. Okt 2011 18:46
Wohnort: Hattersheim

Re: Projekt: Distanz für Stringattribute?

Beitrag von mmi1991 »

Code: Alles auswählen

@relation german_credit

@attribute checking_status {<0,0<=X<200,>=200,'no checking'}
@attribute duration numeric
@attribute credit_history {'no credits/all paid','all paid','existing paid','delayed previously','critical/other existing credit'}
@attribute purpose {'new car','used car',furniture/equipment,radio/tv,'domestic appliance',repairs,education,vacation,retraining,business,other}
@attribute credit_amount numeric
@attribute savings_status {<100,100<=X<500,500<=X<1000,>=1000,'no known savings'}
@attribute employment {unemployed,<1,1<=X<4,4<=X<7,>=7}
@attribute installment_commitment numeric
@attribute personal_status {'male div/sep','female div/dep/mar','male single','male mar/wid','female single'}
@attribute other_parties {none,'co applicant',guarantor}
@attribute residence_since numeric
@attribute property_magnitude {'real estate','life insurance',car,'no known property'}
@attribute age numeric
@attribute other_payment_plans {bank,stores,none}
@attribute housing {rent,own,'for free'}
@attribute existing_credits numeric
@attribute job {'unemp/unskilled non res','unskilled resident',skilled,'high qualif/self emp/mgmt'}
@attribute num_dependents numeric
@attribute own_telephone {none,yes}
@attribute foreign_worker {yes,no}
@attribute class {good,bad}
Bei der AdvancedValidation: credit-g.arff
Mir ist nicht ganz klar, wie wir das Verhalten von Weka replizieren sollen, da die Strings quasi in einer wahllosen Reihenfolge in der Datendatei stehen und sich die nominalisierten Werte sich offenbar nach den Positionen dort richten.

Danke schonmal ;)
Ophasentutor SoSe 2014, WiSe 2015/16
Alle Angaben wie immer ohne Gewähr

eneldo
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 220
Registriert: 19. Mai 2006 13:06
Kontaktdaten:

Re: Projekt: Distanz für Stringattribute?

Beitrag von eneldo »

Replizieren?
Jedenfalls, dieser Datensatz enthält keine Strings, jedenfalls nicht aus der Sicht von Weka. In ' eingeschlossene Zeichenketten bezeichnen im Arff-Format Nominalwerte, String werden mit " eingeschlossen und tauchen nur im @data Bereich auf.
Gruß

Benutzeravatar
mmi1991
Computerversteher
Computerversteher
Beiträge: 349
Registriert: 20. Okt 2011 18:46
Wohnort: Hattersheim

Re: Projekt: Distanz für Stringattribute?

Beitrag von mmi1991 »

OK, stimmt, in der Hinsicht sind es Nominalwerte.
Allerdings macht es ja einen Unterschied, ob wir in dem Beispiel

Code: Alles auswählen

'no credits/all paid' -> 0
'all paid' -> 4
'existing paid' -> 1
'delayed previously' -> 2
'critical/other existing credit' -> 3
zuweisen oder

Code: Alles auswählen

'no credits/all paid' -> 2
'all paid' -> 4
'existing paid' -> 1
'delayed previously' -> 3
'critical/other existing credit' -> 0
, weil der Abstand z.B. zwischen 'no credits/all paid' und 'critical/other existing credit' bei beiden Zuweisungstabellen unterschiedlich ist.
Ich sprach von replizieren, weil wir ja für das Bestehen der Tests letztlich das Verhalten von Weka nachahmen müssen.

Der Javateil hat ja nur die Trainingsdaten zur Verfügung und die Nominalwerte kommen als Strings rein.
Ich würde jetzt naiverweise einfach die Trainingsdaten durchgehen und für jedes Attribut eine aufsteigende Ziffer für jeden bisher ungesehene Nominalattributswert zu vergeben.
Die zweite Zuweisungstabelle von oben käme also bei mir zustande, wenn für credit_history die Trainingsdaten die Werte 'critical/other existing credit', 'existing paid', 'no credits/all paid','delayed previously', 'all paid' für Trainingsbeispiele in der Reihenfolge enthalten würde.

Die numerischen Werte für die Nominalattribute wären also komplett abhängig von der Trainingsdatenreihenfolge.
Das scheint mir aber nicht das zu sein, was Weka macht. Weka scheint für die Reihenfolge auf die Definitionen der Nominalattribute zurückgreifen können. Das kann der Javateil aber AFAIK nicht.

Oder hab ich da etwas völlig falsch verstanden?

Danke schon mal
Ophasentutor SoSe 2014, WiSe 2015/16
Alle Angaben wie immer ohne Gewähr

eneldo
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 220
Registriert: 19. Mai 2006 13:06
Kontaktdaten:

Re: Projekt: Distanz für Stringattribute?

Beitrag von eneldo »

Hallo,

Weka, bzw. der k-NN Implementierung von k-NN, ist es ziemlich egal, ob die Attributwerte 'no credits/all paid', 'all paid' etc. oder A, B, C, etc. heißen. Meines Wissens benutzt auch das Weka k-NN keine Distanzfunktion, die wie z.B. VDM unterschiedliche Distanzen zwischen verschiedenen Attributwerten herleiten kann.

Also, welche Option bleibt, um den Abstand zwischen zwei nominalen Attributwerten zu bestimmen?

Gruß

Benutzeravatar
mmi1991
Computerversteher
Computerversteher
Beiträge: 349
Registriert: 20. Okt 2011 18:46
Wohnort: Hattersheim

Re: Projekt: Distanz für Stringattribute?

Beitrag von mmi1991 »

Hi,
OK, alles klar, also 0/1-Distanz. Die ausführliche Erklärung hat geholfen, vielen Dank.
In der Retrospektive würde Stringdistanz auch wenig Sinn machen :oops:

Danke und einen schönen Nachmittag.
Ophasentutor SoSe 2014, WiSe 2015/16
Alle Angaben wie immer ohne Gewähr

Antworten

Zurück zu „Data Mining und Maschinelles Lernen“