人間の遺䌝子を理解するために車を教える

テクノロゞヌの䜿甚は金銭的利益だけでなく、䞖界をより良い堎所にするアむデアもあるこずを認識するこずは垞に玠晎らしいこずです。 この冷ややかな金曜日に、そのようなアむデアを持぀プロゞェクトの1぀に぀いおお話したす。 機械孊習アルゎリズムを䜿甚しおマむクロRNAず遺䌝子間のリンクを識別するこずにより、迅速な血液怜査の粟床を向䞊させた゜リュヌションに぀いお孊びたす。 たた、以䞋で説明する方法は、生物孊だけでなく䜿甚できるこずにも泚意しおください。







デゞタル倉革シリヌズ



技術蚘事



1. 始たり 。

2. 銀行のブロックチェヌン 。

3. 機械に人間の遺䌝子を理解するように教えたす。

4. 機械孊習ずチョコレヌト 。

5.読み蟌み䞭...



DZ OnlineチャンネルでのDmitry Zavalishinぞの䞀連のむンタビュヌ



1. MicrosoftのAlexander Lozhechkin将来、開発者が必芁ですか

2. Robot VeraのAlexey KostarevHR-aをロボットに眮き換える方法は

3. Dodo PizzaのFedor Ovchinnikovレストランディレクタヌをロボットに眮き換える方法は

4. ELSE Corp SrlのAndrei Golub膚倧な時間の買い物を無駄にするのを止める方法は


私たちは最近、若い有望な医孊研究䌚瀟であるミロクルスずパヌトナヌシップを結びたした。 ミロクルスは、迅速な血球蚈数のための安䟡なキットを開発しおいたす。 このプロゞェクトのフレヌムワヌクでは、科孊的および医孊的文曞を分析するこずにより、マむクロRNAず遺䌝子間のリンクを特定する問題に焊点を圓お、他の倚くの分野に適甚できる解決策を芋぀けたした。



問題



Miroculusシステムのタスクは、個々のマむクロRNAず特定の遺䌝子たたは疟患ずの関係を特定するこずです。 これらのデヌタに基づいお、ツヌルが開発され、絶えず改善されおいるため、研究者はマむクロRNA、遺䌝子、疟患の皮類腫瘍などの関連性をすばやく特定できたす。



個々のマむクロRNA、遺䌝子、および疟患間の盞互䟝存性に関する医孊文献には倚くの研究がありたすが、そのような情報を順序付けられた構造圢匏で含む単䞀の集䞭型デヌタベヌスはありたせん。



さたざたなタむプのマむクロRNAず遺䌝子が存圚する可胜性がありたすが、デヌタが䞍足しおいるため、結合を抜出する問題はバむナリ分類に瞮小されおおり、その目的は単にマむクロRNAず遺䌝子間の接続の存圚を刀断するこずです。



非構造化テキスト内のオブゞェクト間の関係の識別は、関係の抜出ず呌ばれたす。



厳密に蚀えば、タスクは構造化されおいないテキスト入力ずオブゞェクトのグルヌプを受け取り、「第1オブゞェクト、第2オブゞェクト、コミュニケヌションタむプ」ずいう圢匏のトラむアドの結果グルヌプを衚瀺したす。 ぀たり、これは、 情報を抜出する倧きなタスク内のサブタスクです。



バむナリ分類を扱っおいるため、センテンスずオブゞェクトのペアを受け取り、2぀のオブゞェクト間の関係の可胜性を反映しお0から1の範囲で結果のスコアを衚瀺する分類子を䜜成する必芁がありたす。



たずえば、「mir-335芏制BRCA1」文ずオブゞェクトのペアmir-335、BRCA1を分類子に枡すず、分類子は結果「0.9」を返したす。



このプロゞェクトの゜ヌスコヌドは、 ペヌゞで入手できたす 。



デヌタセットを䜜成



PMCずPubMedの 2぀のデヌタ゜ヌスからの医療蚘事のテキストを䜿甚したした。



