|
- ============================================================
- Learnwares Search
- ============================================================
-
- ``Learnware Searcher`` is a key component of ``Learnware Market`` that identifies and recommends helpful learnwares to users according to their ``UserInfo``. Based on whether the returned learnware dimensions are consistent with user tasks, the searchers can be divided into two categories: homogeneous searchers and heterogeneous searchers.
-
- All the searchers are implemented as a subclass of ``BaseSearcher``. When initializing, you should assign a ``organizer`` to it. The introduction of ``organizer`` is shown in `COMPONENTS: Market - Framework <../components/market.html>`_. Then these searchers can be called with ``UserInfo`` and return ``SearchResults``.
-
- Homo Search
- ======================
-
- The homogeneous search of helpful learnwares can be divided into two stages: semantic specification search and statistical specification search. Both of them needs ``BaseUserInfo`` as input. The following codes shows how to use the searcher to search for helpful learnwares from a market ``easy_market`` for a user. The introduction of ``EasyMarket`` is in `COMPONENTS: Market <../components/market.html>`_.
-
- .. code-block:: python
-
- # generate BaseUserInfo(semantic_spec + stat_info)
- user_semantic = {
- "Data": {"Values": ["Table"], "Type": "Class"},
- "Task": {"Values": ["Regression"], "Type": "Class"},
- "Library": {"Values": ["Scikit-learn"], "Type": "Class"},
- "Scenario": {"Values": ["Business"], "Type": "Tag"},
- "Description": {"Values": "", "Type": "String"},
- "Name": {"Values": "", "Type": "String"},
- "Input": {"Dimension": 82, "Description": {},},
- "Output": {"Dimension": 1, "Description": {},},
- "License": {"Values": ["MIT"], "Type": "Class"},
- }
- user_spec = generate_rkme_table_spec(X=x)
- user_info = BaseUserInfo(
- semantic_spec=user_semantic,
- stat_info={"RKMETableSpecification": user_spec}
- )
-
- # search the market for the user
- search_result = easy_market.search_learnware(user_info)
-
- # search result: single_result
- single_result = search_result.get_single_results()
- print(f"single model num: {len(single_result)},
- max_score: {single_result[0].score},
- min_score: {single_result[-1].score}"
- )
-
- # search result: multiple_result
- multiple_result = search_result.get_multiple_results()
- mixture_id = " ".join([learnware.id for learnware in multiple_result[0].learnwares])
- print(f"mixture_score: {multiple_result[0].score}, mixture_learnwares: {mixture_id}")
-
- Hetero Search
- ======================
-
- For table-based user tasks,
- homogeneous searchers like ``EasySearcher`` fail to recommend learnwares when no table learnware matches the user task's feature dimension, returning empty results.
- To enhance functionality, the ``learnware`` package includes the heterogeneous learnware search feature, whose processions is as follows:
-
- - Learnware markets such as ``Hetero Market`` integrate different specification islands into a unified "specification world" by assigning system-level specifications to all learnwares. This allows heterogeneous searchers like ``HeteroSearcher`` to find helpful learnwares from all available table learnwares.
- - Searchers assign system-level specifications to users based on ``UserInfo``'s statistical specification, using methods provided by corresponding organizers. In ``Hetero Market``, for example, ``HeteroOrganizer.generate_hetero_map_spec`` generates system-level specifications for users.
- - Finally searchers conduct statistical specification search across the "specification world". User's system-level specification will guide the searcher in pinpointing helpful heterogeneous learnwares.
-
- To activate heterogeneous learnware search, ``UserInfo`` should contain both semantic and statistical specifications. What's more, the semantic specification should meet the following requirements:
-
- - The task type should be ``Classification`` or ``Regression``.
- - The data type should be ``Table``.
- - It should include description for at least one feature dimension.
- - The feature dimension stated here should match with the feature dimension in the statistical specification.
-
- The following codes shows how to search for helpful heterogeneous learnwares from a market
- ``hetero_market`` for a user. The introduction of ``HeteroMarket`` is in `COMPONENTS: Hetero Market <../components/market.html#hetero-market>`_.
-
- .. code-block:: python
-
- # initiate a Hetero Market
- hetero_market = initiate_learnware_market(market_id="test_hetero", name="hetero")
-
- # user_semantic should meet the above requirements
- input_description = {
- "Dimension": 2,
- "Description": {
- "0": "leaf width",
- "1": "leaf length",
- },
- }
- user_semantic = generate_semantic_spec(
- data_type="table",
- task_type="Classification",
- scenarios=["Business"],
- input_description=input_description,
- )
- user_spec = generate_stat_spec(type="table", X=train_x)
- user_info = BaseUserInfo(
- semantic_spec=user_semantic,
- stat_info={user_spec.type: user_spec}
- )
-
- # search for heterogeneous learnwares in hetero_market
- search_result = hetero_market.search_learnware(user_info)
|