昨天和剛來專案的機器學習小白解釋了一邊什麼baseline 和pipeline,今天在這裡總結一下什麼是baseline和pipeline。
先從在linux的管道符講起,
find ./ | grep wqbin | sortinux體系下的各種命令工具的處理,可以使用管道符作為傳遞,這是一種良好的介面規範,工具的功能有公共的介面規範,就像流水線一樣,一步接著一步。
而我們只需改動每個引數就可以獲取我們想要的結果。該過程就被稱之管道機制。
乙個基礎的 機器學習的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處理的例子:
#featureunion生成訓練資料、測試資料
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所實現的功能。
pipeline =pipeline([pipeline還可以巢狀pipeline,整個機器學習處理流程就像流水工人一樣。('features
', featureunion([
('text_pipeline
', pipeline([
('vect
', countvectorizer(tokenizer=tokenize)),
('tfidf
', tfidftransformer())
])),
('findname
', finenameextractor())
]))(
'clf
', randomforestclassifier())
])
上面自定義了乙個pipeline處理物件finenameextractor,該物件是transformer,自定義乙個transformer是很簡單的,建立乙個物件,繼承自baseestimator, transformermixin即可,
**如下:
from sklearn.base import執行乙個pipeline,加上自動調參就可以了,sklearn的調參通過gridsearchcv實現=》pipeline+gridsearch。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)
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?這是因為傳統...