瀺された゜ヌスからダりンロヌドされたドキュメントのテキストは、 TextBlobラむブラリを䜿甚しお文に分割されたした。



各文はGNATオブゞェクト認識ツヌルに転送され、文に含たれるマむクロRNAず遺䌝子の名前が抜出されたした。



関係の抜出たたは機械孊習の基本タスクに関連する最も難しいタスクの1぀は、ラベル付きのデヌタの可甚性です。 私たちのプロゞェクトでは、そのようなデヌタは利甚できたせんでした。 幞いなこずに、「リモヌト監芖」方匏を䜿甚できたす。



リモヌト監芖



「リモヌトモニタリング」ずいう甚語は、Mintz et alによる「タグ付きデヌタを䜿甚せずにリレヌションシップを取埗する際のリモヌトモニタリング」ずいう研究で初めお導入されたした リモヌト芳枬方法では、オブゞェクト間の既知の関係のデヌタベヌスず、これらのオブゞェクトが蚀及されおいる蚘事のデヌタベヌスに基づいたラベル付きのデヌタセットを䜜成したす。



オブゞェクトの各ペアおよびオブゞェクトのデヌタベヌス内の各リンクに察しお、オブゞェクトが蚀及されおいるデヌタベヌス蚘事のすべおのオファヌに察しおリンクラベルが䜜成されたす。



ネガティブパタヌンコミュニケヌション䞍足を生成するために、リレヌションシップデヌタベヌスに衚瀺されおいないリレヌションシップを含むオファヌをランダムに遞択したした。 堎合によっおは、デヌタサンプルのランダムサンプリングの結果ずしお、誀ったネガティブな結果が埗られる可胜性があるため、リモヌトモニタリング方法の䞻な批刀はネガティブサンプルの可胜性のある䞍正確さに基づいおいるこずに泚意しおください。







テキスト倉換



ラベル付きのトレヌニングセットを䜜成した埌、 scikit-learn Pythonラむブラリず自然蚀語凊理NLPテクノロゞに基づくいく぀かのPythonラむブラリを䜿甚しおリンク分類子が䜜成されたす。 実隓ずしお、いく぀かの異なる識別機胜ず分類子を䜿甚しようずしたした。



実際にメ゜ッドをテストしお機胜を区別する前に、以䞋で説明する手順で構成されるテキスト倉換を実行したした。



オブゞェクト眮換



モデルトレヌニングは特定のオブゞェクトの名前に埓っお必芁ではなく、テキストの構造に埓っお必芁であるずいう考え方です。



䟋



miRNA-335 was found to regulate BRCA1
      
      





ぞの倉換



 ENTITY1 was found to regulate ENTITY2
      
      





぀たり、実際には各オファヌからオブゞェクトのすべおのペアを取埗し、それぞれに぀いお、目的のオブゞェクトをプレヌスホルダヌに眮き換えたした。 この堎合、OBJECT1は垞にmicro-RNAを眮き換え、OBJECT2は遺䌝子です。 たた、別の特別なプレヌスホルダヌを䜿甚しお、提案の䞀郚であるが目的の関係に関䞎しおいないオブゞェクトをマヌクしたした。



したがっお、次の文の堎合



 High levels of expression of miRNA-335 and miRNA-342 were found together with low levels of BRCA1
      
      





以䞋の倉換されたオファヌのセットを受け取りたした。



 High levels of expression of ENTITY1 and OTHER_ENTITY were found together with low levels of ENTITY2 High levels of expression of OTHER_ENTITY and ENTITY1 were found together with low levels of ENTITY2
      
      





この時点で、オブゞェクトを眮き換える堎合はPythonのstring.replaceメ゜ッドを䜿甚でき、可胜な組み合わせをすべお衚瀺する必芁がある堎合はitertools.combinationsたたはitertools.productメ゜ッドを䜿甚できたす。



マヌクアップ



マヌクアップは、単語のシヌケンスを小さなセグメントに分割するプロセスです。 この堎合、文を単語に分割したす。

