亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

開機時間排名——一個正態分布的應用的案例

發布時間:2020-07-10 21:55:42 來源:網絡 閱讀:1141 作者:DataStudy 欄目:開發技術

     原文鏈接:http://www.datastudy.cc/to/38

    覺得很有用,但是用不上。

    這個肯定是很多人對《統計學》這一門課程的直觀感覺,如果這貨一點用處都沒有,那是不可能的,大學的老師又不傻,沒用的課程不會做為基礎課程開設。但是你說它有用在哪里,又沒有辦法舉例出來,所以就用不上了。

    坦白來講,我不想開設一門所謂的《傻瓜都能學懂統計學》的類似課程,因為《統計學》是一門高投入,高回報的課程,也就是我們需要對它投入一定的熱情和時間去學習,去思考,它才能對你有所回應,并且,非常強烈地回應的一門科學。打個比喻,統計學就像一個高冷的美人,你想獲得美人的青睞,就必須絞盡腦汁,有所付出。

    在這里,我給大家使用一個案例,一個大家在日常生活中經常看到,但是卻可能沒有深入去思考的案例,來講解一下統計學的應用場景,這個場景涉及到的一個理論就是正態分布理論。

    下面兩個圖案你們肯定非常熟悉,對,就是360殺毒軟件的開機耗時頁面。

