四步推演算法
A. 八字計算方法,如何計算八字
提起八字計算方法,大家都知道,有人問如何計算八字?另外,還有人想問生辰八字怎麼計算?你知道這是怎麼回事?其實怎樣計算生辰八字最准確生辰八字計算方法,下面就一起來看看如何計算八字?希望能夠幫助到大家!
八字計算方法
1、八字計算方法:如何計算八字?
如今信息系統的發達,轉化工具和方式很多了。具體有如下幾種:
1、手工掐指法。即使信息發展過快,使它的作用越來越淡化了。但是,它對於盲人命理師和臨時性轉化需要的人還是大所作用的。反過來,為了照顧盲人,相信市場上也有出現盲人使用的八字萬年歷工具。生辰八字的演算法公式。
2、查網路萬年歷法。網路萬年歷根據者當時定義的功能不同,也有多種類型。有通用和專業之分;有免費版和授權版之分。大家可以根據自己的需要,找一款合適的,到本地或者放在收夾里,以方便自行輸入出生時間和相關信息後,直接得到生辰八字相關信息。
3、命理網站或者命理系統查詢。隨著近些年命理文化的升溫,基於經濟利益和市場需求,很多的計算機人才也進入命理行業,研發命理系統。這類系統,現在的網路上已是鋪天蓋地了,好的壞的,多得大家都眼花繚亂了,不知取捨了。在下經驗告訴大家,命理邏輯如今還沒法到達百分百程序化的地步,排個盤,列出神煞,對那些可以用程序轉化的要素做以轉化就夠了。比如,八字,空亡,納音,神煞,命宮,胎元,大運,小運,流年等。生辰八字怎麼算出來。
4、自行系統工具。目前階段OFFICE應用已相當普級,稍加基礎的人就可以用EXCEL工具做些引用或者建個宏之類的。稍有計算機程序編寫基礎的,可以用一些VBA和VB結合資料庫做一些相關的,更甚者可以自己做成八字萬年歷工具或者命理排盤系統。
現在是電腦時代,教您電腦算八字的方法.
具體請參考!
http://jingyan..com/article/.html八字換算方法。
2、八字計算方法:生辰八字怎麼計算?
八字,全稱生辰八字,是指一個人出生時的干支歷日期,其實也就是一個人的干支歷華誕。年月日時四柱干支,每柱兩字,合共八個字,也就是生辰八字。生辰八字在中國民俗中佔有重要的位置,算八字一定要准備一本老年歷,這樣會便當很多很多!每生辰八字到底應該怎樣算呢?月刃格是不是特殊命格。
想要算本人的生辰八字,首先要明白什麼是干支歷。干支歷就是用天乾地支來表示年、月、日、時,而干支又有之分。
天干一共有十個,分別有甲、乙、丙、丁、戊、己、庚、辛、壬、癸。
地支一共有十二個,分別有子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。
陽干:甲、丙、戊、庚、壬。
陰干:乙、丁、己、辛、癸。
陽支:子、寅、辰、午、申、戌。
陰支:丑、卯、巳、未、酉、亥。
一個天乾和一個地支相配,排列起來,天干在前,地支在後,天干由甲起,地支由子起,陽干配陽支,陰干配陰支,共有六十個組合。古人就用這60個組合循環起來紀年,紀月,紀日,紀時。年、月、日、時,被稱為四柱,每注兩個字,各用干加一地支表示,一共八個字,所以叫做八字。生辰八字自動計算器。
在曉得了什麼是八字是什麼之後,我們就能夠計算本人的生辰八字了。我們在前面理解到,八字就是干支歷中的年、月、日、時四柱,那麼此時只需找到本人華誕所對應的干支歷年、月、日、時就好了。
年。年柱,即人出生的年份用干支歷表示.干支歷用干支60個組合依次紀年,一年一個組合,干支紀年,一個周期的年為甲子,第二年為乙丑,依次類推,60年一個,在計算八字的時分要格外留意每一個新年開端於每一年中的立春,而不是以正月初一。
月。干支歷以二十四節氣來劃分出一年中的12個月份,每個月含有兩個節氣。以立春節氣作為一年的個月份即寅月的開端,於是每一個節加一個氣就是一個月,每個節可代表上半月(約15天),每個氣可代表下半月,這樣每個月就包含了兩個節氣。不需設置閏月。干支紀月除十二支固定外,十干是依次排列的。於是,從甲子到癸亥,60組各不相同的干支循環更替,每5年一個周期。紀月的該組干支可稱為月柱。人們依據干支年、月柱的呈現規律就能算出當年的月干。嫌算起來費事的就去查萬年歷。
日。一個晝夜是,用60個組合來依次紀日,比方是甲子日,明天就是乙丑日,60天一個循環,新的從正子午開端。中國的干支紀日,是春秋魯隱公三年(公元前年)開端的,距今曾經有多年了。排日柱查詢萬年歷就好。
時。由日天干推時干支,假如日干為甲或己,當日子時的干支為甲子;假如日干為乙或庚,當日子時的干支為丙子;假如日干為丙或辛,當日子時的干支為戊子;假如日干為丁或壬,當日子時的干支為庚子;假如日干為戊或癸,當日子時的干支為壬子。
時辰的時間表:
子時:23~1點
丑時:1~3點
寅時:3~5點年月日時四柱推演算法。
卯時:5~7點
辰時:7~9點
巳時:9~11點
午時:11~快速推八字。
未時:13~15點八字公式。
申時:15~17點算八字最准確的方法。
怎樣計算生辰八字最准確生辰八字計算方法
酉時:17~19點
戌時:19~21點月劫格女命有什麼人生。
亥時:21~23點
在曉得了本人的華誕所對應的干支力歷的年、月、日、時之後,本人的生辰八字也就算出來了。算八字最簡單的方法。
以上就是與如何計算八字?相關內容,是關於如何計算八字?的分享。看完八字計算方法後,希望這對大家有所幫助!
B. 哪位大哥教我C。D。E。F。G。A。B。C。的電子琴和炫怎麼掐
第一講:大調音階與自然小調音階
以下所講是以"首調唱法"來講解:
首先先介紹音階結構:
先找出一個音,然後在這個音到兩倍頻率之間等分成12個半音,在這12個半音中再來選取7個音作為音階,以頻率440的A為例,頻率880就是高八度的A.
(稍等在來解釋"高八度"這個名詞)
相對音:
音名原本正式的寫法是用羅馬字,一級音的記號是I,二級是II,三級是III...
以後以1234567i來表示比較方便,i代表高八度的1,也就是兩倍頻率.
1234567i的唱名固定對應Do,Re,Mi,Fa,Sol,La,Si,Do.
幾度音的演算法:
以前的人沒有0的概念,所以規定1是1的一度音,2是1的二度音,3是1的三度音...所以i是1的八度音.
各種類型的音階1234567i之間的音程差各有不同的規定
以大調音階為例,以2代表一個全音,1代表一個半音,()內為相對音名:
(1)-2-(2)-2-(3)-1-(4)-2-(5)-2-(6)-2-(7)-1-(i)
說明:
這個意思是說凡是音階符合八個音之間的音程差是2-2-1-2-2-2-1的都叫做大調音階.
絕對音以英文字表示:
CDEFGAB
每一個英文字都代表一個固定數字的頻率,是絕對固定不變的,並且CDEFGABC八度之間的音程差是遵守大調規定為2-2-1-2-2-2-1的.
沒有原因,這一項是規定.
而所謂的C大調音階,就是指1被指定為C,並遵守大調音程規定時所產生的八個音.
所以C大調的組成音就是C,D,E,F,G,A,B,C
D大調的組成音就是D,E,F#,G,A,B,C#,D
其它大調的組成音請自行推導.
這也就是轉調時會有升降記號的原因.
接下來再看自然小調音階:
他的1234567i之間音程差的規定是:
(1)-2-(2)-1-(3)-2-(4)-2-(5)-1-(6)-2-(7)-2-(i)
小調一共有四種,今暫時只論自然小調,自然小調為常用的小調,若不特別說是什麼小調,那麼小調一般就是指自然小調.
那麼我們把1指定A,放入規定,就得到A小調的組成音:
ABCDEFGA
剛好和C大調音階所使用的音相同,因此稱A小調是C大調的對應小調,或稱附屬小調.("所使用的音相同"的意思是指沒有升降記號,但是1234567i所對應的絕對音仍然不同.)
風格與比較,直接舉實例來說比較清楚,也可暫時不用說明根音,導音等等:
我們把大調音階與小調音階的1,3,5度音都拿出來比較就很清楚了
大調(1)-4個半音-(3)-3個半音-(5),此即大和弦.
小調(1)-3個半音-(3)-4個半音-(5),此即小和弦.
大和弦和小和弦的風格差別就不用我說了吧.
第二講:常用和弦組成與推算
初學者都有聽過C這個和弦吧,今天就以這個為例作講解,並附上常用和弦供大家取用.
在正式開始前得先介紹一些東西作暖身,第一個要介紹的就是"KEY":
KEY這個單字原意是鑰匙,若沒有鑰匙便不得其門而入,故引申有"關鍵"之意,KEY在樂理上翻譯成調也是有原因的,問你什麼調就是問你的1是什麼?(1234567i當中的1),有了1被指定之後,後面的234567i才能被確定,這部分在第一講已經明白的講解完,因此1就是KEY就是決定調性關鍵,
根音:
相同的道理,1也會是決定和弦的關鍵,1在和弦中被稱為根音,意思是以1為"根據",再按規定衍生出和弦的其它音,這部分需要實例說明,會在第二講最後再交代一次.
相對音:
1234567i若沒有特別指定,我們就以大調音階視之,以下要表示和弦組成音比較方便.
那麼進入正題:
第一步要先了解和弦是什麼?
和弦就是和諧的弦音,以大和弦(1,3,5)為例,3和5是對1和聲,以相對的角度來說,1是對3和5提供了音的基準,又具備了最低音的性質,因此1有骨幹及基準的味道.
另外一點,從物理學的觀點來看,不喜歡物理的可以直接略過這一段沒關系:
1的音波長最長,3和5於和聲時會以1為基本波長作共鳴(包含泛音的部分),形成規律的復合音波,由於規律,所以聽起來和諧,這就是和弦產生的原因,也因此有別於隨意組合出的噪音.
第二步:
各種和弦的由來都是由音樂家"用耳朵"定出來的,只要是覺得和諧的組成就可以訂出一種類型的和弦,然後給他命名,就這樣,沒別的,而和弦可以有三個音,四個音,五個音...就是用聽的定出來的.
因此,去記憶各類型和弦的組成音是必要的.
第三步:
和弦的組成與推算,組成音請查表,我們直接教推算,推算的方法完全一樣.
凡組成音為(1,3,5)皆稱為大和弦,
當1=C時,就是C和弦,組成音就是(C,E,G).
當1=D時,就是D和弦,組成音就是(D,F#,A).
當1=E時,就是E和弦,組成音就是(E,G#,B)
...以此類推所有大和弦.
再舉例:
凡組成音為(1,3b,5)皆稱為小和弦,
當1=C時,就是Cm和弦,組成音就是(C,Eb,G).
當1=D時,就是Dm和弦,組成音就是(D,F,A).
當1=E時,就是Em和弦,組成音就是(E,G,B).
當1=F時,就是Fm和弦,組成音就是(F,G#,C).
...以此類推所有小和弦.
第四步:
了解了第三步的推演算法之後就會用以下這個表(X=1代表英文字ABCDEFG):
和弦---相對組成音
X-----------1,3,5
Xm---------1,3b,5
X7----------1,3,5,7b
Xm7--------1,3b,5,7b
Xmaj7------1,3,5,7
XmM7------1,3b,5,7
X6----------1,3,5,6
Xm6--------1,3b,5,6
X9----------1,3,5,7b,2
(X9組成音當中這個2是高1九度的2,不可以是高1二度的2,以下的情形類同)
X69---------1,3,5,6,2
X11---------1,3,5,7b,2,4
X13---------1,3,5,7b,2,4,6
Xmaj9------1,3,5,7,2
Xaug--------1,3,5#(這個有時候和弦符號會寫成"X+")
Xaug7------1,3,5#,7b
X7+9-------1,3,5,7b,2#
X7-5--------1,3,5b,7b
X7-9--------1,3,5,7b,2b
Xm7-5------1,3b,5b,7b
Xsus4-------1,4,5
X7sus-------1,4,5,7b
Xdim--------1,3b,5b,6(這個有時候和弦符號會寫成"X-"或者"X°")
第五步:
先不要把整個表背下來,對於初學者而言是不需要用到這么多的和弦,教這個的目的是要學會用使用法,將來遇到不會的和弦,可以依據組成音推算.
總結,上面一共介紹22種和弦類型,而1可以指定C,C#,D,D#...共十二個音,也就是說總共交代了22×12=264個和弦,夠用了吧.
第三講:轉調方法與CAPO使用
今天還是好累,先講轉調方法好了,反正份量不多.
直接舉例最快:
C調轉G調,譜記是"Key:C→G"
第一招,一步驟直接轉調範例:
原和弦進行:C→Am→Dm→G7
直接更改成:G→Em→Am→D7
說明:Key:C→G意指整支曲子從C調全曲升高到G調.
所以起始音就從C變成G,共升高5度(7個半音),因此C調其它音階及和弦都要全部升高五度.
因此可以使用下面這個表作對照:
C,D,E,F,G,A, B, C
↓↓↓↓↓↓ ↓ ↓
G,A,B,C,D,E,F#,G
這樣在回頭看一次結果就明白了.
有沒有發現什麼?對!!這剛好是C大調和G大調音階.
第二招,二步驟轉調範例:
原和弦進行:C→Am→Dm→G7
第一步先改成:1→6m→2m→57
說明:先將和弦用級數表示出.
第二步:看轉成什麼調,就是1指定什麼,G調就是1指定G,
而G調音階是G,A,B,C,D,E,F#,G
那麼G調的1,6,2,5和弦就是G,E,A,D,放上去就得到結果.
這樣在回頭看一次結果就明白了.
有沒有發現什麼?對!!這樣要轉什麼調都很方便,因此,有些市面上的和弦譜就標示數字和弦,就是為了方便轉調.
這兩招都要會哦!!
那麼接下來介紹CAPO的使用法:
CAPO又稱為"移調夾",這個是為了方便伴奏配合主唱的音域,
例如有時會用到C#或D#這類的,若沒有移調夾,就要用封閉彈法,會很累人,因此,移調夾的功用就產生出來.
範例一:
Key:C→C#
夾第一格,彈法不變.
範例二:
Key:C→D#
夾第三格,彈法不變.
範例三,問題來了:
Key:C→G
可以夾第七格,彈法不變,但是夾這么高把位不是很奇怪嗎?
於是可以使用和弦Key:C→E,然後CAPO夾第三格的方式應變.
說明:
和弦Key:C→E就是升高4個半音,加上CAPO夾第三格共升高7個半音,也就是達成了Key:C→G.
第四講:問題漫談與補充
根音找法:
規則一:
根音必須是和弦組成音的最低音.
規則二:
英文字就是根音,例如:
C的根音是C,Cm的根音也是C,C7的根音一樣是C...
同理:
Em根音就是E,G根音就是G,D7根音就是D...
規則三:
根音可指定,即俗稱的"分數和弦":
而C/G則是C和弦根因指定是G,
C/E是C和弦根因指定是E...
了解了吧?
所以:
F 根音就是F
G/B根音就是B
Em7...如你所見應該是E
那麼根音到底是哪一弦ㄋ?這就不一定了,必須是根據上面三個規則,
而根音最常出現在456弦,較特殊情況也會出現在第三弦.
那麼檢視初學者第一個學會的開放和弦C和弦,最低音是E,解釋如下:
開放C和弦的按法,以指法彈時,T彈第五弦,最低音是C,不會有問題,
會出問題的是刷法,最低音會變成E,那麼就來談談這個問題,
這么一刷下去就會變成C/E和弦,算是C和弦的轉位和弦,聽起來的感覺還是很接近C和弦,因此,初學時為了方便練習,並未特地講這個問題,就睜一隻眼閉一隻眼混過去,若講究一點的會使用C/G,也就是加按第六弦第三格,這是為了符合C和弦的順階135135...也就是說按照順序1的前面要是5,C/G還不少人使用.
然而最講究的是演奏時把第六弦悶掉,這就比較少見了.
如果不能控制不去刷到第6弦的空弦.那還是悶掉好.免的聽起來怪怪的.
不過C還算好.至少還在和弦音裡面.開放的F.Dm就糟了.還會有不適當的音跑出來.(開放的F必須把第5,6弦悶掉;開放的Dm至少必須把第6弦悶掉)
所以喜歡刷和弦的朋友.有空多練練封閉和弦吧.至少要刷出組成音.這樣刷的愉快,聽了也爽.
名詞解釋:
轉位和弦是指根音更動,由和弦組成音的其它音代替根音,直接舉例說明.
大和弦組成音是(1,3,5,1,3,5...),按順序由低而高.
轉位大和弦可以是(3,1,3,5...)
或是(5,1,3,5...)或是(3,5,1,3,5...)...
按順序又可稱第一轉位和弦,第二轉位和弦,第三轉位和弦...不過這個可以不要理他,只要知道什麼是轉位和弦即可.
C. 推薦演算法簡介
寫在最前面:本文內容主要來自於書籍《推薦系統實踐》和《推薦系統與深度學習》。
推薦系統是目前互聯網世界最常見的智能產品形式。從電子商務、音樂視頻網站,到作為互聯網經濟支柱的在線廣告和新穎的在線應用推薦,到處都有推薦系統的身影。推薦演算法是推薦系統的核心,其本質是通過一定的方式將用戶和物品聯系起來,而不同的推薦系統利用了不同的方式。
推薦系統的主要功能是以個性化的方式幫助用戶從極大的搜索空間中快速找到感興趣的對象。因此,目前所用的推薦系統多為個性化推薦系統。個性化推薦的成功應用需要兩個條件:
在推薦系統的眾多演算法中,基於協同的推薦和基於內容的推薦在實踐中得到了最廣泛的應用。本文也將從這兩種演算法開始,結合時間、地點上下文環境以及社交環境,對常見的推薦演算法做一個簡單的介紹。
基於內容的演算法的本質是對物品內容進行分析,從中提取特徵,然後基於用戶對何種特徵感興趣來推薦含有用戶感興趣特徵的物品。因此,基於內容的推薦演算法有兩個最基本的要求:
下面我們以一個簡單的電影推薦來介紹基於內容的推薦演算法。
現在有兩個用戶A、B和他們看過的電影以及打分情況如下:
其中問好(?)表示用戶未看過。用戶A對《銀河護衛隊 》《變形金剛》《星際迷航》三部科幻電影都有評分,平均分為 4 .7 分 ( (5+4+5 ) / 3=4.7 );對《三生三世》《美人魚》《北京遇上西雅圖》三部愛情電影評分平均分為 2.3 分 ( ( 3十2+2 ) /3=2.3 )。現在需要給A推薦電影,很明顯A更傾向於科幻電影,因此推薦系統會給A推薦獨立日。而對於用戶B,通過簡單的計算我們可以知道更喜歡愛情電影,因此給其推薦《三生三世》。當然,在實際推薦系統中,預測打分比這更加復雜些,但是其原理是一樣的。
現在,我們可以將基於內容的推薦歸納為以下四個步驟:
通過上面四步就能快速構建一個簡單的推薦系統。基於內容的推薦系統通常簡單有效,可解釋性好,沒有物品冷啟動問題。但他也有兩個明顯的缺點:
最後,順便提一下特徵提取方法:對於某些特徵較為明確的物品,一般可以直接對其打標簽,如電影類別。而對於文本類別的特徵,則主要是其主題情感等,則些可以通過tf-idf或LDA等方法得到。
基於協同的演算法在很多地方也叫基於鄰域的演算法,主要可分為兩種:基於用戶的協同演算法和基於物品的協同演算法。
啤酒和尿布的故事在數據挖掘領域十分有名,該故事講述了美國沃爾瑪超市統計發現啤酒和尿布一起被購買的次數非常多,因此將啤酒和尿布擺在了一起,最後啤酒和尿布的銷量雙雙增加了。這便是一個典型的物品協同過濾的例子。
基於物品的協同過濾指基於物品的行為相似度(如啤酒尿布被同時購買)來進行物品推薦。該演算法認為,物品A和物品B具有很大相似度是因為喜歡物品A的用戶大都也喜歡物品B。
基於物品的協同過濾演算法主要分為兩步:
基於物品的協同過濾演算法中計算物品相似度的方法有以下幾種:
(1)基於共同喜歡物品的用戶列表計算。
此外,John S. Breese再其論文中還提及了IUF(Inverse User Frequence,逆用戶活躍度)的參數,其認為活躍用戶對物品相似度的貢獻應該小於不活躍的用戶,應該增加IUF參數來修正物品相似度的公式:
上面的公式只是對活躍用戶做了一種軟性的懲罰, 但對於很多過於活躍的用戶, 比如某位買了當當網80%圖書的用戶, 為了避免相似度矩陣過於稠密, 我們在實際計算中一般直接忽略他的興趣列表, 而不將其納入到相似度計算的數據集中。
(2)基於餘弦相似度計算。
(3)熱門物品的懲罰。
從上面(1)的相似度計算公式中,我們可以發現當物品 i 被更多人購買時,分子中的 N(i) ∩ N(j) 和分母中的 N(i) 都會增長。對於熱門物品,分子 N(i) ∩ N(j) 的增長速度往往高於 N(i),這就會使得物品 i 和很多其他的物品相似度都偏高,這就是 ItemCF 中的物品熱門問題。推薦結果過於熱門,會使得個性化感知下降。以歌曲相似度為例,大部分用戶都會收藏《小蘋果》這些熱門歌曲,從而導致《小蘋果》出現在很多的相似歌曲中。為了解決這個問題,我們對於物品 i 進行懲罰,例如下式, 當α∈(0, 0.5) 時,N(i) 越小,懲罰得越厲害,從而使熱門物品相關性分數下降( 博主註:這部分未充分理解 ):
此外,Kary pis在研究中發現如果將ItemCF的相似度矩陣按最大值歸一化, 可以提高推薦的准確率。 其研究表明, 如果已經得到了物品相似度矩陣w, 那麼可以用如下公式得到歸一化之後的相似度矩陣w':
歸一化的好處不僅僅在於增加推薦的准確度,它還可以提高推薦的覆蓋率和多樣性。一般來說,物品總是屬於很多不同的類,每一類中的物品聯系比較緊密。假設物品分為兩類——A和B, A類物品之間的相似度為0.5, B類物品之間的相似度為0.6, 而A類物品和B類物品之間的相似度是0.2。 在這種情況下, 如果一個用戶喜歡了5個A類物品和5個B類物品, 用ItemCF給他進行推薦, 推薦的就都是B類物品, 因為B類物品之間的相似度大。 但如果歸一化之後, A類物品之間的相似度變成了1, B類物品之間的相似度也是1, 那麼這種情況下, 用戶如果喜歡5個A類物品和5個B類物品, 那麼他的推薦列表中A類物品和B類物品的數目也應該是大致相等的。 從這個例子可以看出, 相似度的歸一化可以提高推薦的多樣性。
那麼,對於兩個不同的類,什麼樣的類其類內物品之間的相似度高,什麼樣的類其類內物品相似度低呢?一般來說,熱門的類其類內物品相似度一般比較大。如果不進行歸一化,就會推薦比較熱門的類裡面的物品,而這些物品也是比較熱門的。因此,推薦的覆蓋率就比較低。相反,如果進行相似度的歸一化,則可以提高推薦系統的覆蓋率。
最後,利用物品相似度矩陣和用戶打過分的物品記錄就可以對一個用戶進行推薦評分:
基於用戶的協同演算法與基於物品的協同演算法原理類似,只不過基於物品的協同是用戶U購買了A物品,會計算經常有哪些物品與A一起購買(也即相似度),然後推薦給用戶U這些與A相似的物品。而基於用戶的協同則是先計算用戶的相似性(通過計算這些用戶購買過的相同的物品),然後將這些相似用戶購買過的物品推薦給用戶U。
基於用戶的協同過濾演算法主要包括兩個步驟:
步驟(1)的關鍵是計算用戶的興趣相似度,主要是利用用戶的行為相似度計算用戶相似度。給定用戶 u 和 v,N(u) 表示用戶u曾經有過正反饋(譬如購買)的物品集合,N(v) 表示用戶 v 曾經有過正反饋的物品集合。那麼我們可以通過如下的 Jaccard 公式簡單的計算 u 和 v 的相似度:
或通過餘弦相似度:
得到用戶之間的相似度之後,UserCF演算法會給用戶推薦和他興趣最相似的K個用戶喜歡的物品。如下的公式度量了UserCF演算法中用戶 u 對物品 i 的感興趣程度:
首先回顧一下UserCF演算法和ItemCF演算法的推薦原理:UserCF給用戶推薦那些和他有共同興趣愛好的用戶喜歡的物品, 而ItemCF給用戶推薦那些和他之前喜歡的物品具有類似行為的物品。
(1)從推薦場景考慮
首先從場景來看,如果用戶數量遠遠超過物品數量,如購物網站淘寶,那麼可以考慮ItemCF,因為維護一個非常大的用戶關系網是不容易的。其次,物品數據一般較為穩定,因此物品相似度矩陣不必頻繁更新,維護代價較小。
UserCF的推薦結果著重於反應和用戶興趣相似的小群體的熱點,而ItemCF的推薦結果著重於維系用戶的歷史興趣。換句話說,UserCF的推薦更社會化,反應了用戶所在小型興趣群體中物品的熱門程度,而ItemCF的推薦更加個性化,反應了用戶自己的個性傳承。因此UserCF更適合新聞、微博或微內容的推薦,而且新聞內容更新頻率非常高,想要維護這樣一個非常大而且更新頻繁的表無疑是非常難的。
在新聞類網站中,用戶的興趣愛好往往比較粗粒度,很少會有用戶說只看某個話題的新聞,而且往往某個話題也不是每天都會有新聞。 個性化新聞推薦更強調新聞熱點,熱門程度和時效性是個性化新聞推薦的重點,個性化是補充,所以 UserCF 給用戶推薦和他有相同興趣愛好的人關注的新聞,這樣在保證了熱點和時效性的同時,兼顧了個性化。
(2)從系統多樣性(也稱覆蓋率,指一個推薦系統能否給用戶提供多種選擇)方面來看,ItemCF的多樣性要遠遠好於UserCF,因為UserCF更傾向於推薦熱門物品。而ItemCF具有較好的新穎性,能夠發現長尾物品。所以大多數情況下,ItemCF在精度上較小於UserCF,但其在覆蓋率和新穎性上面卻比UserCF要好很多。
在介紹本節基於矩陣分解的隱語義模型之前,讓我們先來回顧一下傳統的矩陣分解方法SVD在推薦系統的應用吧。
基於SVD矩陣分解在推薦中的應用可分為如下幾步:
SVD在計算前會先把評分矩陣 A 缺失值補全,補全之後稀疏矩陣 A 表示成稠密矩陣,然後將分解成 A' = U∑V T 。但是這種方法有兩個缺點:(1)補成稠密矩陣後需要耗費巨大的儲存空間,對這樣巨大的稠密矩陣進行儲存是不現實的;(2)SVD的計算復雜度很高,對這樣大的稠密矩陣中進行計算式不現實的。因此,隱語義模型就被發明了出來。
更詳細的SVD在推薦系統的應用可參考 奇異值分解SVD簡介及其在推薦系統中的簡單應用 。
隱語義模型(Latent Factor Model)最早在文本挖掘領域被提出,用於找到文本的隱含語義。相關的演算法有LSI,pLSA,LDA和Topic Model。本節將對隱語義模型在Top-N推薦中的應用進行詳細介紹,並通過實際的數據評測該模型。
隱語義模型的核心思想是通過隱含特徵聯系用戶興趣和物品。讓我們通過一個例子來理解一下這個模型。
現有兩個用戶,用戶A的興趣涉及偵探小說、科普圖書以及一些計算機技術書,而用戶B的興趣比較集中在數學和機器學習方面。那麼如何給A和B推薦圖書呢?
我們可以對書和物品的興趣進行分類。對於某個用戶,首先得到他的興趣分類,然後從分類中挑選他可能喜歡的物品。簡言之,這個基於興趣分類的方法大概需要解決3個問題:
對於第一個問題的簡單解決方案是找相關專業人員給物品分類。以圖書為例,每本書出版時,編輯都會給出一個分類。但是,即使有很系統的分類體系,編輯給出的分類仍然具有以下缺點:(1)編輯的意見不能代表各種用戶的意見;(2)編輯很難控制分類的細粒度;(3)編輯很難給一個物品多個分類;(4)編輯很難給一個物品多個分類;(5)編輯很難給出多個維度的分類;(6)編輯很難決定一個物品在某一個類別中的權重。
為了解決上述問題,研究員提出可以從數據出發,自動找到那些分類,然後進行個性化推薦。隱語義模型由於採用基於用戶行為統計的自動聚類,較好地解決了上面提出的5個問題。
LFM將矩陣分解成2個而不是3個:
推薦系統中用戶和物品的交互數據分為顯性反饋和隱性反饋數據。隱式模型中多了一個置信參數,具體涉及到ALS(交替最小二乘法,Alternating Least Squares)中對於隱式反饋模型的處理方式——有的文章稱為「加權的正則化矩陣分解」:
一個小細節:在隱性反饋數據集中,只有正樣本(正反饋)沒有負反饋(負樣本),因此如何給用戶生成負樣本來進行訓練是一個重要的問題。Rong Pan在其文章中對此進行了探討,對比了如下幾種方法:
用戶行為很容易用二分圖表示,因此很多圖演算法都可以應用到推薦系統中。基於圖的模型(graph-based model)是推薦系統中的重要內容。很多研究人員把基於領域的模型也稱為基於圖的模型,因為可以把基於領域的模型看作基於圖的模型的簡單形式。
在研究基於圖的模型之前,需要將用戶行為數據表示成圖的形式。本節的數據是由一系列用戶物品二元組 (u, i) 組成的,其中 u 表示用戶對物品 i 產生過行為。
令 G(V, E) 表示用戶物品二分圖,其中 V=V U UV I 由用戶頂點 V U 和物品節點 V I 組成。對於數據集中每一個二元組 (u, i) ,圖中都有一套對應的邊 e(v u , v i ),其中 v u ∈V U 是用戶對應的頂點,v i ∈V I 是物品i對應的頂點。如下圖是一個簡單的物品二分圖,其中圓形節點代表用戶,方形節點代表物品,用戶物品的直接連線代表用戶對物品產生過行為。比如下圖中的用戶A對物品a、b、d產生過行為。
度量圖中兩個頂點之間相關性的方法很多,但一般來說圖中頂點的相關性主要取決於下面3個因素:
而相關性高的一對頂點一般具有如下特徵:
舉個例子,如下圖,用戶A和物品c、e沒有邊直連,但A可通過一條長度為3的路徑到達c,而Ae之間有兩條長度為3的路徑。那麼A和e的相關性要高於頂點A和c,因而物品e在用戶A的推薦列表中應該排在物品c之前,因為Ae之間有兩條路徑。其中,(A,b,C,e)路徑經過的頂點的出度為(3,2,2,2),而 (A,d,D,e) 路徑經過了一個出度比較大的頂點D,所以 (A,d,D,e) 對頂點A與e之間相關性的貢獻要小於(A,b,C,e)。
基於上面3個主要因素,研究人員設計了很多計算圖中頂點相關性的方法,本節將介紹一種基於隨機遊走的PersonalRank演算法。
假設要給用戶u進行個性化推薦,可以從用戶u對應的節點 v u 開始在用戶物品二分圖上進行隨機遊走。遊走到任一節點時,首先按照概率α決定是繼續遊走還是停止這次遊走並從 v u 節點重新開始遊走。若決定繼續遊走,則從當前節點指向的節點中按照均勻分布隨機選擇一個節點作為遊走下次經過的節點。這樣,經過很多次隨機遊走後,每個物品被訪問到的概率會收斂到一個數。最終的推薦列表中物品的權重就是物品節點的訪問概率。
上述演算法可以表示成下面的公式:
雖然通過隨機遊走可以很好地在理論上解釋PersonalRank演算法,但是該演算法在時間復雜度上有明顯的缺點。因為在為每個用戶進行推薦時,都需要在整個用戶物品二分圖上進行迭代,知道所有頂點的PR值都收斂。這一過程的時間復雜度非常高,不僅無法在線進行實時推薦,離線計算也是非常耗時的。
有兩種方法可以解決上面PersonalRank時間復雜度高的問題:
(1)減少迭代次數,在收斂之前停止迭代。但是這樣會影響最終的精度。
(2)從矩陣論出發,重新涉及演算法。另M為用戶物品二分圖的轉移概率矩陣,即:
網路社交是當今社會非常重要甚至可以說是必不可少的社交方式,用戶在互聯網上的時間有相當大的一部分都用在了社交網路上。
當前國外最著名的社交網站是Facebook和Twitter,國內的代表則是微信/QQ和微博。這些社交網站可以分為兩類:
需要指出的是,任何一個社交網站都不是單純的社交圖譜或興趣圖譜。如QQ上有些興趣愛好群可以認識不同的陌生人,而微博中的好友也可以是現實中認識的。
社交網路定義了用戶之間的聯系,因此可以用圖定義社交網路。我們用圖 G(V,E,w) 定義一個社交網路,其中V是頂點集合,每個頂點代表一個用戶,E是邊集合,如果用戶va和vb有社交網路關系,那麼就有一條邊 e(v a , v b ) 連接這兩個用戶,而 w(v a , v b )定義了邊的權重。一般來說,有三種不同的社交網路數據:
和一般購物網站中的用戶活躍度分布和物品流行度分布類似,社交網路中用戶的入度(in degree,表示有多少人關注)和出度(out degree,表示關注多少人)的分布也是滿足長尾分布的。即大部分人關注的人都很少,被關注很多的人也很少。
給定一個社交網路和一份用戶行為數據集。其中社交網路定義了用戶之間的好友關系,而用戶行為數據集定義了不同用戶的歷史行為和興趣數據。那麼最簡單的演算法就是給用戶推薦好友喜歡的物品集合。即用戶u對物品i的興趣 p ui 可以通過如下公式計算。
用戶u和用戶v的熟悉程度描述了用戶u和用戶在現實社會中的熟悉程度。一般來說,用戶更加相信自己熟悉的好友的推薦,因此我們需要考慮用戶之間的熟悉度。下面介紹3中衡量用戶熟悉程度的方法。
(1)對於用戶u和用戶v,可以使用共同好友比例來計算他們的相似度:
上式中 out(u) 可以理解為用戶u關注的用戶合集,因此 out(u) ∩ out(v) 定義了用戶u、v共同關注的用戶集合。
(2)使用被關注的用戶數量來計算用戶之間的相似度,只要將公式中的 out(u) 修改為 in(u):
in(u) 是指關注用戶u的集合。在無向社交網路中,in(u)和out(u)是相同的,而在微博這種有向社交網路中,這兩個集合的含義就不痛了。一般來說,本方法適合用來計算微博大V之間的相似度,因為大v往往被關注的人數比較多;而方法(1)適用於計算普通用戶之間的相似度,因為普通用戶往往關注行為比較豐富。
(3)除此之外,還可以定義第三種有向的相似度:這個相似度的含義是用戶u關注的用戶中,有多大比例也關注了用戶v:
這個相似度有一個缺點,就是在該相似度下所有人都和大v有很大的相似度,這是因為公式中的分母並沒有考慮 in(v) 的大小,所以可以把 in(v) 加入到上面公式的分母,來降低大v與其他用戶的相似度:
上面介紹了3種計算用戶之間相似度(或稱熟悉度)的計算方法。除了熟悉程度,還需要考慮用戶之間的興趣相似度。我們和父母很熟悉,但很多時候我們和父母的興趣確不相似,因此也不會喜歡他們喜歡的物品。因此,在度量用戶相似度時,還需要考慮興趣相似度,而興趣相似度可以通過和UserCF類似的方法度量,即如果兩個用戶喜歡的物品集合重合度很高,兩個用戶的興趣相似度很高。
最後,我們可以通過加權的形式將兩種權重合並起來,便得到了各個好有用戶的權重了。
有了權重,我們便可以針對用戶u挑選k個最相似的用戶,把他們購買過的物品中,u未購買過的物品推薦給用戶u即可。打分公式如下:
其中 w' 是合並後的權重,score是用戶v對物品的打分。
node2vec的整體思路分為兩個步驟:第一個步驟是隨機遊走(random walk),即通過一定規則隨機抽取一些點的序列;第二個步驟是將點的序列輸入至word2vec模型從而得到每個點的embedding向量。
隨機遊走在前面基於圖的模型中已經介紹過,其主要分為兩步:(1)選擇起始節點;(2)選擇下一節點。起始節點選擇有兩種方法:按一定規則抽取一定量的節點或者以圖中所有節點作為起始節點。一般來說會選擇後一種方法以保證所有節點都會被選取到。
在選擇下一節點方法上,最簡單的是按邊的權重來選擇,但在實際應用中需要通過廣度優先還是深度優先的方法來控制遊走范圍。一般來說,深度優先發現能力更強,廣度優先更能使社區內(較相似)的節點出現在一個路徑里。
斯坦福大學Jure Leskovec教授給出了一種可以控制廣度優先或者深度優先的方法。
以上圖為例,假設第一步是從t隨機遊走到v,這時候我們要確定下一步的鄰接節點。本例中,作者定義了p和q兩個參數變數來調節遊走,首先計算其鄰居節點與上一節點t的距離d,根據下面的公式得到α:
一般從每個節點開始遊走5~10次,步長則根據點的數量N遊走根號N步。如此便可通過random walk生成點的序列樣本。
得到序列之後,便可以通過word2vec的方式訓練得到各個用戶的特徵向量,通過餘弦相似度便可以計算各個用戶的相似度了。有了相似度,便可以使用基於用戶的推薦演算法了。
推薦系統需要根據用戶的歷史行為和興趣預測用戶未來的行為和興趣,因此大量的用戶行為數據就成為推薦系統的重要組成部分和先決條件。如何在沒有大量用戶數據的情況下設計個性化推薦系統並且讓用戶對推薦結果滿意從而願意使用推薦系統,就是冷啟動問題。
冷啟動問題主要分為三類:
針對用戶冷啟動,下面給出一些簡要的方案:
(1)有效利用賬戶信息。利用用戶注冊時提供的年齡、性別等數據做粗粒度的個性化;
(2)利用用戶的社交網路賬號登錄(需要用戶授權),導入用戶在社交網站上的好友信息,然後給用戶推薦其好友喜歡的物品;
(3)要求用戶在登錄時對一些物品進行反饋,手機用戶對這些物品的興趣信息,然後給用推薦那些和這些物品相似的物品;
(4)提供非個性化推薦。非個性化推薦的最簡單例子就是熱門排行榜,我們可以給用戶推薦熱門排行榜,然後等到用戶數據收集到一定的時候,在切換為個性化推薦。
對於物品冷啟動,可以利用新加入物品的內容信息,將它們推薦給喜歡過和他們相似的物品的用戶。
對於系統冷啟動,可以引入專家知識,通過一定高效的方式快速建立起物品的相關度表。
在上面介紹了一些推薦系統的基礎演算法知識,這些演算法大都是比較經典且現在還在使用的。但是需要注意的是,在實踐中,任何一種推薦演算法都不是單獨使用的,而是將多種推薦演算法結合起來,也就是混合推薦系統,但是在這里並不準備介紹,感興趣的可以查閱《推薦系統》或《推薦系統與深度學習》等書籍。此外,在推薦中非常重要的點擊率模型以及基於矩陣的一些排序演算法在這里並沒有提及,感興趣的也可自行學習。
雖然現在用的很多演算法都是基於深度學習的,但是這些經典演算法能夠讓我們對推薦系統的發展有一個比較好的理解,同時,更重要的一點——「推陳出新」,只有掌握了這些經典的演算法,才能提出或理解現在的一些更好地演算法。
D. 個性化推薦演算法的四大策略02
在復雜的推薦系統中,推薦演算法作為其最核心、最關鍵的部分,很大程度上決定了推薦系統性能的好壞,且重點體現在數據決策層。
在個性化推薦系統中,簡單推薦策略主要分為:基於熱門推薦推薦、基於基本信息推薦、基於內容推薦、基於關聯規則推薦。
熱門推薦,顧名思義就是使用統計的方法將最熱門的物品進行推薦,越熱門的物品被點擊的可能性越大。
基於基本信息推薦是根據用戶的基本信息如:領域、職位、工作年齡、性別和所在地等給用戶推薦感興趣或者相關的內容,比如年齡-關聯電影表、收入-關聯商品類型表,性別-文章關聯表等等。
因為基於熱門推薦與基於基本信息推薦使用比較簡單,所以這兩個推薦策略應用比較廣泛。
基於內容推薦是指(Content Based Recommandation)利用用戶和物品的相關信息,例如前述用戶和物品畫像信息及用戶對物品的行為構建的模型,例如瀏覽、點擊、打電話、收藏、評論、下單等。內容推薦演算法根據用戶行為推斷用戶偏好,並為用戶推薦相同偏好的物品。
基於內容推薦的計算過程一般分為四個步驟:
由這些共性屬性查找其他物品,並實施推薦。
基於關聯規則推薦(Association Rules)是通過數據挖掘的方法找到物品之間的相關關系,再進行標簽推薦,比如大家所熟知的「啤酒」和「尿布」,就是某超市工作人員通過對顧客的購物清單進行分析後,才發現了啤酒和尿布之間的共現關系。
而衡量物品之間的關聯性時,主要看支持度、置信度和提升度這三大指標。
支持度表示 AB 共現情況占所有情況的比例,則有表達式 Support(A->B)=P(A&B),它往往用來評估搜索詞當中該詞出現的概率。
置信度表示 AB 共現情況占 A 情況的比例,其表達式為 Confidence(A->B)=P(A&B)/P(A)。
提升度表示以 A 為前提下 B 出現的情況與 B 情況的比例,表達式為 Lift(A->B)=P(B|A)/P(B) ,它往往用來評估推薦效果。
在計算 Lift(A->B) 時,主要出現以下三種情況:
Lift(A->B)>1 時,說明搜索 A 時推薦 B 比直接推薦 B 的效果更好
Lift(A->B)=1 時,說明搜索 A 和搜素 B 屬於獨立事件,二者沒什麼關系
Lift(A->B)<1 時,說明搜索 A 和搜索 B 負相關,搜索 A 還不如不去推薦 B。
E. 服裝褲子打板公式
上衣落肩: 女:前肩比例15:6 (21.8度); 後肩比例15:5.2(19.12度)
西裝袖肥=0.15B+5 袖山=0.1B+5.5 袖中距離34
男:前肩比例15:6 (21.8度); 後肩比例15:5.5(20.14度)
袖籠深:0.2B+6~6.5
肩寬:女:0.25B+15~16 男:0.3B+12~14
腰節:0.2號+7~8
直檔:0.5臀圍
後領寬:0.2領圍-0.3 或者B/20+3~3.5
後領深:2.2~2.5
前領深:0.2領圍,通常為8.5~9.5
前領寬:後領寬-0.5
胸寬=背寬-1.5
背寬=肩點向里1.8~2.2
臀圍線=腰下16~18
(5)四步推演算法擴展閱讀:
服裝打版步驟
第一步
定服裝的風格造型、松量、以及顧客群體的需求,這是最重要的一步,在此基礎上面進行下面的操作
第二步
根據第一步確定和顧客體型想符合的基型,首先根據服裝款式確定服裝的基型,比如是做群紙樣就做出群基型,是上裝紙樣就做出上裝基型。
第三步
確定底圖,首先分析新款式有什麼樣的要求,根據服裝款式的要求在基型上進行變化(變化的方法:a、幾何作圖法;b、剪切法),最後達到新款式的要求。
第四步
復制紙樣,在底圖上復制出紙樣,並且在紙樣上加上九個方面。
第五步
復核紙樣,做出紙樣後,一定要檢查紙樣的准確性和全面性。
F. 塔羅牌的演算法
簡便的數字推演算法
根據你的出生年、月、日,可以找出代表你自己生命對應的塔羅牌.生命的無賴羅牌可以分為兩種:一種是代表個性象徵的塔羅牌,另一種則是代表靈魂象徵的塔羅牌。
代表個性象徵的塔羅牌,顯示你表現魚外在世界的智慧、才能、氣質、風度、脾氣等,也就是別人如何看你的一切.
代表靈魂象徵的塔羅牌,顯示內心深處的你,你內在的渴望、精力的來源、精神的感受、追求和嚮往的理想人生,它代表不為人知的真正的你.
當你降生於人間,你的生命就和這個世界開始了接觸,你的個性和靈魂也伴隨生命而來.
因此,找出屬於自己生命的塔羅牌(應從大阿卡那22張或25張主牌中找),可以讓你更深入地了解自己是誰,別人又如何看待你.
發現你生命中隱藏的個性和力量,可以幫助你認識自己,發揮潛能和特長,更可以看清未來,開拓美好的前途.
推算方式如下:
一、把你出生的公歷年、月、日三個數字相加,得到一個總數;再把總數的各個數字相加,會得到一個二位數;然後把二位數的兩個數字相加,會得到一個個位數.此二位數代表個性象徵的塔羅牌,個位數則代表靈魂象徵的塔羅牌。
二、如果總數的各個數字相加,和為個數,則此數字同時代表個性和靈魂屬於同一個象徵的人,通常都是專業人才。
三、如果總數的各個數字相加,和為19;1和9相加等於10;1和0再相加等於1,這是唯一有三個數字的組合。
這三個數字,第一個代表個性,第三個代表靈魂,而多出來的第二個則代表創造力。擁有創造力象徵的人是絕佳的創意人才。
四、如果總數的各個數字相加,和為22(或25),22減去22等於0。因為傳統塔羅牌為22張(變形塔羅為25),數字由0排至21,因此數字22等於數字0,這數字代表個性;22的2加2等於4,這數字代表靈魂。
五、如果總數的各個數字相加,和大於22(在變形塔羅牌中為25),則把和減去22(或25)、所得余數代表個性;和的兩個數字相加,求得的個數代表靈魂。
傳統塔羅牌數字對應的人生型態
一、如果你推算出來的人性象徵和靈魂數字相同,代表你人生的發展是單一的;如果個性象徵和靈魂象徵的數字不同,代表你人生的發展是又重的。
二、如果你的數字是0,代表你追求的是多采多姿、變化多端的人生。
三、如果你的數字是1~6,代表你追求的是和諧的人生.
四、如果你的數字是7~12,代表你追求的是充滿冒險和挑戰的人生.
五、如果你的數字是13~18,代表你追求的是不斷開創和改變的人生.
六、如果你的數字是19~21,代表你追求的是自我實現和成就的人生.
根據你出生的月、日和不同的年份,可以推算出每一個代表你當年支持駝勢的塔羅牌.
由於運勢的推算是以生日為基準,因此每一年運勢的開始,也是以那一天起算.
比如,你是一九七六年六月一日生,則一九九七年的運勢從一九九七年六月一日起算,六月一日以前為一九九六年的運勢.
利用這種推算方式,可以找出代表當年或來年運勢的塔羅牌.若從出生的年份開始推算,也可以算出一個人的流年.
從推算流年中,你會發現你的數字系按順序排更,但隔一段期間數字便會中斷,跳到另一順序.這種數字中斷的現象,即代表你生命中運勢的改變,是人生的轉折點和新運勢的開始.
同時,你也會發現代表運勢的塔羅牌中,沒有0(愚者)和1(魔術師)這兩張牌,因為每一年的運勢中都充滿了未知(愚者)和(魔術師)變化.
一、把你出生的陽歷月、日和當年的年分相加,得到總數;再把總數的各個數字相加,若和等於或小於21,則按此數字找出代表運勢的相關塔羅牌.
二、如果總數和各個數字相加,和等於或大於22(變形塔羅為25),則再將和的兩個數字相加,成為個數,此個數即為代表運勢的數字.
三、如果總數的各個數字相加,和等於28,把2和8相加等於10,10即為代表運勢的數字,不再把10的10和相加.
占卜步驟
第一步:事先准備與禁忌
首先最重要的是:使用塔羅牌前,確認自己的身體和心靈都在良好、平靜的狀態.解讀塔羅是一件需要費心力的工作,必須集中精神,才能了解塔羅牌所呈現現的意義.
什麼時候推測最好?
只要你的精神狀態夠清晰,任何時間都可以.
在哪裡推測?
找一個不會干擾你的地點.理想中的好地點:和朋友到你寧靜的小窩,泡杯紅茶,一起來解讀你拉的命運吧!
用什麼來進行推測?
當然用塔羅牌!這時的推測法,使用的都是二十二張的大塔羅牌來進行的.
一塊黑布.基本上,塔羅需要一張足夠空間的桌子來排牌型,准備一塊干凈的布鋪在桌面上,以免牌直接和桌面接觸,容易變臟.至於建議你用黑色,是因為無論從科學或是推測學上而言,黑色都是最能聚集光線與能量的顏色.
忌諱些什麼東西?
不可以在同一於內推測同一個問題兩次.塔晚牌是你籍以窺探命運一隅的工具,可說是命運旅程上的夥伴,因此,你必須對它寄予絕對的信任。如果它告訴你的結果不盡如意,還是應該保持著尊重的態度。千萬不要有"算到好結果出來為止"的心態--命運並不是一種嘗試錯誤的游戲。如果一意孤行,那麼你的塔羅牌以後便不會願意再向你顯示任何正確的答案了。
務必信任自己的塔羅牌。
不要遺失任何一張牌。一套牌就像手足一樣,有其完整性,無論遺失了哪一張,對牌本身而言都是一種傷害。所以我能給你的建議是:請小心保留。
避免洗牌時的意外狀況。在第三步為你說明的洗牌過程中,會有如下的狀況出現:洗著、洗著一張牌突然翻赤來正面朝上;要不就是把一些牌洗掉到地上;或者在切牌的時候放錯堆等等.你應該盡量避免這些意外,因為這些現象都在說明一件事:你的精神可能不夠專注.這會對推測的結果造成最嚴重的影響.
第二步:確認問題與推測方式
一切准備就緒之後,接下來便是確認想要問的問題.千萬記住:問題必須在進行下一個步驟--"洗牌"之前確認清楚.一旦開始洗牌,就不可以再更換問題了.
第三步:洗牌
洗牌一共有兩種不同的動作.每推測一次,都要重復這兩種洗牌.
我們先來進行第一種洗牌.把二十二張大塔羅牌牌面朝下,疊齊放在自己的手中.集中精神,不要想任何事物.然後,開始順從自己的意志,從牌疊中間抽出一落,放在牌疊的最上方.重復進行同樣的動作幾次,次數的多少依的意志而定.
接下來,把牌放在平面上,准備第二種洗牌.同樣的,你的精神仍必須集中把牌以圓圈的方式攤開,並且以兩手依順時稈的方向開始洗牌.一邊洗牌時,要一邊在心中默述即將推測的問題,以及思考即將採用的牌型.
傾聽你內在的聲音,你會感覺出來何時可以停止;這時,把牌慢慢的聚攏(不要忘了還是要以順時針的方式進行),最後把它恢復成一疊牌,以橫的方向放好.
另外,有一些推測法則需要求問的人本身意志集中,默念自己的問題.這時,你只需保持心無雜念就可以;何時停止洗牌,是由求問的人來決定的.
第四步:切牌
切牌是讓求問者大顯身手的時刻。當你洗完牌、牌面朝下疊成一疊放好之後,就要請求問的人來切牌.當然,如果求問的人就是你自己,就要自己來切牌了.
首先,請對方集中精神,從牌疊的上方,依照自己的意志拿起一落牌(絕對不可以不拿),把這一落牌放在原先牌疊的下方(也就是靠近你的這個方向),變成兩落.
再來,從第二落的上面再拿一落牌;這將要放到第一落的上方.現在,你們面前已經有三落牌了.
接下來,由你來把牌疊回去.先把第一落拿起來,放到第二落的上方;再把這個第一落和第二落的合體拿起來,放到第三落的上方.如此,便恢復為一疊牌了.
我們還剩下最後一個切牌動作.在剛剛的過程里,牌面都是橫向朝下的.我們現在要把牌轉為直向朝下.這個動作千萬不可以搞錯了:如果是為對方推測,你的旋轉方向是逆時針的;也就是說,你要把塔羅牌的左端朝下旋轉90度,變為直向.如果你是為自己推測,則是順時針把牌旋轉90度.一旦搞錯,整個牌面的意義會完全顛倒,所以務必要謹慎喔!
第五步:排牌型
洗牌和切牌是整個過程里最關乎准確與否的步驟.接下來的排牌就簡單許多.你只需要按照剛剛決定要用的排法,把牌型排出來就可以了.記住一點:
所有塔羅牌在排牌的過程里,都要維持著牌面朝下的狀態.通常只有一部分的牌會用在牌型上,其他剩下的牌,就仍維持直向朝下的狀態,疊好放在一旁.
第六步:開牌、解讀
牌型排好之後,按順序把每一張牌掀開.掀牌的方式是由左往右翻.等全部牌翻出來之後,便是你解讀的時候了.
G. 基因組序列比對演算法介紹(一)
基因組重測序中序列比對介紹
重測序基因組數據比對,是指將測序儀下機fastq數據(NGS read序列,通常100-150bp),與人類參考基因組(reference)進行匹配,允許錯配(mismatch),插入缺失(indel),目的是在參考基因組找到序列最相似的位置,通常是基因組分析(包括 variation calling,ChIP-seq,RNA-seq,BS-seq)流程的第一步。
常用演算法
圖一
漢明距離(Hamming distance)表示兩個(相同長度)字對應位置不同的數量,我們以d(x,y)表示兩個字x,y之間的漢明距離。對兩個字元串進行異或運算,並統計結果為1的個數,那麼這個數就是漢明距離。圖中read1最佳位置的方法,就是通過查找最小漢明距離的實現的。
編輯距離(Edit distance)是針對二個字元串(例如英文字)的差異程度的量化量測,量測方式是看至少需要多少次的處理才能將一個字元串變成另一個字元串。圖中read3最佳位置,通過查找最我輯距離的方法實現。
圖二
全局比對(Global alignment):全局比對是指將參與比對的兩條序列裡面的所有字元進行比對。全局比對在全局范圍內對兩條序列進行比對打分,找出最佳比對,主要被用來尋找關系密切的序列。其可以用來鑒別或證明新序列與已知序列家族的同源性,是進行分子進化分析的重要前提。其代表是Needleman-Wunsch演算法。圖一中,read3使用全部比對。
局部比對(Local alignment):與全局比對不同,局部比對不必對兩個完整的序列進行比對,而是在每個序列中使用某些局部區域片段進行比對。其產生的需求在於、人們發現有的蛋白序列雖然在序列整體上表現出較大的差異性,但是在某些局部區域能獨立的發揮相同的功能,序列相當保守。這時候依靠全局比對明顯不能得到這些局部相似序列的。其次,在真核生物的基因中,內含子片段表現出了極大變異性,外顯子區域卻較為保守,這時候全局比對表現出了其局限性,無法找出這些局部相似性序列。其代表是Smith-Waterman局部比對演算法。圖一中,read2使用局部比對。
圖三
Smith-Waterman演算法介紹
Smith-Waterman是由Temple F. Smith和Michael S. Waterman於1981年提出的一種進行局部序列比對(相對於全局比對)的演算法,用於找出兩個核苷酸序列或蛋白質序列之間的相似區域。該演算法的目的不是進行全序列的比對,而是找出兩個序列中具有高相似度的片段。S-W演算法基於動態規劃,它接受任意長度、任意位置、任意序列的對齊,並確定是否能找到最優的比對。
簡單地說就是,動態規劃找到問題中較小部分的解,然後把它們放在一起,形成整個問題的一個完整的最優最終解。
它優於BLAST和FASTA演算法,因為它搜索了更大的可能性,具有更高的敏感性。
S-W演算法不是一次查看整個序列,而是對多個長度的片段進行比較,尋找能夠最大化得分的片段。演算法本身本質上是遞歸的:
圖四
演算法步驟如下:
基因組分析***** 微信 公眾號推出 《50篇文章深入理解NGS》系列文章, 第三篇文章 《基因組序列比對演算法介紹(一)》,爭取每周更新一篇高質量生信干貨帖子。
關注 "基因組分析" 微信公眾號,了解最新最全生信分析知識。
H. 數列遞推演算法的原理
什麼是遞推
所謂遞推,是指從已知的初始條件出發,依據某種遞推關系,逐次推出所要求的各中間結果及最後結果。其中初始條件或是問題本身已經給定,或是通過對問題的分析與化簡後確定。
從已知條件出發逐步推到問題結果,此種方法叫順推。
從問題出發逐步推到已知條件,此種方法叫逆推。
無論順推還是逆推,其關鍵是要找到遞推式。這種處理問題的方法能使復雜運算化為若干步重復的簡單運算,充分發揮出計算機擅長於重復處理的特點。
遞推法是一種重要的數學方法,在數學的各個領域中都有廣泛的運用,也是計算機用於數值計算的一個重要演算法。
遞推演算法的首要問題是得到相鄰的數據項間的關系(即遞推關系)。遞推演算法避開了求通項公式的麻煩,把一個復雜的問題的求解,分解成了連續的若干步簡單運算。一般說來,可以將遞推演算法看成是一種特殊的迭代演算法。
遞推的特點
可用遞推演算法求解的題目一般有以下兩個特點:
1、問題可以劃分成多個狀態;
2、除初始狀態外,其它各個狀態都可以用固定的遞推關系式來表示。
在我們實際解題中,題目不會直接給出遞推關系式,而是需要通過分析各種狀態,找出遞推關系式。
【例1】數字三角形。
如下所示為一個數字三角形。請編一個程序計算從頂到底的某處的一條路徑,使該路徑所經過的數字總和最大。只要求輸出總和。
1、 一步可沿左斜線向下或右斜線向下走;
2、 三角形行數小於等於100;
3、 三角形中的數字為0,1,…,99;
測試數據通過鍵盤逐行輸入,如上例數據應以如下所示格式輸入:
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
【演算法分析】
此題解法有多種,從遞推的思想出發,設想,當從頂層沿某條路徑走到第i層向第i+1層前進時,我們的選擇一定是沿其下兩條可行路徑中最大數字的方向前進,為此,我們可以採用倒推的手法,設a[i][j]存放從i,j 出發到達n層的最大值,則a[i][j]=max{a[i][j]+a[i+1][j],a[i][j]+a[i+1][j+1]},a[1][1] 即為所求的數字總和的最大值。
//【參考程序】
#include<iostream>
using namespace std;
int main(){
int n,i,j,a[101][101];
cin>>n;
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
cin>>a[i][j]; //輸入數字三角形的值
for (i=n-1;i>=1;i--)
for (j=1;j<=i;j++)
{
if (a[i+1][j]>=a[i+1][j+1]) a[i][j]+=a[i+1][j]; //路徑選擇
else a[i][j]+=a[i+1][j+1];
}
cout<<a[1][1]<<endl;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
思考
如果要輸出最大和的路徑該怎麼處理呢?
【例2】 骨牌問題
有2 × n的一個長方形方格,用一個1 × 2的骨牌鋪滿方格。
編寫一個程序,試對給出的任意一個n(n>0), 輸出鋪法總數。
【演算法分析】
(1)面對上述問題,如果思考方法不恰當,要想獲得問題的解答是相當困難的。可以用遞推方法歸納出問題解的一般規律。
(2)當n=1時,只能是一種鋪法,鋪法總數有示為x1=1。
(3)當n=2時:骨牌可以兩個並列豎排,也可以並列橫排,再無其他方法,如下左圖所示,因此,鋪法總數表示為x2=2;
(4)當n=3時:骨牌可以全部豎排,也可以認為在方格中已經有一個豎排骨牌,則需要在方格中排列兩個橫排骨牌(無重復方法),若已經在方格中排列兩個橫排骨牌,則必須在方格中排列一個豎排骨牌。如上右圖,再無其他排列方法,因此鋪法總數表示為x3=3。
由此可以看出,當n=3時的排列骨牌的方法數是n=1和n=2排列方法數的和
I. 遞推的遞推演算法
【例1】
植樹節那天,有五位同學參加了植樹活動,他們完成植樹的棵樹都不相同。問第一位同學植了多少棵時,他指著旁邊的第二位同學說比他多植了兩棵;追問第二位同學,他又說比第三位同學多植了兩棵;... 如此,都說比另一位同學多植兩棵。最後問到第五位同學時,他說自己植了10棵。到底第一位同學植了多少棵樹?
分析:設第一位同學植樹的棵樹為a1,欲求a1,需從第五位同學植樹的棵數a5入手,根據「多兩棵」這個規律,按照一定順序逐步進行推算:
(1) a5=10;
(2) a4=a5+2=12;
(3) a3=a4+2=14;
(4) a2=a3+2=16;
(5) a1=a2+2=18;
Pascal程序:
Program Examl;
Var i,a:byte;
begin
a:=10;
for i:= 1 to 4 do
a:=a+2;
writeln('The Num is' ,a);
readln;
end.
本程序的遞推運算可用下圖示表示:
初始值a:=10 ----- i=1,a=a+2(12) ----- i=2,a=a+2(14) ------ i=3,a=a+2(16) ----- i=4,a=a+2(18) ---- 輸出a值
例2:
十本不同的書放在書架上。現重新擺放,使每本書都不在原來放的位置。有幾種擺法?
當n個編號元素放在n個編號位置,元素編號與位置編號各不對應的方法數用M(n)表示,那麼M(n-1)就表示n-1個編號元素放在n-1個編號位置,各不對應的方法數,其它類推.
第一步,把第n個元素放在一個位置,比如位置k,一共有n-1種方法;
第二步,放編號為k的元素,這時有兩種情況.1,把它放到位置n,那麼,對於剩下的n-2個元素,就有M(n-2)種方法;2,不把它放到位置n,這時,對於這n-1個元素,有M(n-1)種方法;
綜上得到
M(n)=(n-1)[M(n-2)+M(n-1)]
遞推演算法以初始(起點)值為基礎,用相同的運算規律,逐次重復運算,直至運算結束。這種從「起點」重復相同的方法直至到達一定「邊界」,猶如單向運動,用循環可以實現。遞推的本質是按規律逐次推出(計算)先一步的結果。
J. 我學習吉他的困擾 求救
吉他基本樂理講解
第一講:大調音階與自然小調音階
以下所講是以"首調唱法"來講解:
首先先介紹音階結構:
先找出一個音,然後在這個音到兩倍頻率之間等分成12個半音,在這12個半音中再來選取7個音作為音階,以頻率440的A為例,頻率880就是高八度的A.
(稍等在來解釋"高八度"這個名詞)
相對音:
音名原本正式的寫法是用羅馬字,一級音的記號是I,二級是II,三級是III...
以後以1234567i來表示比較方便,i代表高八度的1,也就是兩倍頻率.
1234567i的唱名固定對應Do,Re,Mi,Fa,Sol,La,Si,Do.
幾度音的演算法:
以前的人沒有0的概念,所以規定1是1的一度音,2是1的二度音,3是1的三度音...所以i是1的八度音.
各種類型的音階1234567i之間的音程差各有不同的規定
以大調音階為例,以2代表一個全音,1代表一個半音,()內為相對音名:
(1)-2-(2)-2-(3)-1-(4)-2-(5)-2-(6)-2-(7)-1-(i)
說明:
這個意思是說凡是音階符合八個音之間的音程差是2-2-1-2-2-2-1的都叫做大調音階.
絕對音以英文字表示:
CDEFGAB
每一個英文字都代表一個固定數字的頻率,是絕對固定不變的,並且CDEFGABC八度之間的音程差是遵守大調規定為2-2-1-2-2-2-1的.
沒有原因,這一項是規定.
而所謂的C大調音階,就是指1被指定為C,並遵守大調音程規定時所產生的八個音.
所以C大調的組成音就是C,D,E,F,G,A,B,C
D大調的組成音就是D,E,F#,G,A,B,C#,D
其它大調的組成音請自行推導.
這也就是轉調時會有升降記號的原因.
接下來再看自然小調音階:
他的1234567i之間音程差的規定是:
(1)-2-(2)-1-(3)-2-(4)-2-(5)-1-(6)-2-(7)-2-(i)
小調一共有四種,今暫時只論自然小調,自然小調為常用的小調,若不特別說是什麼小調,那麼小調一般就是指自然小調.
那麼我們把1指定A,放入規定,就得到A小調的組成音:
ABCDEFGA
剛好和C大調音階所使用的音相同,因此稱A小調是C大調的對應小調,或稱附屬小調.("所使用的音相同"的意思是指沒有升降記號,但是1234567i所對應的絕對音仍然不同.)
風格與比較,直接舉實例來說比較清楚,也可暫時不用說明根音,導音等等:
我們把大調音階與小調音階的1,3,5度音都拿出來比較就很清楚了
大調(1)-4個半音-(3)-3個半音-(5),此即大和弦.
小調(1)-3個半音-(3)-4個半音-(5),此即小和弦.
大和弦和小和弦的風格差別就不用我說了吧.
第二講:常用和弦組成與推算
初學者都有聽過C這個和弦吧,今天就以這個為例作講解,並附上常用和弦供大家取用.
在正式開始前得先介紹一些東西作暖身,第一個要介紹的就是"KEY":
KEY這個單字原意是鑰匙,若沒有鑰匙便不得其門而入,故引申有"關鍵"之意,KEY在樂理上翻譯成調也是有原因的,問你什麼調就是問你的1是什麼?(1234567i當中的1),有了1被指定之後,後面的234567i才能被確定,這部分在第一講已經明白的講解完,因此1就是KEY就是決定調性關鍵,
根音:
相同的道理,1也會是決定和弦的關鍵,1在和弦中被稱為根音,意思是以1為"根據",再按規定衍生出和弦的其它音,這部分需要實例說明,會在第二講最後再交代一次.
相對音:
1234567i若沒有特別指定,我們就以大調音階視之,以下要表示和弦組成音比較方便.
那麼進入正題:
第一步要先了解和弦是什麼?
和弦就是和諧的弦音,以大和弦(1,3,5)為例,3和5是對1和聲,以相對的角度來說,1是對3和5提供了音的基準,又具備了最低音的性質,因此1有骨幹及基準的味道.
另外一點,從物理學的觀點來看,不喜歡物理的可以直接略過這一段沒關系:
1的音波長最長,3和5於和聲時會以1為基本波長作共鳴(包含泛音的部分),形成規律的復合音波,由於規律,所以聽起來和諧,這就是和弦產生的原因,也因此有別於隨意組合出的噪音.
第二步:
各種和弦的由來都是由音樂家"用耳朵"定出來的,只要是覺得和諧的組成就可以訂出一種類型的和弦,然後給他命名,就這樣,沒別的,而和弦可以有三個音,四個音,五個音...就是用聽的定出來的.
因此,去記憶各類型和弦的組成音是必要的.
第三步:
和弦的組成與推算,組成音請查表,我們直接教推算,推算的方法完全一樣.
凡組成音為(1,3,5)皆稱為大和弦,
當1=C時,就是C和弦,組成音就是(C,E,G).
當1=D時,就是D和弦,組成音就是(D,F#,A).
當1=E時,就是E和弦,組成音就是(E,G#,B)
...以此類推所有大和弦.
再舉例:
凡組成音為(1,3b,5)皆稱為小和弦,
當1=C時,就是Cm和弦,組成音就是(C,Eb,G).
當1=D時,就是Dm和弦,組成音就是(D,F,A).
當1=E時,就是Em和弦,組成音就是(E,G,B).
當1=F時,就是Fm和弦,組成音就是(F,G#,C).
...以此類推所有小和弦.
第四步:
了解了第三步的推演算法之後就會用以下這個表(X=1代表英文字ABCDEFG):
和弦---相對組成音
X-----------1,3,5
Xm---------1,3b,5
X7----------1,3,5,7b
Xm7--------1,3b,5,7b
Xmaj7------1,3,5,7
XmM7------1,3b,5,7
X6----------1,3,5,6
Xm6--------1,3b,5,6
X9----------1,3,5,7b,2
(X9組成音當中這個2是高1九度的2,不可以是高1二度的2,以下的情形類同)
X69---------1,3,5,6,2
X11---------1,3,5,7b,2,4
X13---------1,3,5,7b,2,4,6
Xmaj9------1,3,5,7,2
Xaug--------1,3,5#(這個有時候和弦符號會寫成"X+")
Xaug7------1,3,5#,7b
X7+9-------1,3,5,7b,2#
X7-5--------1,3,5b,7b
X7-9--------1,3,5,7b,2b
Xm7-5------1,3b,5b,7b
Xsus4-------1,4,5
X7sus-------1,4,5,7b
Xdim--------1,3b,5b,6(這個有時候和弦符號會寫成"X-"或者"X°")
第五步:
先不要把整個表背下來,對於初學者而言是不需要用到這么多的和弦,教這個的目的是要學會用使用法,將來遇到不會的和弦,可以依據組成音推算.
總結,上面一共介紹22種和弦類型,而1可以指定C,C#,D,D#...共十二個音,也就是說總共交代了22×12=264個和弦,夠用了吧.
第三講:轉調方法與CAPO使用
今天還是好累,先講轉調方法好了,反正份量不多.
直接舉例最快:
C調轉G調,譜記是"Key:C→G"
第一招,一步驟直接轉調範例:
原和弦進行:C→Am→Dm→G7
直接更改成:G→Em→Am→D7
說明:Key:C→G意指整支曲子從C調全曲升高到G調.
所以起始音就從C變成G,共升高5度(7個半音),因此C調其它音階及和弦都要全部升高五度.
因此可以使用下面這個表作對照:
C,D,E,F,G,A, B, C
↓↓↓↓↓↓ ↓ ↓
G,A,B,C,D,E,F#,G
這樣在回頭看一次結果就明白了.
有沒有發現什麼?對!!這剛好是C大調和G大調音階.
第二招,二步驟轉調範例:
原和弦進行:C→Am→Dm→G7
第一步先改成:1→6m→2m→57
說明:先將和弦用級數表示出.
第二步:看轉成什麼調,就是1指定什麼,G調就是1指定G,
而G調音階是G,A,B,C,D,E,F#,G
那麼G調的1,6,2,5和弦就是G,E,A,D,放上去就得到結果.
這樣在回頭看一次結果就明白了.
有沒有發現什麼?對!!這樣要轉什麼調都很方便,因此,有些市面上的和弦譜就標示數字和弦,就是為了方便轉調.
這兩招都要會哦!!
那麼接下來介紹CAPO的使用法:
CAPO又稱為"移調夾",這個是為了方便伴奏配合主唱的音域,
例如有時會用到C#或D#這類的,若沒有移調夾,就要用封閉彈法,會很累人,因此,移調夾的功用就產生出來.
範例一:
Key:C→C#
夾第一格,彈法不變.
範例二:
Key:C→D#
夾第三格,彈法不變.
範例三,問題來了:
Key:C→G
可以夾第七格,彈法不變,但是夾這么高把位不是很奇怪嗎?
於是可以使用和弦Key:C→E,然後CAPO夾第三格的方式應變.
說明:
和弦Key:C→E就是升高4個半音,加上CAPO夾第三格共升高7個半音,也就是達成了Key:C→G.
第四講:問題漫談與補充
根音找法:
規則一:
根音必須是和弦組成音的最低音.
規則二:
英文字就是根音,例如: C的根音是C,Cm的根音也是C,C7的根音一樣是C...
同理:
Em根音就是E,G根音就是G,D7根音就是D...
規則三:
根音可指定,即俗稱的"分數和弦": 而C/G則是C和弦根音指定是G, C/E是C和弦根音指定是E... 了解了吧?
所以: F 根音就是F ,G/B根音就是B, Em7...如你所見應該是E
那麼根音到底是哪一弦ㄋ?這就不一定了,必須是根據上面三個規則,
而根音最常出現在456弦,較特殊情況也會出現在第三弦.
那麼檢視初學者第一個學會的開放和弦C和弦,最低音是E,解釋如下:
開放C和弦的按法,以指法彈時,T彈第五弦,最低音是C,不會有問題,
會出問題的是刷法,最低音會變成E,那麼就來談談這個問題,
這么一刷下去就會變成C/E和弦,算是C和弦的轉位和弦,聽起來的感覺還是很接近C和弦,因此,初學時為了方便練習,並未特地講這個問題,就睜一隻眼閉一隻眼混過去,若講究一點的會使用C/G,也就是加按第六弦第三格,這是為了符合C和弦的順階135135...也就是說按照順序1的前面要是5,C/G還不少人使用.
然而最講究的是演奏時把第六弦悶掉,這就比較少見了.
如果不能控制不去刷到第6弦的空弦.那還是悶掉好.免的聽起來怪怪的.
不過C還算好.至少還在和弦音裡面.開放的F.Dm就糟了.還會有不適當的音跑出來.(開放的F必須把第5,6弦悶掉;開放的Dm至少必須把第6弦悶掉)
所以喜歡刷和弦的朋友.有空多練練封閉和弦吧.至少要刷出組成音.這樣刷的愉快,聽了 也爽.
名詞解釋:
轉位和弦是指根音更動,由和弦組成音的其它音代替根音,直接舉例說明.
大和弦組成音是(1,3,5,1,3,5...),按順序由低而高.
轉位大和弦可以是(3,1,3,5...)
或是(5,1,3,5...)或是(3,5,1,3,5...)...
按順序又可稱第一轉位和弦,第二轉位和弦,第三轉位和弦...不過這個可以不要理他,只要知道什麼是轉位和弦即可.