特征工程

面向生产环境的机器学习模型开发

Sinan Ozdemir

Data Scientist and Author

特征工程简介

  • 转换训练数据以最大化 ML 流水线性能
  • 降低计算复杂度
  • 示例
    • 融合多源数据
    • 构造新特征
    • 应用特征变换

特征工程流水线

1 https://www.manning.com/books/feature-engineering-bookcamp
面向生产环境的机器学习模型开发

融合多源数据

  • 合并来自不同数据集的数据
  • 使用多种数据类型(如数值与分类型)

益处:

  • 提升模型准确率
  • 使更复杂的模型可用

屏幕上的图表

面向生产环境的机器学习模型开发

数据聚合示例

class DataAggregator:
    def __init__(self):
        pass

    def fit(self, X, y=None):
        return self  # nothing to fit

    def transform(self, X, y=None):
        # Load data from multiple sources
        data1 = pd.read_csv('data1.csv')
        data2 = pd.read_csv('data2.csv')
        data3 = pd.read_csv('data3.csv')

        # Combine data from all sources (including X) into a single data frame
        aggregated_data = pd.concat([X, data1, data2, data3], axis=0)

        return aggregated_data  # Return aggregated data
面向生产环境的机器学习模型开发

特征构造

  • 从现有特征创建新特征
  • 基于已有数据生成新特征
  • 提升模型性能
  • 增强模型可解释性
面向生产环境的机器学习模型开发

特征构造示例

class FeatureConstructor:
    def __init__(self):
        pass

    def fit(self, X, y=None):
        return self

    def transform(self, X, y=None):
        # Calculate the mean of each column in the data
        mean_values = X.mean()

        # Create new features based on the mean values
        X['mean_col1'] = X['col1'] - mean_values['col1']
        X['mean_col2'] = X['col2'] - mean_values['col2']

        return X  # Return the augmented data set
面向生产环境的机器学习模型开发

特征变换

就地变换现有特征

  • 归一化数据分布
  • 去除离群值
  • 提升模型精度与性能
```py
```py

面向生产环境的机器学习模型开发

特征选择

从大量特征中选出子集,去除冗余与无关特征

  • 降低过拟合
  • 提升模型精度与性能
  • 提高模型可解释性

特征选择

1 https://www.manning.com/books/feature-engineering-bookcamp
面向生产环境的机器学习模型开发

特征工程示例(续)

```py
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectKBest, chi2

from sklearn.pipeline import Pipeline

pipeline = Pipeline([  # Define feature engineering pipeline

    ('aggregate', DataAggregator()),  # Aggregate data from multiple sources
    ('construction', FeatureConstructor()),  # Feature Construction

    ('scaler', StandardScaler()),  # Feature Transformation

    ('select', SelectKBest(chi2, k=10)),  # Feature Selection
])
X_transformed = pipeline.fit_transform(X)  # Fit and transform data using pipeline
面向生产环境的机器学习模型开发

进一步学习特征工程

特征工程书籍

面向生产环境的机器学习模型开发

Passons à la pratique !

面向生产环境的机器学习模型开发

Preparing Video For Download...