ClickHouse/docs/tr/guides/apply-catboost-model.md
Ivan Blinkov d91c97d15d
[docs] replace underscores with hyphens (#10606)
* Replace underscores with hyphens

* remove temporary code

* fix style check

* fix collapse
2020-04-30 21:19:18 +03:00

7.4 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true e8cd92bba3 41 CatBoost Modellerini Uygulamak

Clickhouseda Bir Catboost Modeli Uygulamak

CatBoost geliştirilen ücretsiz ve açık kaynak kodlu bir GRA anddi libraryent kütüphan aesidir. Yandex makine öğrenimi için.

Bu Talimatla, Sqlden model çıkarımı çalıştırarak Clickhouseda önceden eğitilmiş modelleri uygulamayı öğreneceksiniz.

Clickhouseda bir CatBoost modeli uygulamak için:

  1. Tablo oluşturma.
  2. Verileri tabloya ekleme.
  3. Catboostu Clickhousea entegre edin (İsteğe bağlı adım).
  4. SQLDEN Model Çıkarımını çalıştırın.

Eğitim CatBoost modelleri hakkında daha fazla bilgi için bkz Eğitim ve uygulama modelleri.

Önkoşullar

Eğer yoksa Docker yine de yükleyin.

!!! note "Not" Docker sistemin geri kalanından bir CatBoost ve ClickHouse kurulumunu izole eden kaplar oluşturmanıza olanak sağlayan bir yazılım platformudur.

Bir CatBoost modeli uygulamadan önce:

1. P pullull the Docker görüntü kayıt defter theinden:

$ docker pull yandex/tutorial-catboost-clickhouse

Kod, çalışma zamanı, kütüphaneler, ortam değişkenleri ve Yapılandırma Dosyaları: bu Docker görüntü catboost ve ClickHouse çalıştırmak için gereken her şeyi içerir.

2. Docker görüntüsünün başarıyla çekildiğinden emin olun:

$ docker image ls
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
yandex/tutorial-catboost-clickhouse   latest              622e4d17945b        22 hours ago        1.37GB

3. Bu görüntüye dayalı bir Docker kabı başlatın:

$ docker run -it -p 8888:8888 yandex/tutorial-catboost-clickhouse

1. Tablo oluşturma

Eğitim örneği için bir ClickHouse tablosu oluşturmak için:

1. Etkileşimli modda ClickHouse konsol istemcisini başlatın:

$ clickhouse client

!!! note "Not" Clickhouse sunucusu Docker kapsayıcısı içinde zaten çalışıyor.

2. Komutu kullanarak tablo oluşturun:

:) CREATE TABLE amazon_train
(
    date Date MATERIALIZED today(),
    ACTION UInt8,
    RESOURCE UInt32,
    MGR_ID UInt32,
    ROLE_ROLLUP_1 UInt32,
    ROLE_ROLLUP_2 UInt32,
    ROLE_DEPTNAME UInt32,
    ROLE_TITLE UInt32,
    ROLE_FAMILY_DESC UInt32,
    ROLE_FAMILY UInt32,
    ROLE_CODE UInt32
)
ENGINE = MergeTree ORDER BY date

3. ClickHouse konsol istemcisinden çıkış:

:) exit

2. Verileri tabloya ekleme

Verileri eklemek için:

1. Aşağıdaki komutu çalıştırın:

$ clickhouse client --host 127.0.0.1 --query 'INSERT INTO amazon_train FORMAT CSVWithNames' < ~/amazon/train.csv

2. Etkileşimli modda ClickHouse konsol istemcisini başlatın:

$ clickhouse client

3. Verilerin yüklendiğinden emin olun:

:) SELECT count() FROM amazon_train

SELECT count()
FROM amazon_train

+-count()-+
|   65538 |
+-------+

3. Catboostu Clickhousea entegre edin