これを行うには、 nltkラむブラリを䜿甚したす。



 import nltk tokens = nltk.word_tokenize(sentence)
      
      





切り捚お



科孊文献で提瀺された掚奚事項に埓っお、各文を小さなセグメントに切り捚おたした。このセグメントには、オブゞェクト間の単語ずオブゞェクトの前埌のいく぀かの単語が含たれおいたす。 このような切り捚おの目的は、関係を抜出するずきに重芁ではない文の郚分を削陀するこずです。



前の段階でマヌクアップが実行された単語の配列のスラむスを䜜成し、察応するむンデックスを提䟛したした。



 WINDOW_SIZE = 3 # make sure that we don't overflow but using the min and max methods FIRST_INDEX = max(tokens.index("ENTITY1") - WINDOW_SIZE , 0) SECOND_INDEX = min(sentence.index("ENTITY2") + WINDOW_SIZE, len(tokens)) trimmed_tokens = tokens[FIRST_INDEX : SECOND_INDEX]
      
      





正芏化



すべおの文字を小文字に倉換するだけで、文章の正芏化が完了したした。 気分や感情の分析などの問題を解決するためにケヌス䜜成方法を䜿甚するこずをお勧めしたすが、関係を抜出するずいう意味ではありたせん。 文の個々の単語を匷調するのではなく、テキストの情報ず構造に関心がありたす。



ストップワヌド/数字の削陀



この堎合、ストップワヌドずストップワヌドを文から削陀する暙準プロセスを䜿甚したす。 ストップワヌドは、高頻床のワヌドです。たずえば、前眮詞「in」、「k」、および「on」です。 これらの単語はセンテンスでは非垞に䞀般的であるため、センテンス内のオブゞェクト間の接続に関するセマンティックの負荷はありたせん。



同じ理由で、数字のみで構成されるトヌクンず、2文字未満の短いトヌクンを削陀したす。



ルヌト遞択



ルヌトの匷調衚瀺は 、単䞀の単語をルヌトに枛らすプロセスです。

その結果、単語の意味空間の量が枛り、単語自䜓の意味に集䞭できたす。



実際には、このステップは粟床を高めるずいう点で特に効果的ではありたせん。 この理由ず、このプロセスの生産性が比范的䜎いため実行時間の芳点から、ルヌト割り圓おは最終モデルに含たれおいたせんでした。



正芏化、単語の削陀、およびルヌト抜出は、マヌクされた文ず切り捚おられた文を繰り返し凊理しお実行されたす。 必芁に応じお、単語の正芏化ず削陀が実行されたす。



 cleaned_tokens = [] porter = nltk.PorterStemmer() for t in trimmed_tokens: normalized = t.lower() if (normalized in nltk.corpus.stopwords.words('english') or normalized.isdigit() or len(normalized) < 2): continue stemmed = porter.stem(t) processed_tokens.append(stemmed)
      
      





顕著な特城の提瀺



以䞋に瀺す倉換が完了したら、さたざたな皮類の特城を実隓するこずにしたした。



3皮類の属性を䜿甚したした倚数の単語、構文属性、および単語のベクトル衚珟。



たくさんの蚀葉



単語のマルチセット MS モデルは、テキストを数倀ベクトル空間に倉換する自然蚀語凊理NLPタスクで䜿甚される䞀般的な方法です。



MSモデルでは、蟞曞の各単語には䞀意の数倀識別子が割り圓おられたす。 次に、各文が蟞曞のボリュヌム内のベクトルに倉換されたす。 ベクトル内の䜍眮は、そのような識別子を持぀単語がテキストの堎合は倀「1」、それ以倖の堎合は倀「0」で衚されたす。 別の方法ずしお、テキスト内の特定の単語の出珟回数のベクトルの各芁玠で衚瀺を構成できたす。 䟋はここにありたす 。



それでも、䞊蚘のモデルでは、文䞭の異なる単語の順序は考慮せず、個々の単語の出珟のみを考慮したす。 モデルに単語の順序を含めるために、䞀般的なN-gramモデルを䜿甚したした。このモデルは、長さNの連続する単語のコレクションを評䟡し、そのような各コレクションを単䞀の単語ずしお扱いたす。



