Logistic回归
创始人
2024-11-14 08:04:56
0

Logistic回归模型:

适用于二分类或多分类问题,样本特征是数值型(否则需要转换为数值型)

策略:极大似然估计

算法:随机梯度 或 BFGS算法(改进的拟牛顿法)

线性回归表达式:

y_i = w\cdot x_i+b

 式子中x_i = (x_i^{(1)},x_i^{(2)},...,x_i^{(N)});w为N个特征权重组成的向量,即w=(w_1,w_2,...,w_N);b是第i个样本对应的偏置常数。

Sigmoid函数:

g(z)=\frac{1}{1+e^{-z}}

 

对数概率 

y=log(\frac{p}{1-p})

p = \frac{e^y}{1+e^y}

p=\frac{e^{wx+b}}{1+e^{wx+b}} 

Logistic 回归模型:

 p(y=1|x)=\frac{e^{wx+b}}{1+e^{wx+b}}p(y=0|x)=\frac{1}{1+e^{wx+b}}

构造似然函数:

log(L)=\sum_{i=1}^{N}y_i(wx_i+b)+log(1-p_i)

 log(L)=\sum_{i=1}^{N}y_i(wx_i+b)-log(1+e^{wx_i+b})

\hat{w},\hat{b}=argmax_{w,b}\sum_{i=1}^{N}y_i(wx_i+b)-log(1+e^{wx_i+b})

Logistic回归优化:梯度下降,分别对权重w,偏置b求导数:

\frac{\partial }{\partial w}lnL(w,b)=\frac{\partial }{\partial w}\sum_{i=1}^{N}y_i(wx_i+b)-ln(1+e^{wx_i+b})

\frac{\partial }{\partial b}lnL(w,b)=\frac{\partial }{\partial b}\sum_{i=1}^{N}y_i(wx_i+b)-ln(1+e^{wx_i+b})

综上,可归纳Logistic回归的过程:

实例:鸢尾花数据集划分: 

class Logistic_Regression:          def __init__(self):         self.coef_ = None         self.intercept_ = None         self._theta = None              def _sigmoid(self,t):         return 1./(1.+np.exp(-t))           def fit(self,X_train,y_train,eta = 0.01, n_iters =1e4):                  def J(theta,X_b,y):             y_hat = self._sigmoid(X_b.dot(theta))             try:                 return -np.sum(y*np.log(y_hat)  +(1-y)*np.log(1-y_hat)  )             except:                 return float('inf')                  def dJ(theta,X_b,y):             return X_b.T.dot(self._sigmoid(X_b.dot(theta))-y)              def gradient_descent(initia_theta,X_b,y, eta,n_iters =1e4,epsilon =1e-8 ):             theta = initia_theta             cur_iter = 0              while cur_iter < n_iters:                 gradient = dJ(theta,X_b, y)                 last_theta = theta                 theta = theta - eta * gradient                  if (abs(J(theta,X_b, y)-J(last_theta,X_b, y)) < epsilon):                     break                 cur_iter += 1              return theta          X_b = np.hstack([np.ones(len(X_train)).reshape(-1,1),X_train])         initia_theta = np.zeros(X_b.shape[1])         self._theta = gradient_descent(initia_theta,X_b,y_train,eta,n_iters)                  self.intercept_ = self._theta[0]         self.coef_ = self._theta[1:]                  return self          def predict_proba(self,X_predict):         X_b = np.hstack([np.ones(len(X_predict)).reshape(-1,1),X_predict])         return self._sigmoid(X_b.dot(self._theta))          def predict(self,X_predict):         proba = self.predict_proba(X_predict)         return np.array(proba >= 0.5,dtype = 'int')          def score(self,X_test,y_test):         y_predict = self.predict(X_test)         return accuracy_score(y_test, y_predict)          def __repr__(self):         return "LogisticRegression()" 

可视化划分:

from sklearn import datasets iris = datasets.load_iris() X = iris.data y = iris.target X = X[y<2,:2] y = y[y<2] plot_decision_boundary(log_reg,X_test) plt.scatter(X_test[y_test==0,0],X_test[y_test==0,1]) plt.scatter(X_test[y_test==1,0],X_test[y_test==1,1]) plt.show()

总结 

注意:虽然 Logistic 回归的名字叫作回归,但其实它是一种分类方法!!!

优点

  1. 逻辑斯蒂回归模型基于简单的线性函数,易于理解和实现。
  2. Logistic 回归模型对一般的分类问题都可使用。
  3. Logistic 回归模型不仅可以预测出样本类别,还可以得到预测为某类别的近似概率,这在许多需要利用概率辅助决策的任务中比较实用。
  4. Logistic 回归模型中使用的对数损失函数是任意阶可导的凸函数,有很好的数学性质,可避免局部最小值问题。

缺点

  1. Logis ic 回归模型本质上还是种线性模型,只能做线性分类,不适合处理非线性的情况,一般需要结合较多的人工特征处理使用。
  2. Logistic 回归对正负样本的分布比较敏感,所以要注意样本的平衡性,即y=1的样本数不能太少。
  3. 模型不能自动捕捉特征之间的交互作用,需要手动进行特征工程。

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...