pipeline和baseline是什麼?

2022-05-07 05:48:12 字數 3302 閱讀 5382

昨天和剛來專案的機器學習小白解釋了一邊什麼baseline 和pipeline,今天在這裡總結一下什麼是baseline和pipeline。

先從在linux的管道符講起,

find ./ | grep wqbin | sort
inux體系下的各種命令工具的處理,可以使用管道符作為傳遞,這是一種良好的介面規範,工具的功能有公共的介面規範,就像流水線一樣,一步接著一步。

而我們只需改動每個引數就可以獲取我們想要的結果。該過程就被稱之管道機制。

乙個基礎的 機器學習的pipeline 主要包含了下述 5 個步驟:

-資料讀取

-資料預處理

-建立模型

-評估模型結果

- 模型調參

上5個步驟可以抽象為乙個包括多個步驟的流水線式工作,從資料收集開始至輸出我們需要的最終結果。

因此,對以上多個步驟、進行抽象建模,簡化為流水線式工作流程則存在著可行性,流水線式機器學習比單個步驟獨立建模更加高效、易用。

管道機制在機器學習演算法中得以應用的根源在於,引數集在新資料集(比如測試集)上的重複使用。

sklearn也遵循pipeline機制,並封裝到 sklearn.pipline命名空間下面

sklearn中把機器學習處理過程抽象為estimator,其中estimator都有fit方法,表示資料進行初始化or訓練。estimator有2種:

1、特徵變換(transformer)

可以理解為特徵工程,即:特徵標準化、特徵正則化、特徵離散化、特徵平滑、onehot編碼等。該型別統一由乙個transform方法,用於fit資料之後,輸入新的資料,進行特徵變換。

2、**器(predictor)

即各種模型,所有模型fit進行訓練之後,都要經過測試集進行predict所有,有乙個predict的公共方法。

上面的抽象的好處即可實現機器學習的pipeline,顯然特徵變換是可能並行的,通過featureunion實現。特徵變換在訓練集、測試集之間都需要統一,所以pipeline可以達到模組化的目的。舉個nlp處理的例子:

#

生成訓練資料、測試資料

x_train, x_test, y_train, y_test =train_test_split(x, y)

#pipeline定義

pipeline =pipeline([

('vect

', countvectorizer()),

('tfidf

', tfidftransformer()),

('clf

', randomforestclassifier())])#

train classifier

pipeline.fit(x_train, y_train)

#predict on test data

y_pred = pipeline.predict(x_test)

featureunion

上面看到特徵變換往往需要並行化處理,即featureunion所實現的功能。

pipeline =pipeline([

('features

', featureunion([

('text_pipeline

', pipeline([

('vect

', countvectorizer(tokenizer=tokenize)),

('tfidf

', tfidftransformer())

])),

('findname

', finenameextractor())

]))(

'clf

', randomforestclassifier())

])

pipeline還可以巢狀pipeline,整個機器學習處理流程就像流水工人一樣。

上面自定義了乙個pipeline處理物件finenameextractor,該物件是transformer,自定義乙個transformer是很簡單的,建立乙個物件,繼承自baseestimator, transformermixin即可,

**如下:

from sklearn.base import

baseestimator, transformermixin

class

finenameextractor(baseestimator, transformermixin):

deffind_name(self, text):

return

true

def fit(self, x, y=none):

return

self

deftransform(self, x):

return pd.dataframe(x_tagged)

執行乙個pipeline,加上自動調參就可以了,sklearn的調參通過gridsearchcv實現=》pipeline+gridsearch。

gridsearchcv實際上也有fit、predict方法,所以,訓練與**高效抽象的,**很簡潔。

baseline這個概念是作為演算法提公升的參照物而存在的,相當於乙個基礎模型,可以以此為基準來比較對模型的改進是否有效。

通常在一些競賽或專案中,baseline就是指能夠順利完成資料預處理、基礎的特徵工程、模型建立以及結果輸出與評價,然後通過深入進行資料處理、特徵提取、模型調參與模型提公升或融合,使得baseline可以得到改進。

所以這個沒有明確的指代,改進後的模型也可以作為後續模型的baseline。

pipeline和channel的區別

在golang中,學到channel時,往往都會產生一些疑惑,和channel的區別是什麼?以下就是區別 difference channel pipeline structure streams of a go type unstructured streams of bytes platform...

NLP 2 語言結構和傳統pipeline

依賴語言符號 sign 定義更重要的概念 語言是一組符號,語法包含 一組signs,語言的詞典 lexicon 和有限的操作使乙個sign對映到另乙個 語法生成語言,當操作了一定數量次數的語法在他的詞典上 語法操作分為 上一章說的四個部分,同時進行 也有一些嚴格在morphology和syntax或...

Webx框架 Pipeline簡介

pipeline。它的含義就是管道,乙個管道可以安裝很多的閥門,可以有很多分支。它用於控制頁面的處理流程。它需要定義在pipeline.xml檔案中,該檔案中的每個標籤都是乙個閥門。該檔案中可以放一些簡單的控制語句。在專案中,下面這樣的管道配置就已經夠用了。為什麼要引入pipeline?這是因為傳統...