大家好! 此开篇第一个机器学习方法。
逻辑回归
一、逻辑回归原理
首先,我们看一下,线性回归
用一个线性函数对提供的已知数据进行拟合,最终得到一个线性函数,利用这个函数,对给定的输入进行预测。
示例:Sigmoid函数
用Sigmoid函数来拟合离散的目标值
其中 :截距 。 :系数Odds:几率(发生概率/不发生概率= )
2 参数求解
2.1 最大似然估计:找到 , 值让似然概率最大化
2.2 目标函数 :损失函数(代价函数 cost functon)
参数估计优化的目标->损失最小化 对数似然损失函数 (log-likehood loss function)
当
当
对β 优化求解的算法:梯度下降
寻找让损失函数 取得最小值时的 β
3 正则化:
损失函数中增加惩罚项:参数值越大惩罚越大-->让算法去尽量减少参数值
损失函数 :
● 当模型参数 β 过多时,损失函数会很大,算法要努力减少 β 参数值来让损失函数最小。
● λ 正则项重要参数,λ 越大惩罚越厉害,模型越欠拟合,反之则倾向过拟合。
● L1 正则化得到稀疏的权重值(可理解为去掉特征项权值)
● L2 正则化得到平滑的权值(可理解为减少特征项权重的比重)
二、代码示例
2.1 Scikit-Learn(SkLearn)
http://scikit-learn.org/stable/index.html
代码: from sklearn.linear_model import LogisticRegression #逻辑回归 LogisticRegression( penalty = '12', dual = False, tol = 0.0001, C = 1.0, fit_intercept = True, intercept_scaling = 1, class_weight = None, random_state = None, solver = 'liblinear', max_iter = 100, multi_class = 'ovr', verbose = 0, warm_state = False, n_jobs = 1 ) 一些重要的参数: penalty:(惩罚项) str,'l1'or'l2', default:'l2'-L1和L2正则化 C: float,default: 1.0--正则化强度的倒数,越小-->越强的正则化(惩罚越大) fit_intercept: bool,default:True--是否拟合截距 class_weight: dict or 'balanced',default:None--是否对样本加权 solver: {'newton-cg','lbfgs','liblinear','sag'},\ default:'liblinear' ---参数优化求解算法 multi_class: str,{'ovr','multinomial'},default:'ovr' --多分类问题处理方法
2.1.2逻辑回归模型的属性(结果)
Coeficient-系数 coef_:array,shape(n_classes,n_features) Coeficient of the feature in the decision function intercept_: array,shape(n_classes,) 2.2 逻辑回归示例 2.3 逻辑回归结果解释 Odd Ratio (比值 比) In(Odds1/Odds0) = beta1
三、使用技巧
3.1 模型自动化调参
在 Sklearn中用 GridSearchCV 自动化调参 from sklearn.grid_search import GridSearchCV GridSearchCV( esmtimator, param_grid, scoring = None, fit_params = None, n_jobs = 1, iid = True, refit = True, cv = None, verbose = 0 pre_dispatch = '2*n_jobs', error_score = 'raise', return_train_score = True ) 一些重要的参数: esmtimator: esmtimator object --选择一个分类模型 param_grid: dict or list of dictionaries --待搜索的所有参数组合 scoring:--模型评估指标:accuracy,precision recall cv: ---K折 cross validtion的K值
3.2 多分类问题处理
将多分类问题转换成多个二分类问题 对每一个类训练一个逻辑回归模型,有多少个类就有多少个模型 用每一个模型对新数据分别进行预测,取概率最大的模型决定新数据的预测类别
3.3 类别型特征变换
onehot 独热编码
3.4 连续型特征变换
把连续性变量 离散化 好处: 非线性--> 线性 提升稳定性,避免异常数值影响 模型更易理解
3.5 特征组合
特征组合前--对前特征离散化 特征组合后--维度会急剧膨胀 特征组合是用 高维特征 + 简单模型 来提升效果
3.6 预测概率转换为分数
例如:芝麻信用