数据挖掘实战课程
简单线性回归
- 概念:Regression Analysis
研究自变量与因变量直接的关系形式的分析方法,建立因变量y与自变量x_i之间的回归模型,来预测因变量y的发展趋势。
分类
- 线性回归
- 简单线性回归
- 多重线性回归
- 非线性回归
- 逻辑回归
- 神经网络
简单线性回归
暨 y = a + bx + e(残差,随机误差)
- 根据预测目标,确定因变量和自变量
- 绘制散点图,确定回归模型类型[相关系数]
- 估计模型参数,建立回归模型
- 对回归模型进行检验
- 利用回归模型进行预测
对回归模型进行检验
回归方程的精度就是用来表示实际观测点和回归方程的拟合程度的指标,使用判定系数来度量。
判定系数为$jc $
,相关系数$R$
jc= R^2 = \frac{ESS}{TSS}=1-\frac{RSS}{TSS}
其中,
$TSS=\Sigma(Y_i-\overline{Y})^2$
总离差平方和
$ESS=\Sigma(\overline{Y_i}-\overline{Y})^2$
回归平方和
$RSS=\Sigma(Y_i-\overline{Y_i})^2$
残差平方和
总结
- 建立模型 lrModel = sklearn.linear_model.LinearRegression()
- 训练模型 lrModel.fit(x,y)
- 模型评估 lrModel.score(x,y)
- 模型预测 lrModel.predict(x)
多重线性回归
Multiple Linear Regression
y = \alpha + \beta_1 x_1 + \beta_2 x_2 + ... + + \beta_n x_n + e
$\beta_n$
偏回归系数,
$e$
随机误差
步骤与简单线性回归一致
- 根据预测目标,确定因、自变量
- 绘制散点图,确定回归模型
- 估计模型参数,建立回归模型
- 对回归模型中进行检验
判定系数$R$
R^2 = \frac{ESS}{TSS}=1-\frac{RSS}{TSS}
修正为
\bar{R}^2 = 1-\frac{RSS/(n-k-1)}{TSS/(n-1)}
$TSS=\Sigma(Y_i-\overline{Y})^2$
总离差平方和
$ESS=\Sigma(\overline{Y_i}-\overline{Y})^2$
回归平方和
$RSS=\Sigma(Y_i-\overline{Y_i})^2$
残差平方和
$n$
样本个数,
$K$
自变量个数
pandas.tools.plotting.scatter_matrix(matrix,figsize,diagonal)
一元非线性回归
Univariate Nonlinear Regression
即一元N次方程,一般转换为多元一次回归方程
pf = sklearn.preprocessing.PolynomialFeatures(degree = 2)
x_2_fit = pf.fit_transform(x)
逻辑回归
Logistic Regression
分类变量的回归分析,概率型非线性回归
- 优点:易实现部署,执行效率和准确度高
- 确定:离散型的自变量需要通过生成虚拟变量的方式来使用
Sigmoid函数
g(x) = \frac{1}{1+e^{-x}}
Logistic Regression Equation
g(y) = \frac{1}{1+e^{-y}}
g(x_1,x_2,x_n) = \frac{1}{1+e^{-f(x_1,x_2,x_n)}}
= \frac{1}{1+e^{-(\alpha_1 x_1+\alpha_2 x_2+...+\alpha_n x_n)}}
虚拟变量
dummy variables, 也叫哑变量和离散特征编码,可用来表示分类变量、非数量因素可能产生的影响
- 尺寸:有大小意义的
- 颜色:无大小意义的
有大小意义的,利用dict处理
pandas.Series.map(dict)
神经网络
Aritificial Neural Network
人工神经网络,数学模型or计算模型
非线性统计建模
$x_i$
-> $w_i$
->
$g(\Sigma^n_{i=0} x_i w_i)$
->$y$
f(x_0,x_1,x_2,...,x_n) = \Sigma^{n}_{i=0}{x_i w_i}
g(f(x_0,x_1,x_2,...,x_n))
= g(\Sigma^{n}_{i=0}{x_i w_i})
= \frac{1}{1+e^{-(\Sigma^{n}_{i=0}{x_i w_i})}}
复杂神经网络:多层
- 输入层
- 隐藏层
- 输出层
sklearn.neural_network.MLPClassifier
activation 激活函数
分类
- 概念学习
- 监督学习
- 无监督学习
分类算法:一般属于监督学习
- 无监督学习
KNN
K Nearest Neighbors
交叉验证(cross validation)
- 训练集(Train Set)
- 测试集(Test Set)
K-fold Cross Validation
综合得分为$\frac{\Sigma^{10}_{i=1}S_i}{10}$
iris数据集:多重变量数据集,花卉
测试、训练 一般三七分
neighbors.KNeighborsClassifier
贝叶斯分类算法
Bayes Theorem
P(A|B) = \frac{P(A \cap B)}{P(B)} = \frac{P(B|A)P(A)}{P(B)}
朴素贝叶斯分类:以生病预测来说明
sklearn.naive_bayes
- GaussinaNB 高斯
- BernoulliNB 伯努利
- MultinomialNB 多项式
决策树
Decision Tree
有监督学习,可处理数值型和非数值型
pydot,graphviz-2.38
树结构的规模:由叶子数量来控制
sklearn.tree.export_graphviz()
- dtModel
- out_file
- class_names
- feature_names
- filled
- rounded = True
- special_characters
随机森林
RandomForest
包含多个决策树的分类器
优点:
- 适合离散型和连续性的属性数据
- 对海量数据,尽量避免了过度拟合的问题
- 对高纬度数据,不会出现特征选择困难的问题
- 实现简单,训练速度快,适合分布式计算
rfcModel = RandomForestClassifier(
n_estimators = 10,
max_leaf_nodes = None
)
SVM
Support Vector Machine
svm.SVC(), svm.NuSVC(), svm.LinearSVC()