0

다양한 속성을 가진 의류/액세서리 제품 모음 (파이썬 객체로 표시)이 있습니다. 이러한 제품은 외부 API를 쿼리하고 판매자 웹 사이트를 스크랩하여 다양한 속성을 얻는 조합으로 생성됩니다.복잡한 객체의 파이썬 결정 트리 분류

제 목표는 이러한 특성을 사용하여 제품을 바지, 티셔츠, 드레스 등의 카테고리로 정확하게 분류하는 분류 기준을 개발하는 것입니다.

필자는 수동으로 분류 된 무작위로 균일하게 선택된 전체 데이터 세트의 하위 세트 인 교육 및 테스트 데이터 세트를 모두 보유하고 있습니다.

나는 기계 학습을 전문으로하는 전직 대학 동료와 이야기를 나누었으며 의사 결정 트리를 사용하도록 제안했습니다. 그러나 Python의 의사 결정 트리 라이브러리는 텍스트 속성을 기반으로 데이터를 분류하는 데 집중하는 것이 아니라 매우 수치 적으로 집중된 것으로 보입니다.

나는 Scikit Learn과 같은 라이브러리를 알고 있지만 간략한 분석을 통해 일반적으로 내가 필요로하는 것보다 규칙에 대한 논리가 간단하다는 것을 알 수 있습니다.

접근 방식, 라이브러리, 코드 구조 등에 대한 제안은 크게 감사하겠습니다. 그러나이 질문의 주된 초점은인데 가장 적합한 Python 컴퓨터 학습 라이브러리 (있는 경우)가 입니다.

  • 이름 (str)
  • 설명 (str)
  • available_sizes ([str, str...])
  • available_colours ([STR, STR ...])
  • :

    제품 특성

    에는 다음이 포함
  • 가격 (float)
  • url (,653,210)
  • CATEGORY_NAME (str)
  • 이미지 ([str, str...] - URL을)

제품의 예 :

당신이 사용할 수있는
{ 'category': u"Men's Accessories", 
    'colours': [u'White'], 
    'description': u'Keep your formal style looking classic with this white short sleeve Oxford shirt with roll up sleeve detailing.', 
    'ean': u'', 
    'gender': u'M', 
    'images': [ u'http://media.topman.com/wcsstore/TopMan/images/catalog/83D21DWHT_large.jpg', 
        u'http://media.topman.com/wcsstore/TopMan/images/catalog/83D21DWHT_2_large.jpg', 
        u'http://media.topman.com/wcsstore/TopMan/images/catalog/83D21DWHT_3_large.jpg', 
        u'http://media.topman.com/wcsstore/TopMan/images/catalog/83D21DWHT_4_large.jpg'], 
    'last_scraped': datetime.datetime(2014, 11, 1, 7, 13, 28, 943000), 
    'merchant_id': 2479L, 
    'merchant_uri': u'http://www.topman.com/en/tmuk/product/white-oxford-short-sleeve-shirt-157702?geoip=noredirect', 
    'name': u'White Oxford Short Sleeve Shirt', 
    'price': 26.0, 
    'sizes': [u'XXS', u'XS', u'S', u'M', u'L', u'XL', u'XXL']} 
+0

내가 당신의 목표를 완전히 이해하고 있는지 확신 할 수는 없지만 OpenCV에는 분류 기계가 있습니다. 13 장의 ch13 참조 : http://www.cs.haifa.ac.il/~dkeren/ip/OReilly-LearningOpenCV.pdf In parituclar , 486 페이지의 이진 의사 결정 트리 섹션을 참조하십시오. 유독 한 버섯은 유용한 모형일지도 모른다. egs는 C이지만 코드는 Python에서 쉽게 실행되도록 수정 될 수 있습니다. – Ryan

+0

해당 분류 기준으로 달성하고자하는 것이 무엇인지 간단히 설명해 주시겠습니까? 사용자 입력 범주와 데이터베이스의 실제 제품 간의 매핑을 찾고 있습니까? – tttthomasssss

+0

@tttthassasss 다른 시스템의 사용자가 수동으로 입력 한 외부 API에서 오는 제품 데이터가 있습니다. 분류의 품질은 소름이 끼치므로 제품 속성을 기반으로 올바른 내부 카테고리에 제품을 할당하는 시스템을 개발해야합니다. – Prydie

답변

2

scikit을 배우기하지만 전처리가 필요하여 데이터. 의사 결정 트리의 다른 구현은 범주 데이터를 직접 처리 할 수 ​​있지만 문제를 해결할 수는 없습니다. 그래도 데이터를 전처리해야합니다.

먼저 이미지를 사용하지 않는 것은 다소 복잡합니다. 다른 모든 변수의 경우 기계 학습에 적합한 방식으로 인코딩해야합니다. 예를 들어, 사용 가능한 크기는 주어진 크기가 사용 가능한지 여부에 따라 0 또는 1로 인코딩 될 수 있습니다. 고정 된 문자열 집합에서 온 경우 색상을 범주형으로 인코딩 할 수 있습니다. 자유 텍스트 필드 인 경우 분류 기준을 사용하면 좋지 않을 수 있습니다 (예 : 사람들이 회색과 회색을 사용하고 있거나 완전히 다른 두 값이거나 오타가있을 수 있음)

설명 및 이름은 다음과 같습니다. 아마도 각 제품마다 고유하므로 범주 형 변수를 사용하면 각 변수가 한 번만 표시되므로 의미가 없습니다.이를 위해 단어 접근 방식을 사용하여 인코딩하는 것이 가장 좋습니다.

텍스트 분류에 대한 자습서는 tutorials section of the scikit-learn documentation에서 찾을 수 있습니다. 다른 자습서도 보길 원할 수 있습니다.

마지막으로 Naive Bayes 또는 LinearSVC와 같은 선형 분류기부터 시작하는 것이 좋습니다. 단일 트리는 실제 규칙을 추출하고 afaik 텍스트 처리에 거의 사용되지 않는 경우에 유용합니다 (수십 또는 수십만 개의 기능/단어가 있으므로 의미있는 규칙 추출이 어렵습니다). 트리 기반 방법을 사용하려면 무작위 포리스트 나 그라디언트 증폭과 같은 앙상블을 사용하면 더 나은 결과를 얻을 수 있습니다.

+0

귀하의 조언에 많은 감사드립니다. 필자는 Learning Scikit-Learning의 전자 책 사본을 픽업했습니다. Python의 기계 학습은 피쳐 추출에 대한 세부 사항을 다루고 있으며 Naive Bayes 분류기를 사용하려고합니다. – Prydie

+1

이것이 최고의 리소스인지 확실하지 않습니다. 이 저자도 제가 더 많은 것을 신뢰합니다. http://www.amazon.com/Building-Learning-Community-Experience-Distilled/dp/1782161406 packt에 대해 가지고있는 것을 증명하기 시작했습니다. 너무 많은 사실적 오류가 있기 때문에 포기했습니다. 웹 사이트 자습서는 실제로 꽤 좋은 자원이어야합니다. –

+0

흥미로운 점은, 일단 내가 끝내면 나는 당신의 제안을 살펴볼 것입니다. Learning scikit-learn이 가능하게 된 주요 도약은 ML에서의 이전 경험을 텍스트 데이터에서 기능을 추출하는 아이디어와 함께 많은 복잡한 피쳐 추출을 포함하는 OpenCV와 연결하는 것이 었습니다. – Prydie