開機時間排名——一個正態分布的應用的案例

    大家腦洞大開,想象一下,這個功能軟件工程師是怎么設計的呢?

    你可能會覺得它是這樣子實現的:

    

    1、收集所有用戶的開機時間的數據,排好序放在一個數據庫中;

    2、然后根據你的開機時間,找出你的排名,除以總用戶數,就是你擊敗電腦占比。

    是的,這樣子設計排名算法是非常合理,但是有以下幾個問題:

    

    1、你電腦開機的時候,沒有連接網絡怎么辦呢?那就無法請求到所有的用戶的數據了對吧。

    2、就算所有的用戶的數據,已經下載到你本地,根據不完全統計,360的用戶數,估計也超過10億了吧,上10億行的數據進行比較統計,放在開機這個地方,恐怕不妥,而且做過軟件開發的人都知道,這種同步數據的方式,非常蛋疼。

    那么我覺得它是怎么設計的呢?

    我會這樣子設計,首先,收集盡量多的用戶的開機時間,然后,查看時間的分布如何。(開機時間數據鏈接: http://pan.baidu.com/s/1jGu8ZXk 密碼: epah)

 data <- read.csv("D:\\data\\20150930\\startTime.csv")

 mean(data[, 1])

 sd(data[, 1])

 hist(

   data[, 1], prob=TRUE,

   main="開機時間頻率直方圖",

   ylab="頻率", xlab="開機時間(秒)"

 )

 lines(density(data[, 1]), col="red")

開機時間排名——一個正態分布的應用的案例

    從這個圖中,我們可以看到,開機時間貌似符合正態分布,有戲!對吧,但是我只能用貌似,因為我還沒有檢測數據的正態性,好,我們使用R來檢測一下開機時間是否符合正態分布。

    檢測正態分布的方法:

    一、繪畫QQ圖,QQ圖判斷法:查看我們的數據,是否絕大部分落在中間直線的附近。

 qqnorm(

   data[, 1],

   main="QQ圖",

   ylab="y", xlab="x"

 );

 qqline(data[, 1]);

開機時間排名——一個正態分布的應用的案例

    可以看到,QQ圖中,所有的點都落在了中間的直線上,直觀上我們就可以判斷這個數據的分布符合正態分布了。

    二、夏皮羅–威克爾(Shapiro-Wilk)檢驗 法

    三、K-S檢驗法

    

    這兩種方法我就不在這里演示了,詳細請查看《R統計分析實戰》(http://www.datastudy.cc/to/36)的課程。

    驗證了數據是正態分布的之后,事情就變得非常簡單了,下面我們來看看如何進行建模。

    一、建立正態分布的模型,只需要求出正態分布的均值和標準差即可,也就是:

 data_mean <- mean(data[, 1])

 data_sd <- sd(data[, 1])

 > data_mean

 [1] 50.7848

 > data_sd

 [1] 11.10776

    二、然后保存這個數據在軟件中,有一個用戶開機時間為38秒,那么他的排名是多少呢?

 > 1 - pnorm(38, mean=data_mean, sd=data_sd)

 [1] 0.8751295

    也就是說,我們使用pnorm函數,根據正態分布的性質,就可以求出這個用戶的排名是87.5%了。

    這樣子設計這個功能,是否非常地簡單,快捷呢?但是很多人可能想不到是這樣子設計的,我自己根據自己的學習歷程,思考了一下,為什么我們會想不到這個問題可以這樣子解決呢?我覺得是大學教育的問題,大學里面,很多時候舉例子,都是很傳統的例子,大家在學習正態分布的時候,還記得教授給我們舉例是用什么例子嗎?對就是考試的平均分,以及學生成績排名的例子,還記得嗎?因為教授有很多這種學生的成績數據嘛,剛好就拿來舉例子,這沒有什么不妥。

    不妥的是,你們還記得這個排名是如何計算的嗎?我估計你們已經忘記了,因為是一種非常笨重的方法,就是從一本標準正態分布表里面查的,艾瑪,這么挫的方法,怎么可能讓你覺得它是一個可以讓計算機自動計算的問題呢?pnorm函數,完全可以替代那本所謂的標準正態分布表了,所以,如果大學里面大家都有pnorm這個函數,估計大家就可以想到這個方法了。

    好了,本文是否到這里就結束了呢?當然不是,這個是毀大家對統計學三觀的文章,還沒有震撼到你呢,怎么能夠隨隨便便就結束了呢!

    如果我們要開發一個360的競爭產品,比如叫做361安全衛士,哈哈,那么我們一開始沒有大量用戶的開機數據,不知道用戶平均開機時間是多少,我們如何實現這個功能呢?

    這個就是一個線性規劃的問題了,你不知道什么叫做線性規劃?好吧,我裝B了,解二元一次方程組你聽過了吧,艾瑪,就是這貨,我們來看看如何進行正態分布模型的竊取。

    雖然我們不知道360收集的用戶的均值和標準差是多少,但是我們知道一個正態分布的均值和標準差。這個分布叫什么?對了,就是傳說中的標準正態分布了。標準正態分布是什么?所謂的標準正態分布,是指一個正態分布,經過z值轉換進行標準化后,轉換后的z值的分布,就是標準正態分布,它有個很牛B的性質,就是均值為1,標準差為0!

    別暗爽,我故意寫錯的,標準正態分布的均值為0,標準差為1!

 hist(

   scale(data[, 1]), prob=TRUE,

   main="開機時間正態分布直方圖",

   ylab="頻率", xlab="開機時間z值"

 )

 lines(density(scale(data[, 1])), col="red")

開機時間排名——一個正態分布的應用的案例

    有了z值,有了標準正態分布,我們就可以進行方程組的建立了,剛剛我們知道了pnorm函數,是根據值進行排名的計算的,那么知道排名占比,如何計算原來對應的分數是什么呢?也就是逆運算是啥?那就是qnorm了,我們可以使用qnorm函數,根據33秒,排名5%(比95%的用戶快,意思就是從小到大排名5%,對吧,自己想一下),43秒,排名23%,計算出他們對應的標準z值是多少。

開機時間排名——一個正態分布的應用的案例

    計算出它們的標準值后,我們就可以根據z值的計算公式,也就是值減去均值除以標準差,建立二元一次方程,具體計算過程如下:

 #一個是33秒,排名5%,一個是43秒,排名23%

 #從標準正態分布中,求出5%,23%百分位對應的z值是什么

 z05_100 <- qnorm(0.05, mean=0, sd=1)

 z23_100 <- qnorm(0.23, mean=0, sd=1)

 #求解線性方程組

 #z05_100 = (33 - _mean)/_sd   =>  z05_100*_sd + _mean = 33

 #z23_100 = (43 - _mean)/_sd   =>  z23_100*_sd + _mean = 43

 #求解線性方程組

 r <- solve(

   matrix(

 c(z05_100, 1, z23_100, 1),

 nrow = 2, ncol = 2,

 byrow=TRUE

   ),

   matrix(

 c(33, 43),

 nrow = 2

   )

 );

 #進行驗證

 pnorm(33, mean=r[2, 1], sd=r[1, 1])

 pnorm(43, mean=r[2, 1], sd=r[1, 1])

 > r

  [,1]

 [1,] 11.03745

 [2,] 51.15498

 > #進行驗證

 > pnorm(33, mean=r[2, 1], sd=r[1, 1])

 [1] 0.05

 > pnorm(43, mean=r[2, 1], sd=r[1, 1])

 [1] 0.23

    到這里,我們就知道了,在360的所有用戶中,他們的開機時間的均值為51.15498秒,方差為11.03745,成功得到copy。

    好了,到這里,真的就準備結束了,從我們這兩個案例我們可以知道,如果我們可以掌握一門語言,那么,學習起統計學,肯定比我們在大學里面通過查表學習統計學更加有興趣,畢竟,替代人工,就是我們學習人工智能的目標嘛,咦,我怎么提到了人工智能了?

    很開心終于有同學問到正態分布這個問題,也就是統計學的問題,這證明大家開始腦洞大開了,數據分析的基礎技能,也就是數據處理、數據分析、數據繪圖的小技巧已經滿足不了大家了,但是大家的腦洞也只是剛開,未來的路程還很長,而代表著人工智能的數據挖掘技術,正是以統計學為基礎,進行綜合拓展的一門學科,如果大家想往數據的更深層次發展,繼續學習前進吧,數據科學是無止盡的,大家一起學習進步!

    注:本文沒有使用到奇虎360公司的任何數據,所有數據都是通過模擬出來的,方案也是我個人YY的,如果做對了,純屬巧合,如果不對,你們可以批判我,請不要告我,謝謝周先生不殺之恩。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正定县| 云安县| 乡宁县| 威海市| 陵川县| 宁晋县| 临泽县| 广汉市| 武义县| 大埔区| 宿迁市| 班戈县| 乐亭县| 灌云县| 商城县| 蓬溪县| 竹北市| 新宾| 土默特右旗| 绥宁县| 萨嘎县| 秦安县| 孙吴县| 宁阳县| 福建省| 吴川市| 宁国市| 临江市| 洛川县| 射洪县| 任丘市| 裕民县| 新野县| 西乌| 望城县| 昔阳县| 巴塘县| 玉环县| 平山县| 永平县| 宽城|