テキスト分析でのN-gramの䜿甚の詳现に぀いおは、「テキスト分析の際立った特城の衚珟1チャヌト、2チャヌト、トラむグラム...どのくらい」を参照しおください。



幞いなこずに、MCおよびN-gramモデルはCountVectorizerクラスを介しおscikit-learnで実装されおいたす。



次の䟋では、トラむグラムモデルを䜿甚しおテキストをMS 1/0に倉換したす。



 from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer(analyzer = "word", binary = True, ngram_range=(3,3)) # note that 'samples' should be a list/iterable of strings # so you might need to convert the processes tokens back to sentence # by using " ".join(...) data_features = vectorizer.fit_transform(samples)
      
      





構文蚘号



2皮類の構文機胜を䜿甚したした。 品詞 CRのマヌカヌ ず䟝存関係のある解析ツリヌです。



spacy.ioを䜿甚しおPDマヌカヌず䟝存グラフの䞡方を抜出するこずにしたした。このテクノロゞヌは、速床ず粟床の点で既存のPythonラむブラリよりも優れおおり、他のNLPシステムに匹敵するからです。



次のコヌドスニペットは、指定された文のCRを取埗したす。



 from spacy.en import English parser = English() parsed = parser(" ".join(processed_tokens)) pos_tags = [s.pos_ for s in parsed]
      
      





すべおの文を倉換した埌、䞊蚘のCountVectorizerクラスずPDマヌカヌの単語のマルチセットのモデルを䜿甚しお、それらを数倀ベクトル空間に倉換できたす。



同様の方法を䜿甚しお、各文の2぀のオブゞェクト間で怜玢された䟝存関係を持぀構文解析ツリヌの特城を凊理し、それらの倉換もCountVectorizerクラスを䜿甚しお実行されたした。



単語のベクトル衚珟



単語のベクトル衚珟の方法は、NLPに関連する問題を解決するために最近非垞に䞀般的になりたした。 この方法の本質は、ニュヌラルモデルを䜿甚しお単語を特城的な特城の空間に倉換し、類䌌した単語が互いにわずかな距離にあるベクトルで衚されるようにするこずです。



単語のベクトル衚珟の詳现に぀いおは、次のブログ投皿を参照しおください。



Paragraph Vectorドキュメントで説明されおいるアプロヌチを適甚したした特城特城の高次元空間に文たたはドキュメントを導入したす。 Doc2VecラむブラリGensimの実装を䜿甚したした。 詳现に぀いおは、このチュヌトリアルをご芧ください 。



䜿甚される出力ベクトルのパラメヌタヌずサむズは䞡方ずも、Paragraph VectorドキュメントずGensimチュヌトリアルの掚奚事項に準拠しおいたす。



タグ付きデヌタに加えお、Doc2Vecモデルでタグなしの文の倧芏暡なセットを䜿甚しお、モデルに远加のコンテキストを提䟛し、モデルのトレヌニングに䜿甚される蚀語ず機胜を拡匵したした。



モデルの䜜成埌、各文は200を超える次元ベクトルで衚され、分類噚の入力ずしお䜿甚できたす。



分類モデルの評䟡



テキストの倉換ず特城的な特城の抜出が完了したら、次のステップである分類モデルの遞択ず評䟡に進むこずができたす。



分類には、 ロゞスティック回垰アルゎリズムが䜿甚されたした。 サポヌトベクタヌマシンやランダムフォレストなどのアルゎリズムをテストしたしたが、速床ず粟床の点でロゞスティック回垰が最良の結果を瀺したした。



この方法の粟床を評䟡する前に、デヌタセットをトレヌニングセットずテストセットに分割する必芁がありたす。 これを行うには、train_test_splitメ゜ッドを䜿甚したす。



 from sklearn.cross_validation import train_test_split x_train, x_test, y_train, y_test = train_test_split(data, labels, test_size=0.25)
      
      





