* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
7.3 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
41 | CatBoost Modellerini Uygulamak |
Clickhouse'da 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, Sql'den model çıkarımı çalıştırarak Clickhouse'da önceden eğitilmiş modelleri uygulamayı öğreneceksiniz.
Clickhouse'da bir CatBoost modeli uygulamak için:
- Tablo oluşturma.
- Verileri tabloya ekleme.
- Catboost'u Clickhouse'a entegre edin (İsteğe bağlı adım).
- SQL'DEN 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. Catboost'u Clickhouse'a 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.
Catboost'u Clickhouse'a 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ı açı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. SQL'DEN 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() İş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.