逻辑回归(Logistic Regression)是广义线性回归的一种。逻辑回归是用来做分类任务的常用算法。分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上。比如一个人有没有病,又因为噪声的干扰,条件的描述的不够完全,所以可能不确定正确,还希望得到一个概率,比如有病的概率是80%。也即P(Y|X),对于输入X,产生Y的概率,Y可取两类,1或者0。

推导

Sigmod函数

  相当于线性模型的计算结果来逼近真实01标记的对数几率。

他的导数:

  

对数线性模型

  概率P的值域是[0,1],线性函数的值域是\((-\infty ,+\infty)\),要将建立一个互相映射的函数关系,log函数在[0,1]上的值域是\([-\infty,0]\),对P进行变换,使得变换之后的值域包含\([0,+\infty]\),而\(log(\frac{p}{1-p})\)满足要求。而这个称为logit变换。线性拟合

  \(log(\frac{P(x;\theta)}{1-P(x;\theta)}) = \theta x\)

  由此可得

  \(P(x;\theta) = \frac{1}{1+e^{-(\theta x)}} = h_\theta (x) \)

优点:可以算出落入 0 1的概率,无穷可导。

  假设各个样本互相独立则,服从伯努利分布。

  \(P(y = 1 |x;\theta) = h_\theta(x)\)

  \(P(y = 0 |x;\theta) = 1 - h_\theta(x)\)

  \(P(y |x;\theta) = h_\theta(x)^y(1 - h_\theta(x))^{1-y}\)

似然函数:

对于最大似然估计(MLE)就是已知了样本的分布,求最有可能导致这种分布的参数的值。也即是什么样的参数使得我们看到的这样一个数据分布出现的概率最大。

  \(L_\theta = \prod_{i=1}^{m}h_{\theta}(x^{(i)})^{y^{(i)}} (1 - h_\theta(x^{(i)}))^{(1-y^{(i)})} \)

  \(l(\theta) = logL(\theta) \)

  

损失函数:

损失函数越小,模型越好。

损失函数是似然函数的取负之后得到,最小化的损失。

拆开写:

  

理解:当y =1时,如果h的预测结果也为1,则cost为0,如果h为0,则相当于预测相反,cost为无穷,类似的y=0的时候。

合并写,全体样本的损失函数为

另外Softmax 只不过是2分类变成了K分类,本质上是一样的。

由于令损失函数等于0,无法求解析解。所以想到了用梯度下降,类似的算法还有BFGS,L-BFGS(Spark Mllib中用的),牛顿法,拟牛顿法,共轭梯度法。其中BFGS,和LBFGS由牛顿法而来,速度比梯度下降要快,但是复杂。

梯度下降:

  \(J(\theta)\) = cost

得到迭代子式:

其中 \(\alpha\)是步长。

SKLearn简单例子

if __name__ == "__main__":
path = u'iris.data' # 数据文件路径 #用pandas读数据
data = pd.read_csv(path)
x = data.values[:,:-1]
y = data.values[;-1]
le = LabelEncoder()
le.fit(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'])
y = le.transform(y) x = StandardScaler().fit_transform(x)
logreg = LogisticRegression() # Logistic回归模型
logreg.fit(x, y.ravel()) # 根据数据[x,y],计算回归参数 ,y.ravel()是reshape成一列数,对原来的y的一个引用 # 训练集上的预测结果
y_hat = logreg.predict(x)
y = y.reshape(-1) # 此转置仅仅为了print时能够集中显示
print y_hat.shape # 不妨显示下y_hat的形状
print y.shape
result = (y_hat == y) # True则预测正确,False则预测错误
print y_hat
print y
print result
c = np.count_nonzero(result) # 统计预测正确的个数
print c
print 'Accuracy: %.2f%%' % (100 * float(c) / float(len(result)))

  

  

logL(θ)=∑i=1mlog[(hθ(xi)y(i)(1−hθ(x(i)))1−y(i))]=∑i=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]

逻辑回归 Logistic Regression的更多相关文章

  1. 机器学习总结之逻辑回归Logistic Regression

    机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...

  2. 机器学习(四)--------逻辑回归(Logistic Regression)

    逻辑回归(Logistic Regression) 线性回归用来预测,逻辑回归用来分类. 线性回归是拟合函数,逻辑回归是预测函数 逻辑回归就是分类. 分类问题用线性方程是不行的   线性方程拟合的是连 ...

  3. 机器学习入门11 - 逻辑回归 (Logistic Regression)

    原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...

  4. Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)” 清晰讲解logistic-good!!!!!!

    原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D ...

  5. 机器学习方法(五):逻辑回归Logistic Regression,Softmax Regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面介绍过线性回归的基本知识, ...

  6. 机器学习 (三) 逻辑回归 Logistic Regression

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  7. ML 逻辑回归 Logistic Regression

    逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...

  8. 逻辑回归(Logistic Regression)详解,公式推导及代码实现

    逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...

  9. 【机器学习】Octave 实现逻辑回归 Logistic Regression

    ex2data1.txt ex2data2.txt 本次算法的背景是,假如你是一个大学的管理者,你需要根据学生之前的成绩(两门科目)来预测该学生是否能进入该大学. 根据题意,我们不难分辨出这是一种二分 ...

随机推荐

  1. c3p0连接数据库的3种方式

    c3p0连接数据库的3种方式,这里以mysql为例 1. 直接用set方法设置参数, 基本方法 ComboPooledDataSource dataSource = new ComboPooledDa ...

  2. 性能卓越的js模板引擎--artTemplate

    artTemplate能够将数据与View视图的分离,充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现. 在 chrome 下渲染效率测试中分别是知名引擎 Mu ...

  3. 如何利用FineBI做财务分析

    很多企业随着业务规模的增长,传统的财务分析方式采用手工摘取数据的方式,难以快速地对企财务经营状况作出及时分析和预测.现在业务人员通过使用自助式BI工具做财务分析已经成为流行,每个人都希望自己做报表,快 ...

  4. 非域客户端的office使用RMS加密服务出现‘介绍“信息权限管理服务”’服务的提示

    环境:office2007,需要使用windows RMS服务,客户机处于工作组模式,如图: 出现这个说明客户机没有发现RMS服务,可以通过导入注册表解决,如下: Windows Registry E ...

  5. Centos6.2设置静态ip和dns

    参考了如下文章:https://gist.github.com/fernandoaleman/2172388http://www.lifelinux.com/how-to-configure-stat ...

  6. CartO

    Carto documentation The following is a list of properties provided in CartoCSS that you can apply to ...

  7. emoji哈哈哈哈

    Unicode 官网上的FAQ令人发笑,啊哈哈哈 Q: What are the most popular emoji characters? Q: Do emoji characters have ...

  8. jquery 金额转换成大写

    <script language="javascript" type="text/javascript">         function Ara ...

  9. Oracle/PLSQL: ORA-06550

    参考: http://blog.csdn.net/haiross/article/details/20612135 Oracle/PLSQL: ORA-06550 Learn the cause an ...

  10. 学习sql中的排列组合,在园子里搜着看于是。。。

    学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ...