跳到主要内容

ML 在数据分析中的应用

问题

机器学习在数据分析的实际工作中有哪些应用场景?

答案

应用场景概览

场景ML 方法业务价值
用户分群K-Means 聚类精细化运营
流失预测逻辑回归 / XGBoost提前干预挽留
LTV 预测线性回归 / XGBoost指导获客预算
异常检测Isolation Forest / DBSCAN发现数据异动和欺诈
推荐系统协同过滤提升转化率和 GMV
文本分析TF-IDF + 分类评论情感、工单分类
时间序列预测Prophet / ARIMA销量预测、库存管理

异常检测

from sklearn.ensemble import IsolationForest

# 检测异常交易
X = df[['amount', 'frequency', 'avg_time_gap']]

iso = IsolationForest(contamination=0.05, random_state=42)
df['is_anomaly'] = iso.fit_predict(X)
# -1 为异常,1 为正常

anomalies = df[df['is_anomaly'] == -1]
print(f'发现 {len(anomalies)} 条异常交易')

时间序列预测

from prophet import Prophet

# 用 Prophet 预测日活
df_prophet = df[['date', 'dau']].rename(columns={'date': 'ds', 'dau': 'y'})

model = Prophet(yearly_seasonality=True, weekly_seasonality=True)
model.fit(df_prophet)

# 预测未来 30 天
future = model.make_future_dataframe(periods=30)
forecast = model.predict(future)

# 可视化
model.plot(forecast)
model.plot_components(forecast) # 趋势 + 周期分解

文本分析

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression

# 用户评论情感分析
tfidf = TfidfVectorizer(max_features=5000)
X = tfidf.fit_transform(df['comment_text'])
y = df['sentiment'] # 正面/负面

model = LogisticRegression()
model.fit(X, y)

# 关键词提取
feature_names = tfidf.get_feature_names_out()
coefs = pd.Series(model.coef_[0], index=feature_names)
print('正面关键词:', coefs.nlargest(10).index.tolist())
print('负面关键词:', coefs.nsmallest(10).index.tolist())
数据分析师的定位

数据分析师使用 ML 的目标是获取业务洞察而非追求算法极致。关注:

  1. 特征重要性 → 哪些因素关键
  2. 聚类结果 → 用户有哪些群体
  3. 预测趋势 → 业务未来走向
  4. 异常检测 → 哪些数据不正常

常见面试问题

Q1: 数据分析师和算法工程师在 ML 上的分工?

答案

维度数据分析师算法工程师
目标业务洞察模型性能
工具Scikit-learn、ProphetPyTorch、TF
关注点特征重要性、业务解释模型架构、训练优化
输出分析报告、策略建议上线模型、API

Q2: 什么时候不需要用 ML?

答案

  • 简单规则就能解决(如按阈值分群)
  • 数据量太小(< 100 条)
  • 不需要预测,只需描述性统计
  • 业务方需要的是明确规则而非概率

相关链接