2 votos

Estimaciones de probabilidad LIBSVM en clasificación binaria

Tengo datos de entrenamiento como los siguientes :

1 1:128.319 2:71.4336 3:130.255 4:292.948 5:96.3541 6:71.942 7:136.189 8:71.5032 9:148.21 10:304.011 11:90.3781 12:99.4496 13:164.268 14:138.892 15:220.871 16:139.198 17:151.709
1 1:118.431 2:97.5874 3:92.0313 4:242.383 5:32.5916 6:91.4476 7:122.88 8:86.6046 9:104.173 10:278.208 11:100.356 12:44.0638 13:159.678 14:163.307 15:181.011 16:83.5148 17:96.1238
1 1:137.925 2:103.664 3:129.569 4:280.765 5:48.4616 6:93.4706 7:104.143 8:87.889 9:125.967 10:284.253 11:80.2913 12:51.7028 13:125.539 14:162.068 15:203.335 16:175.856 17:177.638
1 1:134.952 2:141.661 3:247.987 4:288.032 5:41.1806 6:109.573 7:117.331 8:99.5418 9:159.184 10:232.882 11:78.1744 12:75.0752 13:168.181 14:132.876 15:204.355 16:107.003 17:118.515
0 1:115.603 2:61.5781 3:132.382 4:293.832 5:65.9111 6:106.214 7:103.853 8:116.03 9:142.142 10:293.42 11:49.4609 12:97.0318 13:157.035 14:146.374 15:179.402 16:135.535 17:125.605
0 1:128.367 2:68.9784 3:83.4542 4:233.359 5:71.6529 6:69.5444 7:134.49 8:64.3986 9:87.4766 10:282.327 11:87.1273 12:61.7704 13:136.858 14:131.094 15:164.514 16:68.9703 17:70.6821
0 1:109.747 2:85.5685 3:139.116 4:309.536 5:53.0768 6:93.8608 7:100.835 8:87.8225 9:131.276 10:277.85 11:93.1516 12:49.7809 13:163.615 14:148.949 15:236.783 16:148.671 17:186.764
0 1:112.509 2:79.2363 3:153.702 4:271.478 5:74.3454 6:86.4557 7:86.2066 8:84.2486 9:156.918 10:254.445 11:74.8842 12:75.8982 13:112.379 14:108.054 15:164.201 16:84.1002 17:102.252
0 1:141.522 2:78.2754 3:127.487 4:363.352 5:91.2171 6:81.9828 7:231.043 8:113.83 9:229.079 10:437.796 11:122.712 12:115.435 13:178.213 14:155.286 15:188.521 16:131.901 17:124.573

Y cuando ejecuto el siguiente código:

[true_label, data_inst] = libsvmread('C:\Users\fypstudent\Documents\MATLAB\Training_Data\OVA_E0.txt');
model = svmtrain(true_label, data_inst, '-c 1 -g 0.07 -t 0 -b 1');
[true_label, data_inst] = libsvmread('C:\Users\fypstudent\Documents\MATLAB\Training_Data\OVA_E0.txt');
[predict_label, accuracy, prob_estimates] = svmpredict(true_label, data_inst, model, '-b 1');

Obtengo las siguientes probabilidades para los datos que proporcioné:

0.145614770432359   0.854385229567641
0.146701861245572   0.853298138754428
0.146126482529063   0.853873517470937
0.148072155086074   0.851927844913926
0.147143517011699   0.852856482988301
0.145711409800836   0.854288590199164
0.144862609974806   0.855137390025194
0.145741700456742   0.854258299543258
0.146935964238630   0.853064035761370

Me gustaría saber qué indican estas probabilidades. También obtengo una probabilidad > 0.5 para etiquetas falsas, ¿alguien puede ayudarme a entender esto?

3voto

Marc Claesen Puntos 9818

Las probabilidades devueltas, si mal no recuerdo, son $P(f(x)=1)$ en la primera columna y $P(f(x)=-1)$ en la segunda. Tu modelo parece predecir todo como negativo. Basándome en la inspección visual de tus datos, esto puede ser causado por el hecho de que no los normalizaste. Si no quieres normalizar (realmente deberías), probablemente tendrás que aumentar el valor de c.

No relacionado directamente con la pregunta, ¿por qué estás proporcionando un valor de gamma (-g 0.07) cuando estás usando el kernel lineal (-t 0)?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X