Pag-aaral ng makina: pag-aaral ng multi-label at aklatan ng skmultilearn
Machine Learning Multi Label Learning
Buod : Nalulutas ng pamamaraang pag-aaral ng multi-label ang problema sa pag-aaral ng isang halimbawa na may maraming mga label nang sabay. Ang artikulong ito ay nagbubuod ng maraming mga klasikong pamamaraan ng pag-aaral ng multi-label at sukatan, at nagbibigay ng isang tukoy na proseso ng pagpapatupad batay sa sklearn.
talaan ng nilalaman
- Mga sukatan, diskarte sa pag-aaral at mga pamamaraan sa pag-aaral
- Kaugnayan ng Binary
- Classifier Chain
- Label Powerset
- Random na k-Labelsets
Pangunahing sanggunian
【1】 'Isang Repasuhin sa Mga Algorithm sa Pagkatuto ng Maraming Label'
【dalawa】 'Http://scikit.ml/'
1. Pagsukat, mga diskarte sa pag-aaral at mga pamamaraan sa pag-aaral
Ang mga sukatan ng problema sa multi-label ay maaaring nahahati sa dalawang kategorya.
- Mga sukatang batay sa sample: sukat at average sa bawat sample
- Mga sukatan na nakabatay sa label: sukat at average sa bawat label.
Ang tukoy na pag-uuri ay ipinapakita sa ibaba.
Mayroong tatlong pangunahing mga diskarte sa pag-aaral para sa mga problema sa multi-label, katulad Diskarte sa unang order , Diskarte sa pangalawang order kasama si Diskarte sa mataas na antas .
- Hindi isinasaalang-alang ng unang diskarte sa pagkakasunud-sunod ang kaugnayan ng label at may mataas na kahusayan
- Isinasaalang-alang ng diskarte ng pangalawang pagkakasunud-sunod ang ugnayan sa pagitan ng dalawang mga tag
- Isinasaalang-alang ng diskarte na may mataas na pagkakasunud-sunod ang ugnayan sa pagitan ng maraming mga tag at may mahusay na pagganap.
Ang mga pamamaraan sa pag-aaral ay maaaring nahahati sa dalawang kategorya, katulad Pakikitungo na batay sa problema kasama si Pamamaraan batay sa pagbagay ng algorithm .
- Paraan ng pagbabago batay sa problema: Gawin ang mga problema sa maraming label sa mga madaling gamiting form, tulad ng mga problema sa pag-uuri ng binary, mga problema sa pagraranggo ng kategorya, o mga problema sa multi-klasipikasyon, at pagkatapos ay gumamit ng mga mayroon nang pamamaraan upang malutas ang mga ito
- Pamamaraan batay sa pagbagay ng algorithm: Iangkop ang mga mayroon nang mga algorithm, tulad ng ML-KNN, ML-DT, Rank-SVM, atbp.
Ang ilang mga algorithm ay naibubuod sa sumusunod na talahanayan.
Ang mga sumusunod na tagubilin ay pinagsama sa sklearn Paraan ng pag-aaral na nakabatay sa problema , Ang pamamaraang pagsukat ay maaaring magamit nang direkta sklearn.metrics
. Ang ginamit na hanay ng data ay ang mga sumusunod:
from sklearn.datasets import make_multilabel_classification from sklearn.model_selection import train_test_split X, Y = make_multilabel_classification(n_samples=150, n_features=6, n_classes=5, n_labels=2, allow_unlabeled=False) x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)
2. Kaugnay na Binary
Pangunahing ideya: Gawin ang problema sa pag-aaral ng multi-label sa maraming independyenteng mga problema sa pag-uuri ng binary.
Dahil ang ugnayan sa pagitan ng mga tag ay hindi isinasaalang-alang, ito ay Diskarte sa unang order .
kalamangan:
- Tantyahin ang nag-iisa na klasipikasyon ng label
- Maaaring mapalawak sa lampas sa saklaw ng kumbinasyon ng label.
Mga disadvantages:
- Hindi angkop kapag ang bilang ng mga label ay malaki
- Huwag pansinin ang ugnayan sa pagitan ng mga tag.
Ang pamamaraan ng pagbuo ng isang dalawang-classifier ay gumagamit ng one-vs-rest na pamamaraan. Maaari itong ipatupad nang direkta gamit ang sumusunod na interface, kung saan ang base classifier ay maaaring gumamit ng anumang preset classifier sa sklearn.
from sklearn.ensemble import RandomForestClassifier from sklearn import metrics from skmultilearn.problem_transform import BinaryRelevance classifier = BinaryRelevance( classifier = RandomForestClassifier(), require_dense = [False, True] ) classifier.fit(x_train, y_train) pred = classifier.predict(x_test) metrics.f1_score(y_test, pred, average='micro')
3. Classifier Chain
Pangunahing ideya: Pagbukud-bukurin ang mga label, at pagkatapos ay i-convert ang problema sa isang problema sa pag-uuri ng binary. Para sa problema sa pag-uuri ng jth binary, ang unang mga halagang j-1 na label ay ginagamit din bilang input ng tampok.
Kahit na nalulutas pa rin ito bilang isang problema sa pag-uuri ng binary, ang ugnayan ng maraming mga tag ay sapalarang isinasaalang-alang sa isang kadena na pamamaraan. Ito ay Diskarte sa mataas na antas .
kalamangan:
- Tantyahin ang nag-iisa na klasipikasyon ng label
- Maaaring mapalawak nang lampas sa saklaw ng kumbinasyon ng label
- Isaalang-alang ang ugnayan sa pagitan ng mga tag.
Mga disadvantages:
- Hindi angkop kapag ang bilang ng mga label ay malaki
- Talagang nakasalalay sa pagkakasunud-sunod ng pag-uuri ng label.
Ang pamamaraang one-vs-rest ay ginagamit upang makabuo ng isang dalawang-classifier, at ang pamamaraan ng pagpapatupad ng interface ay pareho sa Binary Relevance.
from skmultilearn.problem_transform import ClassifierChain
4. Label Powerset
Pangunahing ideya: Ibahin ang pag-aaral ng multi-label sa isang problema sa pag-uuri ng multi-class, ang bawat magkakaibang kumbinasyon ng label ay itinuturing na isang iba't ibang klase.
Isinasaalang-alang ang ugnayan sa pagitan ng maraming mga tag, ay Diskarte sa mataas na antas .
kalamangan:
- Isinasaalang-alang ang kaugnayan ng maraming mga label na gumagamit ng isang classifier
- Kapag may kasamang data sa pagsasanay ang lahat ng mga kumbinasyon ng label, karaniwang ito ang pinakamainam na solusyon.
Mga Dehado
- Kinakailangan ang data ng pagsasanay upang isama ang lahat ng mga kumbinasyon ng label
- Kapag malaki ang puwang ng label, madali itong mag-overfit.
Ang pamamaraan ng pagpapatupad ng interface ay kapareho ng Binary Relevance. Maaari rin itong direktang maging isang maginoo na problema sa maraming pag-uuri.
from skmultilearn.problem_transform import LabelPowerset
5. Random k-Labelsets
Pangunahing ideya: Ibahin ang pag-aaral ng multi-label sa pagsasama ng maraming mga problema sa pag-uuri ng maraming klase, at kukuha lamang ng isang subset ng haba K mula sa itinakdang label nang paisa-isa, at sa gayon ay maibsan ang mga pagkukulang ng Label Powerset.
Random na isinasaalang-alang ang ugnayan sa pagitan ng maraming mga tag, ay Diskarte sa mataas na antas .
kalamangan:
- Kung ikukumpara sa Kaugnayan ng Binary, maaaring mangailangan ito ng mas kaunting mga pagkakaklasipika
- Isinasaalang-alang ang ugnayan sa pagitan ng mga tag
- Kung ikukumpara sa Label Powerset, hindi madaling gawing underfit ang hindi nakikitang mga kumbinasyon ng label.
Mga disadvantages:
- Gamit ang isang random na diskarte, maaaring hindi makuha ang pinakamainam na dibisyon ng subset.
Ang pamamaraan ng pagpapatupad ng interface ay ang mga sumusunod, bahagyang naiiba, suriin ang opisyal na dokumentasyon upang maunawaan.
from sklearn.ensemble import RandomForestClassifier from sklearn import metrics from skmultilearn.ensemble import RakelD classifier = RakelD( base_classifier=RandomForestClassifier(), base_classifier_require_dense=[True, True], labelset_size=4 ) classifier.fit(X_train, y_train) pred = classifier.predict(X_train, y_train)
Sa batayan na ito, ang ilang mga pamamaraan para sa pagtukoy ng dibisyon ng subset ay binuo, at ang kaukulang interface ay matatagpuan sa opisyal na website ng skmultilearn. Ang link ng bawat classifier ay ito: http://scikit.ml/modelselection.html .