逻辑回归 Logistic Regression
逻辑回归(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的更多相关文章
- 机器学习总结之逻辑回归Logistic Regression
机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...
- 机器学习(四)--------逻辑回归(Logistic Regression)
逻辑回归(Logistic Regression) 线性回归用来预测,逻辑回归用来分类. 线性回归是拟合函数,逻辑回归是预测函数 逻辑回归就是分类. 分类问题用线性方程是不行的 线性方程拟合的是连 ...
- 机器学习入门11 - 逻辑回归 (Logistic Regression)
原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...
- 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 ...
- 机器学习方法(五):逻辑回归Logistic Regression,Softmax Regression
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面介绍过线性回归的基本知识, ...
- 机器学习 (三) 逻辑回归 Logistic Regression
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...
- ML 逻辑回归 Logistic Regression
逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...
- 逻辑回归(Logistic Regression)详解,公式推导及代码实现
逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...
- 【机器学习】Octave 实现逻辑回归 Logistic Regression
ex2data1.txt ex2data2.txt 本次算法的背景是,假如你是一个大学的管理者,你需要根据学生之前的成绩(两门科目)来预测该学生是否能进入该大学. 根据题意,我们不难分辨出这是一种二分 ...
随机推荐
- 周末惊魂:因struts2 016 017 019漏洞被入侵,修复。
入侵(暴风雨前的宁静) 下午阳光甚好,想趁着安静的周末静下心来写写代码.刚过一个小时,3点左右,客服MM找我,告知客户都在说平台登录不了(我们有专门的客户qq群).看了下数据库连接数,正常.登录阿里云 ...
- python学习笔记(基础一:'hello world'、变量、字符编码)
第一个python程序: Hello World程序 windows命令行中输入:python,进入python交互器,也可以称为解释器. print("Hello World!" ...
- java代理模式之静态代理
作为一个初级开发者,可能不会接触到代理模式,但是在很多框架的使用中都不知不觉使用了代理模式,比如servlet的过滤器链,spring的AOP,以及spring mvc的拦截器等.所以了解代理模式对于 ...
- 12款简化 Web 开发的 JavaScript 开发框架
前端框架简化了开发过程中,像 Bootstrap 和 Foundation 就是前端框架的佼佼者.在这篇文章了,我们编制了一组新鲜的,实用的,可以帮助您建立高质量的 Web 应用程序的 JavaScr ...
- JQ实现判断iPhone、Android设备
最近做了一版微信宣传页,通过JQ来判断设备,并进行下载 微信内置浏览器对下载链接进行了屏蔽,所以先进行判断,如果是微信内置浏览器,则跳转应用宝链接,如果不是,则判断是iPhone/Adroid/PC ...
- iOS之判断字符串是否为空字符的方法
- (BOOL) isBlankString:(NSString *)string { if (string == nil || string == NULL) { return YES; } if ...
- 记录下UIButton的图文妙用和子控件的优先显示
UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景: 另外记录下在父控件的子控件优先显示方法(控件置于最前面和置于最后面). 先上效果图: 1 ...
- css属性兼容主流浏览器
目前,对于网页中一些浏览器兼容性问题,可以使用css hack(css 招数)和浏览器Bug修复的方式解决. 名词解释: css Hack:针对特定浏览器编写冗余代码,这是一种欺骗浏览器的行为,预示着 ...
- JavaEE开发基础
1 JavaEE简介 Java平台有三个版本,分别是JavaSE(Java Platform, Standard Edition),JavaEE(Java Platform, Enterprise E ...
- emmet 系列(1)基础语法
emmet 系列(1)基础语法 emmet 是一个能显著提升开发html和css开发效率的web开发者工具 emmet基本上目前已知的编辑器都有相应的插件,各个编辑器的emmet插件的下载地址:点我下 ...