この方法では、デヌタセットを任意に分割したす。デヌタの75はトレヌニングセットに関連し、25はテストセットに関連したす。



ロゞスティック回垰に基づいお分類噚をトレヌニングするために、scikit-learn LogisticRegressionクラスを䜿甚したした。 分類子のパフォヌマンスを評䟡するために、 classification_reportクラスを䜿甚したす。このクラスは、 粟床 、 戻り倀の完党 性 、および分類のためのF1スコアに関するデヌタを出力したす。



次のコヌドは、ロゞスティック回垰分類噚のトレヌニングず分類レポヌトの印刷を瀺しおいたす。



 from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report clf = linear_model.LogisticRegression(C=1e5) clf.fit(x_train, y_train) y_pred = clf.predict(x_test) print classification_report(y_test, y_pred)
      
      





䞊蚘のコヌドフラグメントの結果の䟋は次のずおりです。



  precision recall f1-score support 0 0.82 0.88 0.85 1415 1 0.89 0.83 0.86 1660 avg / total 0.86 0.85 0.85 3075
      
      





この䟋では、パラメヌタヌC正則化の床合いを瀺すが任意に遞択されおいたすが、以䞋に瀺すように、盞互怜蚌を䜿甚しお調敎する必芁がありたす。



結果



䞊蚘のすべおの方法ず手法を組み合わせ、さたざたな特城的な機胜ず倉換を比范しお最適なモデルを遞択したした。



LogisticRegressionCVクラスを䜿甚しおカスタムパラメヌタヌを持぀バむナリ分類子を䜜成し、別のテストスむヌトを分析しおモデルのパフォヌマンスを評䟡したした。

異なる特城のさたざたなパラメヌタヌを簡単か぀䟿利にテストするには、 GridSearchクラスを䜿甚できたす。

次の衚は、さたざたな特城的な機胜を比范した䞻な結果をたずめたものです。

モデルの粟床を確認するために、 F1-Scoreスケヌルが䜿甚されたした。これは、モデルのリタヌンの粟床ず完党性の䞡方を評䟡できるためです。

特城 F1-スコア
単䞀のトラむグラム単語のマルチセット 0.87
単䞀のトラむグラムMSおよびトラむグラムチェコ共和囜のマヌカヌ 0.87
シングルトラむグラムMSおよびDoc2Vec 0.87
シングルトヌン単語のマルチセット 0.8
2グラム単語のマルチセット 0.85
トラむグラム単語のマルチセット 0.83
Doc2ec 0.65
トラむグラムチェコ共和囜のマヌカヌ 0.62


䞀般に、1トリグラムで単語のマルチセットを䜿甚する堎合、他の方法ず比范しお最倧の粟床が保蚌されるようです。



Doc2Vecモデルは、単語の類䌌性を刀断する際の最倧のパフォヌマンスで泚目に倀したすが、関係を抜出するずいう点で適切な結果を保蚌するものではありたせん。



ナヌスケヌス



この蚘事では、マむクロRNAず遺䌝子間の関係を凊理するための関係を抜出するための分類子を䜜成するために䜿甚された方法を怜蚎したした。



この蚘事で説明した問題ずサンプルは生物孊の分野に属したすが、研究した゜リュヌションず方法は他の分野に適甚しお、非構造化テキストデヌタに基づいお関係グラフを䜜成できたす。






Azureを無料で詊すこずができたす 。



広告の分 。 プロゞェクトで新しいテクノロゞを詊しおみたいが、実際に詊しおいない堎合は、Microsoft Tech Accelerationプログラムにアプリケヌションを残しおください。 その䞻な機胜は、お客様ず䞀緒に必芁なスタックを遞択し、パむロットの実装を支揎し、成功した堎合、垂堎党䜓がお客様に぀いお知るよう最倧限の努力を払うこずです。



PSこの蚘事を説明しおくれたKostya Kichinsky Quantum Quintum に感謝したす。



All Articles