!!! note "Not" İsteğe bağlı adım. Docker görüntü catboost ve ClickHouse çalıştırmak için gereken her şeyi içerir.

Catboostu Clickhousea entegre etmek için:

1. Değerlendirme kitaplığı oluşturun.

Bir CatBoost modelini değerlendirmenin en hızlı yolu derlemedir libcatboostmodel.<so|dll|dylib> kitaplık. Kitaplığın nasıl oluşturulacağı hakkında daha fazla bilgi için bkz. CatBoost belgeleri.

2. Herhangi bir yerde ve herhangi bir adla yeni bir dizin oluşturun, örneğin, data ve oluşturulan kütüphaneyi içine koyun. Docker görüntüsü zaten kütüphaneyi içeriyor data/libcatboostmodel.so.

3. Yapılandırma modeli için herhangi bir yerde ve herhangi bir adla yeni bir dizin oluşturun, örneğin, models.

4. Örneğin, herhangi bir ada sahip bir model yapılandırma dosyası oluşturun, models/amazon_model.xml.

5. Model yapılandırmasınııklayın:

<models>
    <model>
        <!-- Model type. Now catboost only. -->
        <type>catboost</type>
        <!-- Model name. -->
        <name>amazon</name>
        <!-- Path to trained model. -->
        <path>/home/catboost/tutorial/catboost_model.bin</path>
        <!-- Update interval. -->
        <lifetime>0</lifetime>
    </model>
</models>

6. Catboost yolunu ve model yapılandırmasını ClickHouse yapılandırmasına ekleyin:

<!-- File etc/clickhouse-server/config.d/models_config.xml. -->
<catboost_dynamic_library_path>/home/catboost/data/libcatboostmodel.so</catboost_dynamic_library_path>
<models_config>/home/catboost/models/*_model.xml</models_config>

4. SQLDEN Model Çıkarımını çalıştırın

Test modeli için ClickHouse istemcisini çalıştırın $ clickhouse client.

Modelin çalıştığından emin olalım:

:) SELECT
    modelEvaluate('amazon',
                RESOURCE,
                MGR_ID,
                ROLE_ROLLUP_1,
                ROLE_ROLLUP_2,
                ROLE_DEPTNAME,
                ROLE_TITLE,
                ROLE_FAMILY_DESC,
                ROLE_FAMILY,
                ROLE_CODE) > 0 AS prediction,
    ACTION AS target
FROM amazon_train
LIMIT 10

!!! note "Not" İşlev modelEvaluate multiclass modelleri için sınıf başına ham tahminleri ile tuple döndürür.

Olasılığı tahmin edelim:

:) SELECT
    modelEvaluate('amazon',
                RESOURCE,
                MGR_ID,
                ROLE_ROLLUP_1,
                ROLE_ROLLUP_2,
                ROLE_DEPTNAME,
                ROLE_TITLE,
                ROLE_FAMILY_DESC,
                ROLE_FAMILY,
                ROLE_CODE) AS prediction,
    1. / (1 + exp(-prediction)) AS probability,
    ACTION AS target
FROM amazon_train
LIMIT 10

!!! note "Not" Hakkında daha fazla bilgi exp() işlev.

Örnek üzerinde LogLoss hesaplayalım:

:) SELECT -avg(tg * log(prob) + (1 - tg) * log(1 - prob)) AS logloss
FROM
(
    SELECT
        modelEvaluate('amazon',
                    RESOURCE,
                    MGR_ID,
                    ROLE_ROLLUP_1,
                    ROLE_ROLLUP_2,
                    ROLE_DEPTNAME,
                    ROLE_TITLE,
                    ROLE_FAMILY_DESC,
                    ROLE_FAMILY,
                    ROLE_CODE) AS prediction,
        1. / (1. + exp(-prediction)) AS prob,
        ACTION AS tg
    FROM amazon_train
)

!!! note "Not" Hakkında daha fazla bilgi avg() ve günlük() işlevler.

Orijinal makale