Abstract:
Systems and methods for improving the efficiency of propagating electronic messages are provided. In some embodiments, a feed of activities on a network such as an online social network (OSN) is analyzed to determine influenced activity probabilities and intrinsic activity probabilities for participants in the network. A Helmhotz Green&#39;s Function matrix is determined in order to calculate an overall influence weight for each participant in the network. A Woodbury-Sherman-Morrison formula may be used to accelerate computation of the Helmholtz Green&#39;s Function matrix, thus allowing efficient updates to the overall influence weights based on newly monitored activities. The participants with the highest overall influence weights may be selected to propagate a new message, thus providing the greatest likely distribution of the message with the fewest originating transmissions.

Description:
[0001]    This application claims the benefit of Provisional Application No. 62/015,814, filed Jun. 23, 2014; Provisional Application No. 61/969,968, filed Mar. 25, 2014; and Provisional Application No. 61/927,389, filed Jan. 14, 2014, the entire disclosures of which are hereby incorporated by reference herein for all purposes. 
     
    
     BACKGROUND 
       [0002]    It is evident that computing devices, once connected by a network, are particularly useful for enabling communication between individuals. Various technologies have been introduced to facilitate the transmission of messages between networked computing devices and the users thereof. One such technology that is increasingly popular is the use of online social networks, or OSNs. In an OSN, users of networked computing devices participate in the OSN to transmit messages to and receive messages from other users in one-to-one and one-to-many formats. 
         [0003]    The ability to efficiently disseminate messages that is provided by online social networks is revolutionizing the way people communicate using networked computing devices. Influential participants are able to use online social networks to spread information with unprecedented speed and reach. However, with massive numbers of participants and massive amounts of data being generated by participant activity (the so-called Big Data problem), a particular technical problem arises in that it is difficult to automatically identify which participants are the influential participants who are able to efficiently spread messages within the online social networks, particularly with respect to messages relating to a given topic. 
         [0004]    The question of automatic identification of influential participants on OSNs has received widespread attention in the recent years. One technique promoted by many OSNs as a measure of the influence of a given participant is to count the number of followers he or she has accumulated (that is, the number of participants that will receive messages transmitted by the given participant). This metric has been shown to be inadequate, because participants who have a large number of followers are not necessarily influential in terms of spawning additional messages, such as retweets or mentions, by those followers. As such, participants who have a large number of followers who are unlikely to re-share messages may not have as much actual influence as participants who have fewer followers but who are more likely to re-share messages. 
         [0005]    Another technique considered for the identification of influential participants on OSNs is the PageRank algorithm. The PageRank algorithm has been used to address the general problem of identification of influential nodes on a network graph by relating the importance of a node to the stationary distribution of a random walk on the given network. The PageRank algorithm and its variants have thus been used to attempt to identify influential participants on OSNs, such as Twitter, based on the graph topology of the OSN. This technique is inferior, because the probability transition matrix of the PageRank technique depends entirely on the graph topology, while interaction activity is completely ignored. Further, the choice of a teleportation constant for use in PageRank may work well for determining relevance of webpages, but has no substantial basis when applied to OSNs. The same is true for ranking influential participants in an OSN based on a personalized PageRank. 
         [0006]    Another technique for finding influential participants of OSNs finds a minimal set of seed participants which, when activated, lead to the maximum number of activated participants on the network. However, such techniques are based on time-consuming Monte Carlo analysis, and therefore are unsuitable for finding influential participants of large, real-world OSNs. 
         [0007]    What is desired is an improvement in the ability of users to utilize networked computing device technology to broadly disseminate information via OSNs by identifying influential participants based on the actual activity interactions between participants for a given set of topics. 
       SUMMARY 
       [0008]    This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. 
         [0009]    In some embodiments, a system for efficiently transmitting an electronic message is provided. The system comprises a weight data store, at least one computing device configured to provide an influence calculation engine, and at least one computing device configured to provide an interface engine. The weight data store is configured to store information regarding interaction strengths between participants in an online social network (OSN). The influence calculation engine is configured to receive a feed representing activities between participants on the OSN; analyze the activities using a Helmholtz Green&#39;s Function (HGF) matrix (G) to determine overall influence weights that represent likelihoods that participants in the OSN will propagate messages; and store the determined overall influence weights in the weight data store. The interface engine is configured to receive a message to be propagated via the OSN; query the weight data store based on the determined weights to select one or more participants to propagate the message; and transmit the message to the selected one or more participants for propagation. 
         [0010]    In some embodiments, a method for efficiently distributing a message is provided. A feed is received representing activities between participants in a network. The activities are analyzed using a Helmholtz Green&#39;s Function (HGF) matrix (G) to determine overall influence weights that represent likelihoods that participants in the network will propagate messages, and the determined weights are stored in a weight data store. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0011]    The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein: 
           [0012]      FIG. 1  is a block diagram that illustrates an exemplary embodiment of a system for improving the propagation of electronic messages according to various aspects of the present disclosure; 
           [0013]      FIG. 2  is a flowchart that illustrates an exemplary embodiment of a method of improving message propagation in an online social network according to various aspects of the present disclosure; 
           [0014]      FIGS. 3A-3B  are a flowchart that illustrates an exemplary embodiment of a method of determining weights for participants in an online social network according to various aspects of the present disclosure; and 
           [0015]      FIG. 4  is a block diagram that illustrates aspects of an exemplary computing device appropriate for use with embodiments of the present disclosure. 
       
    
    
     DETAILED DESCRIPTION 
       [0016]    In the present disclosure, the challenge of identifying influential participants in order to improve the transmission of messages via large online social networks is formulated as one with sources of activity potential which are propagated locally through a probabilistic activity model that is similar to the Friedkin-Johnsen model of opinion change in social groups and scaled to significant parts of the online social networks through the graph connectivity. 
         [0017]    In many OSNs, participants organize themselves loosely in small groups compared to the overall number of participants. For example, the average number of followers on Twitter is about 208 while the average number of followees is about 102. Similarly, on Facebook, the average number of reciprocal relationships per participant with other participants is about 190. Participants in these small groups tend to influence each other, and to propagate this influence through the link structure of the OSN. 
         [0018]    Accordingly, in some embodiments of the present disclosure, the participant activity on an OSN is modeled as a sum of intrinsic activity and influenced activity, using a notion of “activity potential.” Activity potential is the total probability p A   T (t,ω) i  of participant i engaging in activity on a topic co on the OSN at time t. Further, p A   T (t, ω) i  is decomposed into intrinsic and influenced parts. The intrinsic activity potential p A   S  and the influenced activity potential p A   I  are weighted by the conditional probabilities of the given participant choosing to post on his or her own, and the conditional probability of the same participant choosing to be influenced by his or her connections, respectively. In a general case, these probabilities as a function of time t and topic co may be represented as: 
         [0000]        p   A   T ( t ,ω) i =(1−α ii )( p   A   I ( t ,ω))+α ii ( p   A   S ( t ,ω) i )
 
         [0019]    where α ii  is the probability of participant i choosing to post intrinsically. The probability of the influenced activity itself can be decomposed into the conditional probabilities of choosing to be influenced by each of the connections according to a set of weights, multiplied by the probability of the chosen connection engaging in that activity: 
         [0000]    
       
         
           
             
               
                 
                   p 
                   A 
                   T 
                 
                  
                 
                   ( 
                   
                     t 
                     , 
                     ω 
                   
                   ) 
                 
               
               i 
             
             = 
             
               
                 
                   ( 
                   
                     1 
                     - 
                     
                       α 
                       ii 
                     
                   
                   ) 
                 
                  
                 
                   ( 
                   
                     
                       ∑ 
                       
                         j 
                         -&gt; 
                         i 
                       
                     
                      
                     
                       
                         
                           w 
                           ij 
                         
                          
                         
                           ( 
                           
                             t 
                             , 
                             ω 
                           
                           ) 
                         
                       
                        
                       
                         
                           
                             p 
                             A 
                             T 
                           
                            
                           
                             ( 
                             
                               t 
                               , 
                               ω 
                             
                             ) 
                           
                         
                         j 
                       
                     
                   
                   ) 
                 
               
               + 
               
                 
                   α 
                   ii 
                 
                  
                 
                   ( 
                   
                     
                       
                         p 
                         A 
                         S 
                       
                        
                       
                         ( 
                         
                           t 
                           , 
                           ω 
                         
                         ) 
                       
                     
                     i 
                   
                   ) 
                 
               
             
           
         
       
     
         [0020]    While the above equations include references to a topic, at least some parts of the below discussion omit the terms related to the topic for notational convenience, and the probabilities are considered to be a constant in a given time interval, such as a time interval for which activity has been monitored. One of ordinary skill in the art will recognize, in view of the discussion below, how the techniques described herein can be used on a per-topic basis, and/or over a specific time interval. 
         [0021]    To extend the above equation to N participants of the OSN (which may encompass many of or even all of the participants of the OSN), it may be expressed in matrix form as: 
         [0000]        p   A   T =( I −α) Wp   A   T   +αp   A   S  
 
         [0022]    Here p A   T  represents the vector of total activity potential of all the N participants. I is an N×N identity matrix, W is a sparse weight matrix whose rows sum to 1, α is a diagonal matrix that represents lack of susceptibility to the interpersonal influence, and p A   S  represents a vector of intrinsic (or self) activity potentials. The weight matrix W and the diagonal matrix α may be determined by observing past activity on the OSN, such as past messages posted or sent by participants in the OSN. 
         [0023]    Accordingly, the above equation relates the overall activity potentials of the participants to the intrinsic activity potential, thereby casting this framework as a “driven problem” with sources being modeled by the self-potentials and the interaction through the network giving rise to the influenced potentials in a manner similar to the electromagnetic wave propagation in inhomogeneous media. Note that this is in direct contrast to the PageRank technique, which is essentially approached as an eigenvalue problem. 
         [0024]    The previous equation can be cast into the following form to relate the activity sources to the overall observed activity: 
         [0000]        p   A   T =((( I −( I −α) W ) −1 α) p   A   S  
 
         [0025]    By drawing analogies to the wave equation in electromagnetics, the operator ((I−(I−α)W) can be referred to as the Helmholtz operator. The matrix that relates the overall activity potential to the intrinsic activity potential may be referred to as the Helmholtz Green&#39;s Function (HGF) matrix G. The HGF matrix is then given by computing an inverse of the Helmholtz operator as follows: 
         [0000]        G=H   −1 =(( I −( I −α) W ) −1 )
 
         [0026]    One of ordinary skill in the art will note that because the Helmholtz operator is diagonally dominant and all the off-diagonal entries are non-positive, it is an M-matrix and its inverse has all positive entries. While matrices similar in form to the HGF matrix are known by different names in various disciplines and studied in the literature on random walks, it has not in the past been used as a representation of node-to-node influence between participants in an OSN. An element of the HGF matrix, namely G ij , represents a total activity potential of participant i realized by participant j alone engaging in activity with a probability of 1. Therefore, G, when multiplied by α, represents the overall activity-based participant-to-participant influence by taking into account all possible paths between all participants on the network. Thus, the overall influence of a given participant j is given by the sum of the j th  column of G multiplied by the corresponding intrinsic activity probability as: 
         [0000]    
       
         
           
             
               
                 I 
                 A 
               
                
               
                 ( 
                 j 
                 ) 
               
             
             = 
             
               
                 ( 
                 
                   
                     ∑ 
                     i 
                   
                    
                   
                     G 
                     ij 
                   
                 
                 ) 
               
                
               
                 α 
                 jj 
               
             
           
         
       
     
         [0027]    The influence metric represents the amplification in the overall activity potential on the entire network caused by participant j acting alone on the network. In some embodiments, this activity potential may be calculated in a topic-dependent manner. The term G jj  can be subtracted in the right side of the previous equation to remove the effect of self-influence. Further, the rows of the matrix G yield the proportion of the influence of various other participants on a given participant&#39;s overall activity potential. 
         [0028]      FIG. 1  is a block diagram that illustrates an exemplary embodiment of a system  100  for improving the propagation of electronic messages according to various aspects of the present disclosure. The system  100  includes a propagation improvement system  106  that comprises one or more computing devices configured to provide an activity monitoring engine  108 , an influence computation engine  110 , a propagation simulation engine  112 , and an interface engine  116 . 
         [0029]    In general, the term “engine” as used herein refers to logic embodied in hardware or software instructions, which can be written in a programming language, such as C, C++, Objective-C, COBOL, JAVA™, PHP, Perl, HTML, CSS, JavaScript, Ruby, VBScript, ASPX, Microsoft .NET™ languages such as C#, and/or the like. An engine may be compiled into executable programs or written in interpreted programming languages. Software engines may be callable from other engines or from themselves. Generally, the engines described herein refer to logical modules that can be merged with other engines or applications, or can be divided into sub-engines. The engines can be stored in any type of computer-readable medium or computer storage device and be stored on and executed by one or more general purpose computers, thus creating a special purpose computer configured to provide the engine. 
         [0030]    In some embodiments, the activity monitoring engine  108  receives a feed of activity occurring on an online social network from an online social network message source  102 . The online social network message source  102  may be the online social network itself, or may be a third party that provides information from the online social network. In some embodiments, the feed received by the activity monitoring engine  108  may include information regarding all of the activity occurring on the online social network, while in other embodiments, the feed may be limited to a statistically representative sample of activity occurring on the online social network, or a sample of activity that is limited by particular filtering criteria (such as language, geolocation, and/or the like). In some embodiments, the feed may include the entirety of messages transmitted on the online social network, such as tweets, posts, retweets, favorites, shares, comments, likes, connections, and/or the like. In some embodiments, the feed may be limited to only relevant portions of the messages (such as associated participant identities, message types, timestamps, hashtags, and/or the like) to reduce the amount of data to be received and processed by the activity monitoring engine  108 . 
         [0031]    In some embodiments, the influence computation engine  110  uses the activity information collected by the activity monitoring engine  108  to determine overall influence weights for participants on the online social network. One will note that the influence computation engine  110  analyzes messages actually sent via the online social network, as opposed to merely analyzing the graph topology as is done by techniques such as PageRank or follower counting. Further, because it is based on actual activity, the Green&#39;s function used by the influence computation engine  110  (as discussed further below) is a more comprehensive model than PageRank because it considers the activity-based influence from every participant to every other participant on the OSN by taking into account all direct and indirect paths of interaction. Further details of how the influence computation engine  110  determines overall influence weights for participants on the online social network are provided below. 
         [0032]    In some embodiments, the propagation simulation engine  112  is configured to use the overall influence weights determined by the influence computation engine  110  to predict how a given message will propagate through the online social network. In some embodiments, one or more participants are chosen based on the overall influence weights, and the propagation simulation engine  112  then determines how the message will be propagated by those one or more participants. In some embodiments, the propagation simulation engine  112  may perform the simulation computations itself, while in some embodiments, the propagation simulation engine  112  may assign simulation tasks to a cloud computing service  104  and analyze the results. Further details regarding the simulation of message propagation by the propagation simulation engine  112  are provided below. 
         [0033]    In some embodiments, the interface engine  116  is configured to generate a user interface that provides access to the functionality of the propagation improvement system  106  to end users. For example, in some embodiments, the interface engine  116  receives a new message from a message creation device  118 , and uses the overall influence weights to determine one or more participants in the online social network to most efficiently propagate the new message. Further details regarding the functionality of the interface engine  116  are provided below. 
         [0034]    In some embodiments, the propagation improvement system  106  also comprises a weight data store  114 . As understood by one of ordinary skill in the art, a “data store” as described herein may be any suitable device configured to store data for access by a computing device. In some embodiments, the data store may be a key-value store that represents data as a collection of key-value pairs, such that each key appears at most once in the collection and is usable to uniquely identify a value in the data store. Examples of key-value stores include Not Only SQL (NoSQL) data stores such as Dynamo data stores, the DynamoDB system provided by Amazon Web Services, Inc., and/or the like. These key-value stores are capable of distributed processing and therefore allow fast and reliable storage of data rows locatable by unique keys. Other examples of a data store include a highly reliable, high-speed relational database management system (DBMS) executing on one or more computing devices and accessible over a high-speed network. However, any other suitable storage technique and/or device capable of quickly and reliably providing the stored data in response to queries may be used, and the computing device may be accessible locally instead of over a network, or may be provided as a cloud-based service. A data store may also include data stored in an organized manner on a computer-readable storage medium, as described further below. One of ordinary skill in the art will recognize that separate data stores described herein may be combined into a single data store, and/or a single data store described herein may be separated into multiple data stores, without departing from the scope of the present disclosure. 
         [0035]    In some embodiments, the weight data store  114  is configured to store information received and/or generated by other components of the propagation improvement system  106 . For example, the weight data store  114  may store activities received by the activity monitoring engine  108  for later analysis. As another example, the weight data store  114  may store overall influence weights computed by the influence computation engine  110 . Further details regarding the information stored by the weight data store  114  are provided below. 
         [0036]      FIG. 2  is a flowchart that illustrates an exemplary embodiment of a method of improving message propagation in an online social network according to various aspects of the present disclosure. From a start block, the method  200  proceeds to block  202 , where an activity monitoring engine  108  of a propagation improvement system  106  receives a feed representing activity on an online social network (OSN). As discussed above, the feed may include the entirety of messages transmitted on the OSN, or may include a limited amount of information from the messages that is needed for the below analysis, such as a type of the message (tweet, retweet, post, comment, like, and/or the like), an identity of a transmitting participant, an identity of an influencing participant (such as the original author of a retweeted tweet, an author of a post being commented on, and/or the like), adequate message content for the derivation of a topic, and/or any other information discussed and utilized below. In some embodiments, the activity monitoring engine  108  may store the received activity information in the weight data store  114  as an intermediate step, while in other embodiments, the activity information may be provided directly to the influence computation engine  110  by the activity monitoring engine  108 . 
         [0037]    At block  204 , an influence computation engine  110  of the propagation improvement system  106  analyzes the activity to determine weights that represent likelihoods that participants in the OSN will propagate messages. In some embodiments, the influence computation engine  110  is also configured to determine topics for the activities as part of the weight determination, and to compute weights on a per-topic basis. The influence computation engine  110  is configured to use an HGF matrix to determine the overall influence weights, as discussed generally above, and in more detail below. 
         [0038]    Next, at block  206 , the influence computation engine  110  stores the determined weights in a weight data store  114 . Any suitable method for storing the determined weights in the weight data store  114  may be used. For example, in some embodiments, an HGF matrix G and an intrinsic activity α matrix may be stored themselves in the weight data store  114 , and overall influence weights for given participants may be computed from these matrices on demand. As another example, in some embodiments a vector of overall influence weights for each participant on the OSN may be stored in the weight data store  114 . As yet another example, a unique identifier may be created for each participant on the OSN, and the overall influence weight for each participant may be stored in the weight data store  114  in association with the unique identifier for the participant, such as in a key-value data store and/or the like. In some embodiments, the overall influence for each participant may be stored in the weight data store  114  in association with the topic being analyzed, in order to provide per-topic weights for future use. 
         [0039]    The method  200  then proceeds to block  208 , where an interface engine  116  of the propagation improvement system  106  receives a message to be distributed via the OSN. The interface engine  116  may receive the message via any suitable technique. For example, the message could be created by a user of the message creation device  118  within an interface provided by the interface engine  116 . As another example, the message could be created by an application executing on the message creation device  118 , and could be transmitted programmatically to the interface engine  116 . As yet another example, the message creation device  118  could create the message and send it to a third party (such as the OSN or another third party), which would then consult the interface engine  116  regarding which participants should initially distribute the message. 
         [0040]    At block  210 , the interface engine  116  queries the weight data store  114  to determine one or more participants to propagate the message. In some embodiments, the interface engine  116  may determine a topic of the message using techniques similar to those discussed below for topic determination. In some embodiments, the interface provided by the interface engine  116  may provide a list of topics for which overall influence weights have been determined, and one or more topics for the message could be chosen by a user of the message creation device  118 . Once a topic for the message has been determined, the interface engine  116  is configured to query the weight data store  114  for participants having a high overall influence weight associated with the determined topic. 
         [0041]    Once a proposed set of one or more participants is determined, the method  200  may proceed to an optional block  212 , where a propagation simulation engine  112  of the propagation improvement system  106  uses the weights stored in the weight data store  114  to simulate propagation performance for the determined participants. In some embodiments that use the optional block  212 , an agent-based OSN simulator may be used to conduct Monte Carlo simulations based on the weights stored in the weight data store  114 . The agent-based OSN simulator may model various nonlinearities embodied by the real-life OSN, such as differing rates of participant logins, the inability of synchronizing individual activity timelines to the same sampled times, paying attention to only the top k messages of a social feed after logging in, not responding to messages already responded to from another source, and threshold behaviors. An agent-based OSN simulator may use a parent stochastic process to simulate participant logins and parse social feeds, and a secondary stochastic process to simulate the transmission of messages. The messages may be generated as objects in main memory to help track the diffusion of the messages. In some embodiments, the simulation tasks may be decomposed and distributed to a cloud computing service  104  such as Google Exacycle and/or the like in order to take advantage of large-scale parallelism. 
         [0042]    In some embodiments, the result of the simulations, including but not limited to depictions of the breadth and pace of message transmission, are presented by the interface engine  116 . Accordingly, at optional decision block  214 , a determination is made regarding whether the simulated propagation performance is acceptable. In some embodiments, the determination may be made by the user of the message creation device  118  based on the simulation results presented by the interface engine  116 . In some embodiments, the determination may be made automatically by the interface engine  116  or the propagation simulation engine  112  based on predetermined propagation thresholds, or by a comparison of simulations of different sets of determined participants. If the results are determined to be acceptable, then the result of the determination at optional decision block  214  is YES, and the method  200  proceeds to block  216 . Otherwise, the result of the determination at optional decision block  214  is NO, and the method  200  returns to block  210  to determine a different set of one or more participants to propagate the message. 
         [0043]    The method  200  arrives at block  216  either upon the result of the determination at optional decision block  214  being YES, or by optional block  212  and optional decision block  214  being omitted. At block  216 , the interface engine  116  provides the message to the determined participants for propagation on the OSN. In some embodiments, the determined participants may receive the message via an affiliate program, an advertising publication relationship, and/or the like. In some embodiments, the message may be submitted to the OSN for association with the determined participants. For example, some OSNs may allow promoted messages may be targeted to the followers of specified participants. In such cases, the message may be submitted to the OSN as a promoted message to be targeted to followers of the determined participants. Regardless of the technique, the message will subsequently be transmitted by the OSN to the participants influenced by the determined participants. The method  200  then proceeds to an end block and terminates. 
         [0044]      FIGS. 3A-3B  are a flowchart that illustrates an exemplary embodiment of a method of determining weights for participants in an online social network (OSN), according to various aspects of the present disclosure. The method  300  is an example of a method suitable for determining the weights discussed above at block  204 . From a start block, the method  300  proceeds to block  302 , where an activity monitoring engine  108  receives a feed representing activities on an OSN over a past time interval of interest. 
         [0045]    At block  304 , the activity monitoring engine marks each of the activities with one or more topics. Any suitable method for topic determination may be used. For example, in some embodiments, semantic information included with the activity, such as hashtags, geographic locations, and/or the like, may be used as topics. In other embodiments, statistical analysis may be performed on the activities to automatically determine topics. For example, a modified form of Latent Semantic Analysis (LSA) may be used for topic modeling. The latent structure present in the usage of words can be utilized through the truncated Singular Value Decomposition (SVD) to extract the topics and build compact models of participant activity and weights in the social network scenario. An example application of LSA is as follows: 
         [0046]    Let Q represent a d×n term participant matrix constructed for a corpus with n participants and d terms. Q ij  denotes the number of times a term i occurs in the activity of participant j. The SVD of Q can be written as Q=XΣY T  where the first and last matrices represent singular vectors and the central matrix is a diagonal matrix of ordered singular values. By truncating the decomposition to the k (&lt;&lt;n) singular values it is possible to obtain a compressed version of Q, which still retains a significant representation of participant behavior. Thus, Q k =X k Σ k Y k   T . The columns of X k  denote the spectrum of k meta-topics while the columns of Y k   T  denote the coefficients for the activity of the n participants along these topics, and the values of the (ordered) singular values denote the energy in each of the topics for the given corpus. 
         [0047]    In some embodiments, once processed by the activity monitoring engine  118 , the activities may then be stored in a data store such as weight data store  114  for historical record, and/or so that they may be processed later in a batch by the influence computation engine  110 . In some embodiments, activities may be processed when received from the activity feed on the fly, and transmitted directly to the influence computation engine  110 . 
         [0048]    Next, the method  300  proceeds to a continuation terminal (“terminal A”), and then to a for loop  306 - 328  defined between a for loop start block  306  and a for loop end block  328  ( FIG. 3B ). In order to compute weights that are relevant to each topic, the for loop  306 - 328  is executed separately by the method  300  for each topic that was used to mark activities. In some embodiments, not every topic present in the corpus may be processed by the for loop  306 - 328 . However, each topic in such a subset of topics would still be processed separately from each other. 
         [0049]    From the for loop start block  306 , the method  300  proceeds to block  308 , where the influence computation engine determines whether each activity is either intrinsic or influenced, and if influenced, by which participant it was influenced. As one example, a regular tweet would be considered intrinsic activity, while a retweet, mention, or favorite would be considered influenced activity influenced by the author of the referenced tweet (or the mentioned participant). As another example, an isolated post may be considered intrinsic activity, while a second participant&#39;s post on a topic within a predetermined time period of having seen a post on the same topic from a first participant may be considered influenced activity. 
         [0050]    At block  310 , the influence computation engine  110  builds a weight matrix W based on the influenced activities, and at block  312 , the influence computation engine  110  builds a lack of susceptibility matrix α (also referred to as an intrinsic matrix α) based on the intrinsic activities. Both the weight matrix W and the intrinsic matrix α are obtained from past activity traces as: 
         [0000]    
       
         
           
             
               
                 α 
                 ii 
               
               = 
               
                 
                   SA 
                   i 
                 
                 
                   TA 
                   i 
                 
               
             
             ; 
             
               
                 TA 
                 i 
               
               = 
               
                 
                   SA 
                   i 
                 
                 + 
                 
                   IA 
                   i 
                 
               
             
           
         
       
     
         [0051]    In the above equation, TA i  is the total activity of the participant i, SA i  is the intrinsic activity of the participant i, and IA i  is the influenced activity of the participant i. An amount of activity may be measured as a number of actions, such as posts, tweets, replies, mentions, retweets, shares, likes, comments, and/or other suitable activities on the OSN. As stated above, the actions may be tagged as either intrinsic or influenced based on the type of activity. 
         [0052]    Various techniques may be used to determine the weights w ij  for influenced activity in the weight matrix W. In some embodiments, a proportion of each of the connections&#39; activities in the total influenced activity of the given participant may be considered in determining the weights for the participant i. However, such a simple technique may not provide adequate credit for connections who generate a small absolute amount of influenced activity but who have a high conversion rate to the influenced activity (that is, connections who may post rarely but whose rare posts are highly likely to be influential). Accordingly, in some embodiments, this factor is taken into account by computing weights from the activity conversion factor as: 
         [0000]    
       
         
           
             
               w 
               ij 
             
             = 
             
               
                 CF 
                 ij 
               
               
                 
                   ∑ 
                   
                     j 
                     -&gt; 
                     i 
                   
                 
                  
                 
                   CF 
                   
                     ij 
                      
                     
                         
                     
                   
                 
               
             
           
         
       
     
         [0053]    wherein CF ij  is a proportion of activities by the second participant j that influenced activities by the first participant i. 
         [0054]    Next, at block  314 , the influence computation engine  110  uses the weight matrix W and the intrinsic matrix α to determine a Helmholtz operator H. As discussed above, the Helmholtz operator H is determined using the formula ((I−(I−α)W). In order to determine the Helmholtz Green&#39;s function (HGF) matrix, the method  300  must then compute the inverse of the Helmholtz operator H. For real-world OSNs having tens of millions (if not hundreds of millions) of participants, the brute-force determination of the inverse of the Helmholtz operator H, which is of size N×N (where N is the number of participants), is too computationally intensive to be done in a practical amount of time, particularly if near-real time computation of weights is desirable. 
         [0055]    Accordingly, the method  300  uses techniques to simplify the calculation of the inverse. It has been determined that many real world networks such as OSNs organize themselves as aggregates of communities with strong intra-community connection density and weak inter-community connection density. This organization can be leveraged to simplify the computation of the HGF matrix G. Computation of the Helmholtz operator H involves simple operations on the weight matrix W. Hence, by leveraging a fast community detection routine such as the Louvain method, rearranging the nodes, and removing the edges connecting the communities, a set of disconnected communities can be formed. Accordingly, from block  314 , the method  300  proceeds to a continuation terminal (“terminal B”), and from terminal B ( FIG. 3B ) to block  316 , where the influence computation engine  110  detects communities within the Helmholtz operator, rearranges nodes, and removes edges connecting the communities to create a set of disconnected communities. The Helmholtz matrix H C  for the graph with k communities and the inter-community edges removed can then be written in block diagonal form as: 
         [0000]    
       
         
           
             
               H 
               c 
             
             = 
             
               [ 
               
                 ( 
                 
                   
                     
                       
                         H 
                         1 
                       
                     
                     
                       … 
                     
                     
                       0 
                     
                   
                   
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                   
                   
                     
                       0 
                     
                     
                       … 
                     
                     
                       
                         H 
                         k 
                       
                     
                   
                 
                 ) 
               
               ] 
             
           
         
       
     
         [0056]    The superscript C denotes the graph with the inter-community edges removed. The Helmholtz operators corresponding to the disconnected communities reside on the diagonal blocks, while the rest of the entries are zeroes. The HGF matrix G c  is therefore given by: 
         [0000]    
       
         
           
             
               G 
               c 
             
             = 
             
               
                 [ 
                 
                   ( 
                   
                     
                       
                         
                           H 
                           1 
                           
                             - 
                             1 
                           
                         
                       
                       
                         … 
                       
                       
                         0 
                       
                     
                     
                       
                         ⋮ 
                       
                       
                         ⋱ 
                       
                       
                         ⋮ 
                       
                     
                     
                       
                         0 
                       
                       
                         … 
                       
                       
                         
                           H 
                           k 
                           
                             - 
                             1 
                           
                         
                       
                     
                   
                   ) 
                 
                 ] 
               
               = 
               
                 [ 
                 
                   ( 
                   
                     
                       
                         
                           G 
                           1 
                         
                       
                       
                         … 
                       
                       
                         0 
                       
                     
                     
                       
                         ⋮ 
                       
                       
                         ⋱ 
                       
                       
                         ⋮ 
                       
                     
                     
                       
                         0 
                       
                       
                         … 
                       
                       
                         
                           G 
                           k 
                         
                       
                     
                   
                   ) 
                 
                 ] 
               
             
           
         
       
     
         [0057]    The H matrix for the overall graph is then expressed as the sum of the matrix and a very sparse perturbation which is the H matrix corresponding to the edges between the communities. Thus, the terms can be expressed as H=+ΔH, and ΔH can be written in the form of a low-rank update ΔH=UV T . At block  318 , the influence computation engine  110  determines such a low-rank update representing the changes to the Helmholtz operator H made by the removal of edges. If the total number of nodes in the graph is N, and r is the number of nodes affected by the perturbation represented by this equation, then U is a sparse matrix of size N×r containing the node-wise change in H, while V is a matrix of size N×r containing ones at the positions of the change while the rest of the elements of V are zero. 
         [0058]    Once this low-rank update is determined, the method proceeds to block  320 , where the influence computation engine  110  uses a Woodbury-Sherman-Morrison (WSM) formula to compute the inverse of the Helmholtz operator H using the disconnected communities and the low-rank update. The WSM formula used to compute the inverse of the Helmholz operator H from the above-described elements is as follows: 
         [0000]        G=H   −1   =H   C     −1   ( I−U ( I+VH   C     1     U ) −1   VH   C     −1   ) 
         [0059]    The method  300  then proceeds to block  322 , where the influence computation engine  110  stores the inverse of the Helmholtz operator H in the weight data store  114  as a Helmholtz Green&#39;s Function (HGF) matrix. At block  324 , the influence computation engine  110  uses the HGF matrix G and the intrinsic activity α matrix to determine an overall influence for each participant. As discussed above, the influence of a given participant j is given by the sum of the j th  column of G multiplied by the corresponding lack of susceptibility entry (α jj ). 
         [0060]    Next, at block  326 , where the influence computation engine  110  stores the overall influence for each participant in the weight data store  114 . As discussed above, any suitable means for storing the overall influence for each participant may be used. The method  300  then proceeds to the for loop end block  328 . If further topics remain to be processed, the method  300  returns to terminal A, and then to the for loop start block  306  to repeat the for loop  306 - 328  for the next topic. Otherwise, if no further topics remain to be processed, the method  300  proceeds to an end block and terminates. 
         [0061]    Though not illustrated, in some embodiments the activity monitoring engine  108  and the influence computation engine  110  may continue to dynamically update the overall influence values as new activities are received from the online social network message source  102 . The acceleration provided by computation of smaller inverses corresponding to the H matrices of the communities and then applying a low-rank update, instead of performing the brute force inversion of the entire H matrix at once, allows such computations to be performed repeatedly, and so for changes in the influence of the participants of the OSN to be quickly represented in the weight data store  114 . In the normal course of operation, once a method such as method  300  has been fully performed in order to compute the initial overall influence weights for each participant the low-rank update steps of the method  300  (that is, the actions starting with those described above in block  318 ) can be used to recomputed the changes to the HGF matrix and the overall influence weights of the participants without performing the earlier calculations described in the method  300 . 
         [0062]    The above discussion primarily describes the analysis of activity on OSNs such as Twitter, Facebook, and/or the like. However, one of ordinary skill in the art will recognize that similar techniques are applicable to any communication network where the nodes engage in activity that diffuses along the edges of the network. Some non-limiting examples of such a network are blogs that support TrackBack or other links such as WordPress and Movable Type; scholarly articles or other publications that reference each other; and/or the like. One of ordinary skill in the art will also recognize that while the above discussion primarily relates to nodes that represent users of computing devices that are participating in the OSN by creating and transmitting messages, in some embodiments, one or more nodes in the network may correspond to another source of user input, an autonomous computing device that does not receive user input or control before transmitting a message via the OSN, or combinations thereof. 
         [0063]    Further, one of ordinary skill in the art will recognize that while in some embodiments, a new message is transmitted via the same network from which the activity was monitored, in other embodiments the techniques described above may be used to determine influential participants by using the monitored OSN activity, but that the new message may then be transmitted to the influential participants via some other medium or technique and may be disseminated by the influential participants via some other medium or technique. For example, the techniques described above may be used to determine a journalist of particular influence based on OSN activity. Subsequently, information may be provided to the influential journalist via an email or telephone conversation with the intent that the influential journalist will spread the information via one or more media outlets available to the journalist. As another example, the techniques described above may be used to determine an influential participant who could subsequently be engaged as a spokesperson to disseminate a particular message. 
         [0064]    One of ordinary skill in the art will also recognize that the above techniques for determining influential participants may also be used to inhibit message propagation (as opposed to improving message propagation), in order to limit the dissemination of undesirable messages such as harmful rumors, harassment, sensitive information, and/or the like. Once overall influence weights are calculated and influential participants are determined for a given undesirable topic, activity from those influential participants can be partially or completely blocked in order to reduce the propagation of messages relating to the topic. For example, the party seeking to limit the spread of the undesirable messages can send one or more complaints to the proprietor of the OSN, and the OSN can then take action to either completely block or suspend the activity of the participants, or can probabilistically drop some percentage of messages from the participants to reduce the message spread while reducing a likelihood that the participants will realize that action has been taken. 
         [0065]      FIG. 4  is a block diagram that illustrates aspects of an exemplary computing device  400  appropriate for use with embodiments of the present disclosure. While  FIG. 4  is described with reference to a computing device that is implemented as a device on a network, the description below is applicable to servers, personal computers, mobile phones, smart phones, tablet computers, embedded computing devices, and other devices that may be used to implement portions of embodiments of the present disclosure. Moreover, those of ordinary skill in the art and others will recognize that the computing device  400  may be any one of any number of currently available or yet to be developed devices. 
         [0066]    In its most basic configuration, the computing device  400  includes at least one processor  402  and a system memory  404  connected by a communication bus  406 . Depending on the exact configuration and type of device, the system memory  404  may be volatile or nonvolatile memory, such as read only memory (“ROM”), random access memory (“RAM”), EEPROM, flash memory, or similar memory technology. Those of ordinary skill in the art and others will recognize that system memory  404  typically stores data and/or program modules that are immediately accessible to and/or currently being operated on by the processor  402 . In this regard, the processor  402  may serve as a computational center of the computing device  400  by supporting the execution of instructions. 
         [0067]    As further illustrated in  FIG. 4 , the computing device  400  may include a network interface  410  comprising one or more components for communicating with other devices over a network. Embodiments of the present disclosure may access basic services that utilize the network interface  410  to perform communications using common network protocols. The network interface  410  may also include a wireless network interface configured to communicate via one or more wireless communication protocols, such as WiFi, 2G, 3G, LTE, WiMAX, Bluetooth, and/or the like. 
         [0068]    In the exemplary embodiment depicted in  FIG. 4 , the computing device  400  also includes a storage medium  408 . However, services may be accessed using a computing device that does not include means for persisting data to a local storage medium. Therefore, the storage medium  408  depicted in  FIG. 4  is represented with a dashed line to indicate that the storage medium  408  is optional. In any event, the storage medium  408  may be volatile or nonvolatile, removable or nonremovable, implemented using any technology capable of storing information such as, but not limited to, a hard drive, solid state drive, CD ROM, DVD, or other disk storage, magnetic cassettes, magnetic tape, magnetic disk storage, and/or the like. 
         [0069]    As used herein, the term “computer-readable medium” includes volatile and non-volatile and removable and non-removable media implemented in any method or technology capable of storing information, such as computer readable instructions, data structures, program modules, or other data. In this regard, the system memory  404  and storage medium  408  depicted in  FIG. 4  are merely examples of computer-readable media. 
         [0070]    Suitable implementations of computing devices that include a processor  402 , system memory  404 , communication bus  406 , storage medium  408 , and network interface  410  are known and commercially available. For ease of illustration and because it is not important for an understanding of the claimed subject matter,  FIG. 4  does not show some of the typical components of many computing devices. In this regard, the computing device  400  may include input devices, such as a keyboard, keypad, mouse, microphone, touch input device, touch screen, tablet, and/or the like. Such input devices may be coupled to the computing device  400  by wired or wireless connections including RF, infrared, serial, parallel, Bluetooth, USB, or other suitable connections protocols using wireless or physical connections. Similarly, the computing device  400  may also include output devices such as a display, speakers, printer, etc. Since these devices are well known in the art, they are not illustrated or described further herein. 
         [0071]    As will be appreciated by one skilled in the art, the specific routines described above in the flowcharts may represent one or more of any number of processing strategies such as event-driven, interrupt-driven, multi-tasking, multi-threading, and the like. As such, various acts or functions illustrated may be performed in the sequence illustrated, in parallel, or in some cases omitted. Likewise, the order of processing is not necessarily required to achieve the features and advantages, but is provided for ease of illustration and description. Although not explicitly illustrated, one or more of the illustrated acts or functions may be repeatedly performed depending on the particular strategy being used. Further, these FIGURES may graphically represent code to be programmed into a computer-readable storage medium associated with a computing device. 
         [0072]    While illustrative embodiments have been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the present disclosure.