一、概述
1.回归:利用样本(已知数据),产生拟合方程,从而对未知数据进行预测
2.分类线性回归:一元线性;多元线性
逻辑回归:实际上预测的是数据X属于分类Y的概率p。逻辑回归公式由 log(p/(1-p))=β0+β1X 推导求得。
非线性回归
3.求解回归时需考虑的问题样本是否符合正态分布假设?
误差是否满足独立性、等方差、正态分布等假设条件?
是否存在离群值导致模型产生较大误差?
线性模型是否合理,是否存在拟合不足?
观察拟合方程,是否存在多重共线性?
如何选择变量?如何进行特征工程?
4.笔者需要进一步解决的问题怎么进行正态性检测?
怎么处理离群点?
非线性回归方程要怎么构建?
R中有岭回归可以解决多重共线性的问题,python中要怎么处理?
怎么构建多重逻辑回归模型,用于预测分类大于2的情形?
5.个人思考
从本质上来看,回归分析不管是线性回归还是逻辑回归,拟合的都是一条线(二维)或者一个平面(三维)或者更高维度,因此更适合使用连续型的数值型特征进行预测,而对于有太多分类型特征的数据,即使转换为哑变量,也必然会存在拟合不足的现象。
二、线性回归协方差和相关系数:评估线性相关性协方差
cov(X,Y)=E[(X-E[X])(Y-E[Y])]相关系数:消除协方差中数据变动的影响
相关系数r=(x和y的协方差)/(x的标准差*y的标准差)相关系数函数:data.corr()
2.决定系数R2:评估模型精确度有多少百分比的y波动被回归曲线描述=R2=1-误差平方和/总波动
值大小:R2越大,回归模型越精确
3.线性回归算法概述将拟合平面(线)整合成矩阵形式,矩阵计算通常比较高效
真实值和预测值之间肯定是存在差异(用ε表示误差)。误差服从高斯分布,将拟合函数带入到误差服从的高斯分布中。
通过最大似然估计推导出最小二乘法。
求解最小二乘法。在实际应用中一般使用梯度下降策略,而不是直接求解。
4.python进行线性回归一般框架
a.在sklearn中搜索linear regression用法
b.提取特征和标签
#提取特征和标签
#特征features
exam_X=data.loc[:,data.columns!='result']
#标签label
exam_X=data.loc[:,data.columns=='result']
c.建立训练数据和测试数据
from sklearn.cross_validation import train_test_split
#建立训练数据和测试数据
X_train,X_test,Y_train,Y_test=train_test_split(exam_X,exam_Y,train_size=.8)
print(X_train.shape)
print(X_test.shape)
print(Y_train.shape)
print(Y_test.shape)
d.训练模型
#第一步:导入线性回归
from sklearn.linear_model import LinearRegression
#第二步:创建模型:线性回归
model=LinearRegression()
#第三步:训练模型
model.fit(X_train.values.reshape(-1,1),Y_train.values.reshape(-1,1))
e.评估模型:决定系数R2
model.score(X_test,Y_test)
f.最佳拟合线
#截距
a=model.intercept_
#回归系数
b=model.coef_
三、逻辑回归:最经典,最牛逼的二分类算法
1.sigmoid函数
y=S(z)=1/(1+exp(-z))
其中,z=Θ(转置) · x(例如,z=a+bx)
2.使用python进行逻辑回归分析
a.谷歌Sklearn logistic regression用法
b.提取特征和标签
#提取特征和标签
#特征features
exam_X=data.loc[:,data.columns!='result']
#标签label
exam_Y=data.loc[:,data.columns=='result']
c.建立训练数据和测试数据
from sklearn.cross_validation import train_test_split
#建立训练数据和测试数据
X_train,X_test,Y_train,Y_test=train_test_split(exam_X,exam_Y,train_size=.8)
print(X_train.shape)
print(X_test.shape)
print(Y_train.shape)
print(Y_test.shape)
d.训练模型
#第一步:导入逻辑回归
from sklearn.linear_model import LogisticRegression
#第二步:创建模型:逻辑回归
model=LogisticRegression()
#第三步:训练模型
model.fit(X_train,Y_train)
e.评估模型
model.score(X_test,Y_test)
3.预测
a.标示出各标签概率
model.predict_proba([[1,2],[0,1]])
b.预测结果值
model.predict([[1,2],[0,1]])
c.构建回归函数
#截距
a=model.intercept_
#回归系数
b=model.coef_
#构建逻辑回归函数
def y_pred(x,y):
#构建线性回归函数
z=a+b[0,0]*x+b[0,1]*y
#构建逻辑回归函数
return 1/(1+np.exp(-z))